为了账号安全,请及时绑定邮箱和手机立即绑定

bot 框架/LUIS - 服务在多台机器上运行时会话上下文丢失

bot 框架/LUIS - 服务在多台机器上运行时会话上下文丢失

C#
摇曳的蔷薇 2022-01-09 16:17:21
我们有一个使用 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 指出这一点。我以为就是这样,但后来认为它一定不是,因为它有时与处理对话的多台机器一起工作,有时与内存状态存储无关。仍然不清楚为什么它有时会起作用而不是其他的。(如前所述,一个复杂的问题是我无法在表现出行为的环境中进行调试,因此我依靠日志记录来查看发生了什么。我正在查看的日志记录可能具有误导性。我想不出它怎么可能具有误导性,但这是可能的,这是一种可能的解释。)


查看完整回答
反对 回复 2022-01-09
?
潇湘沐

TA贡献1816条经验 获得超6个赞

有点奇怪的问题。LUIS 的运行方式是它首先检查 Intent,然后为该 Intent 找出相关实体,从而为我们提供预测以提供响应。无论您在 localhost 中运行什么服务,您都必须记住关键语言处理器在 azure cloud 中运行。SDK 只是实现。这样它可以简化聊天界面(在您的情况下是机器人模拟器)和 LUIS 应用程序服务(MS 认知服务)之间的通信。不过,我仍然不清楚您提到的这种架构。


查看完整回答
反对 回复 2022-01-09
  • 2 回答
  • 0 关注
  • 200 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号