我很难理解将 Bot Framework Emulator 连接到在本地 Docker 容器中运行的机器人的过程。
我在 Bot Framework Composer 的帮助下创建了一个 (NodeJS) 机器人。我可以使用 IDE 启动机器人并通过 Bot Framework Emulator 成功连接到它:
接下来,我将应用程序放入 Docker 容器中,暴露端口 3978 并再次在本地启动它。我可以成功验证容器正在运行
我还可以验证机器人应用程序是否在容器中运行,并且可以通过在浏览器中调用端点 localhost:3978/api/messages 来访问。
对我来说,机器人似乎在 Docker 容器中运行,因为有一个声明,路由不存在(可以理解,因为 GET api/messages 未实现)
然后,我在 Bot Framework Emulator 中创建了一个新的端点配置,以连接到 Docker 容器中本地部署的机器人:
现在出现问题:如果我打开端点连接,我会收到 500 错误(连接被拒绝)。
有人知道这里到底发生了什么吗?
有什么区别:
我在 GitHub 上发现了以下问题,但这没有帮助: https://github.com/microsoft/BotFramework-Emulator/issues/356
这里的用户似乎比我更进一步,因为我的设置在连接期间已经失败,并且在 GitHub 问题中,用户在向已连接的机器人“发送”消息时遇到了问题。
在此先感谢您的指导!
这是一个老问题,但我也遇到了同样的问题。这是我修复它的方法(如果可以帮助某人):
在您的
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
有什么帮助我。
Docker Compose 设置
端口:
额外主机:
为了测试,我使用 Bot Framework Emulator