我正在使用 botframework 为微软团队开发一个机器人。当使用 negrok 提供的公共 IP 地址时,本地一切工作正常(例如转发
https://7669460caeba.ngrok.io -> http://localhost:3978
)。我总是将机器人配置文件 (https://dev.botframework.com) 中的“消息传递端点”更改为指向 https://7669460caeba.ngrok.io/api/messages
然后,为我的 https 域制作 SSL 证书(该域被重定向到 Google Cloud 实例的公共 IP 地址),在 Google Cloud 的防火墙设置中允许 3978 端口,我将机器人部署到 Google Cloud。另外,我将机器人配置文件中的“消息传递端点”更改为
https://myhttpsdomain.com:3978/api/messages
。
但是,当我从 Microsoft Teams 服务器接收请求时,我开始收到 400 错误代码(错误请求)。显然,aiohttp 服务器无法解码来自 Microsoft Teams 的传入请求,抛出:
Traceback (most recent call last):
File "/.../venv/lib/python3.8/site-packages/aiohttp/web_protocol.py", line 276, in data_received
messages, upgraded, tail = self._request_parser.feed_data(data)
File "aiohttp/_http_parser.pyx", line 523, in aiohttp._http_parser.HttpParser.feed_data
aiohttp.http_exceptions.BadStatusLine: invalid HTTP method
知道为什么会发生这种情况吗?
端口号只能与
localhost
一起使用。当您将机器人发布到具有域名和所有内容的远程服务器时,您应该省略端口号,以便它可以使用默认端口。
“HTTPNotFound”错误表明传入请求与您应用程序中定义的任何路由都不匹配。当 Microsoft Teams 指定的端点与“api/messages”路由不匹配时,可能会发生这种情况。
它对我有用,我在我创建的Azure服务机器人(我的机器人)机器人上更改了消息端点,
错误 网址:
已解决
机器人消息端点的更改