c# - bot 框架/LUIS - 服务在多台机器上运行时会话上下文丢失
问题描述
我们有一个使用 MS bot 框架的 bot 本地(不是 azure)部署。目前该服务在三台机器上运行,都服务于单个 api 端点。当我们只在一台机器上运行服务时,一切正常。但是,如果我们在所有三个上运行它,对话上下文可能会丢失。例如,这是我们的流程:
- 用户说他们想做 x
- 机器人与正确的 LUIS 意图匹配,并要求提供更多信息
- 用户提供必要的信息(IP 地址)
- Bot 运行一种方法来查找他们想要的信息并将其返回给他们。我们通过 context.Wait() 来做到这一点。
如果我们让服务在多台机器上运行,有时会发生这种情况:
- 机器 A 处理步骤 1 和 2
- 机器 B 上的控制器获得用户在步骤 3 中提供的答案,并且我假设因为它没有机器 A 所拥有的对话上下文,它会将文本发送到 LUIS,而不是调用应该调用的方法。LUIS 没有与 IP 匹配的意图,因此发生错误。
当服务在多台机器上运行时,处理维护对话上下文的最佳方法是什么?上下文。前进?和/或其他想法?
谢谢!
解决方案
有点奇怪的问题。LUIS 的运行方式是它首先检查 Intent,然后为该 Intent 找出相关实体,从而为我们提供预测以提供响应。无论您在 localhost 中运行什么服务,您都必须记住关键语言处理器在 azure cloud 中运行。SDK 只是实现。这样它可以简化聊天界面(在您的情况下是机器人模拟器)和 LUIS 应用程序服务(MS 认知服务)之间的通信。不过,我仍然不清楚您提到的这种架构。
推荐阅读
- jenkins - 如何在所有 jenkins 项目中获取/访问 HTTP 代理配置?
- node.js - 为什么 n 抛出错误?错误:需要 sudo(或更改所有权,或定义 N_PREFIX)
- javascript - 如何在 NodeJS 中查找中英文字符?
- genexus - 交易规则重新排序——这是个好主意吗?
- amazon-s3 - 为 Vertica 备份添加自定义 S3 端点
- javascript - 如果使用全屏 api,visibilitychange 会被多次调用
- windows - 如何使用 windows 自带的 telnet 服务器服务来监听端口?
- spring - 为什么 centos 会重启我的服务(spring boot、nginx)?
- python - 在类的其他地方调用 __init__ 中编写的函数
- mysql - 更新具有导致死锁的索引的列