将 Bot Framework 模拟器连接到 Docker 化的机器人

问题描述 投票:0回答:2

我很难理解将 Bot Framework Emulator 连接到在本地 Docker 容器中运行的机器人的过程。

我在 Bot Framework Composer 的帮助下创建了一个 (NodeJS) 机器人。我可以使用 IDE 启动机器人并通过 Bot Framework Emulator 成功连接到它:

  1. Start chatbot via Bot Framework Composer
  2. Verify chatbot connect in Bot Framework Emulator

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

  1. Verify running Docker Container on CLI

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

对我来说,机器人似乎在 Docker 容器中运行,因为有一个声明,路由不存在(可以理解,因为 GET api/messages 未实现)

  1. Verify if bot is running within the Docker container

然后,我在 Bot Framework Emulator 中创建了一个新的端点配置,以连接到 Docker 容器中本地部署的机器人:

  1. Add endpoint configuration to dockerized chatbot

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

  1. Verify Bot Framework emulator output

有人知道这里到底发生了什么吗?

有什么区别:

  • 使用“npm run dev”启动机器人(= 机器人可在http://localhost:3978/api/messages获取)并且
  • 使用 Docker 容器启动机器人(= 机器人可在 http://localhost:3978/api/messages 获取)

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

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

在此先感谢您的指导!

botframework bot-framework-composer botframeworkemulator
2个回答
2
投票

这是一个老问题,但我也遇到了同样的问题。这是我修复它的方法(如果可以帮助某人):

在您的

docker-compose.yml
配置中,您需要将容器内运行机器人的端口暴露给本地主机,以便 Bot Framework Emulator 可以与其通信

ports:
      - "3978:3978"

然后您还需要让您的机器人查看本地主机上正在运行的内容,以响应机器人框架模拟器。下面的行允许您通过从容器内调用

http(s)://localhosthost:(port)
连接到在
http(s)://host.docker.internal:(port)
上运行的事物。 参见文档

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

最后,在您的 Bot Framework Emulator 设置中:

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

然后您应该能够连接到

Open Bot

  • 机器人网址:
    http://localhost:3978/api/messages
  • 将其他内容留空
  • 连接

0
投票

有什么帮助我。

Docker Compose 设置

端口:

  • '3334:80'

额外主机:

  • “本地主机:主机网关”

为了测试,我使用 Bot Framework Emulator

© www.soinside.com 2019 - 2024. All rights reserved.