我们有一个使用 MS bot 框架的 bot 本地(不是 azure)部署。目前该服务在三台机器上运行,都服务于单个 api 端点。当我们只在一台机器上运行服务时,一切正常。但是,如果我们在所有三个上运行它,对话上下文可能会丢失。例如,这是我们的流程:用户说他们想做 x机器人与正确的 LUIS 意图匹配,并要求提供更多信息用户提供必要的信息(IP 地址)Bot 运行一种方法来查找他们想要的信息并将其返回给他们。我们通过 context.Wait() 来做到这一点。如果我们让服务在多台机器上运行,有时会发生这种情况:机器 A 处理步骤 1 和 2机器 B 上的控制器获得用户在步骤 3 中提供的答案,并且我假设因为它没有机器 A 所拥有的对话上下文,它会将文本发送到 LUIS,而不是调用应该调用的方法。LUIS 没有与 IP 匹配的意图,因此发生错误。当服务在多台机器上运行时,处理维护对话上下文的最佳方法是什么?上下文。前进?和/或其他想法?谢谢!
2 回答

慕田峪4524236
TA贡献1875条经验 获得超5个赞
解决这个问题的方法是使用非内存状态存储。感谢 Eric Dahlvang 指出这一点。我以为就是这样,但后来认为它一定不是,因为它有时与处理对话的多台机器一起工作,有时与内存状态存储无关。仍然不清楚为什么它有时会起作用而不是其他的。(如前所述,一个复杂的问题是我无法在表现出行为的环境中进行调试,因此我依靠日志记录来查看发生了什么。我正在查看的日志记录可能具有误导性。我想不出它怎么可能具有误导性,但这是可能的,这是一种可能的解释。)

潇湘沐
TA贡献1816条经验 获得超6个赞
有点奇怪的问题。LUIS 的运行方式是它首先检查 Intent,然后为该 Intent 找出相关实体,从而为我们提供预测以提供响应。无论您在 localhost 中运行什么服务,您都必须记住关键语言处理器在 azure cloud 中运行。SDK 只是实现。这样它可以简化聊天界面(在您的情况下是机器人模拟器)和 LUIS 应用程序服务(MS 认知服务)之间的通信。不过,我仍然不清楚您提到的这种架构。
- 2 回答
- 0 关注
- 200 浏览
添加回答
举报
0/150
提交
取消