首页 > 解决方案 > bot 框架/LUIS - 服务在多台机器上运行时会话上下文丢失

问题描述

我们有一个使用 MS bot 框架的 bot 本地(不是 azure)部署。目前该服务在三台机器上运行,都服务于单个 api 端点。当我们只在一台机器上运行服务时,一切正常。但是,如果我们在所有三个上运行它,对话上下文可能会丢失。例如,这是我们的流程:

  1. 用户说他们想做 x
  2. 机器人与正确的 LUIS 意图匹配,并要求提供更多信息
  3. 用户提供必要的信息(IP 地址)
  4. Bot 运行一种方法来查找他们想要的信息并将其返回给他们。我们通过 context.Wait() 来做到这一点。

如果我们让服务在多台机器上运行,有时会发生这种情况:

  1. 机器 A 处理步骤 1 和 2
  2. 机器 B 上的控制器获得用户在步骤 3 中提供的答案,并且我假设因为它没有机器 A 所拥有的对话上下文,它会将文本发送到 LUIS,而不是调用应该调用的方法。LUIS 没有与 IP 匹配的意图,因此发生错误。

当服务在多台机器上运行时,处理维护对话上下文的最佳方法是什么?上下文。前进?和/或其他想法?

谢谢!

标签: c#.netbotframeworkbotsazure-language-understanding

解决方案


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


推荐阅读