连接Bot框架模拟器到dockerized Bot



我很难理解将Bot框架模拟器连接到Bot的过程,该过程在本地Docker容器内运行。

我在bot Framework Composer的帮助下创建了一个(NodeJS) bot。我可以用IDE启动bot,并通过bot框架模拟器成功地连接到它:
  1. 通过Bot Framework Composer启动聊天机器人
  2. 在聊天机器人框架模拟器中验证聊天机器人连接

接下来,我将应用程序放入Docker容器中,公开端口3978并再次在本地启动它。我可以成功地验证,容器正在运行

  1. 在CLI上验证正在运行的Docker容器

我还可以验证,bot应用程序正在容器中运行,并且可以通过调用端点localhost:3978/api/messages来访问。在我的浏览器中。

对我来说,似乎bot在Docker容器中运行,因为有一个语句,路由不存在(可以理解,因为没有实现GET api/messages)

  1. 检查bot是否在Docker容器内运行

然后,我在Bot框架模拟器中创建了一个新的端点配置,以连接到Docker容器中本地部署的Bot:

  1. 添加端点配置到dockerized聊天机器人

现在问题出现了:如果我打开端点连接,我收到一个500错误(连接被拒绝)。

  1. 验证Bot框架仿真器输出

有人知道这到底是怎么回事吗?

  • 使用"npm run dev"(= bot可在http://localhost:3978/api/messages找到)和
  • 使用Docker容器启动bot (= bot可在http://localhost:3978/api/messages获得)

我在GitHub上发现了以下问题,但这没有帮助:https://github.com/microsoft/BotFramework-Emulator/issues/356

似乎这里的用户比我更进一步,因为我的设置已经在连接时间失败,并且在GitHub问题中,用户有问题"发送"。向已连接的机器人发送消息。

提前感谢这里的任何指导!

这是一个老问题,但我有同样的问题。下面是我如何修复它,如果可以帮助别人:

在您的docker-compose.yml配置中,您需要将在您的容器中运行bot的端口公开给您的本地主机,以便bot框架模拟器可以与它通信

ports:
- "3978:3978"

然后你还需要让你的bot看到什么在本地主机上运行,以响应bot框架模拟器。下面的行允许您通过在容器内调用http(s)://host.docker.internal:(port)来连接到运行在http(s)://localhosthost:(port)上的东西。看到文档

extra_hosts:
- "host.docker.internal:host-gateway"

最后,在Bot框架模拟器设置中:

  • 勾选Bypass ngrok for local addresses
  • 设置本地主机覆盖为host.docker.internal

您应该能够连接到Open Bot

  • Bot URL:http://localhost:3978/api/messages
  • 留空

最新更新