首页 > 解决方案 > Microsoft Teams 在部署到谷歌云时向 aiohttp botframework 服务器发送错误请求

问题描述

我正在使用 botframework 为微软团队开发一个机器人。使用 negrok 提供的公共 IP 地址(例如 forwarding https://7669460caeba.ngrok.io -> http://localhost:3978)时,一切都在本地运行良好。我总是将机器人配置文件( https://dev.botframework.com )中的“消息传递端点”更改为指向https://7669460caeba.ngrok.io/api/messages

然后,在为我的 https 域制作 SSL 证书(该域被重定向到谷歌云实例的公共 IP 地址)后,在谷歌云的防火墙设置中允许 3978 端口,我将机器人部署到谷歌云。此外,我将机器人配置文件中的“消息传递端点”更改为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

知道为什么会发生这种情况吗?

标签: pythongoogle-cloud-platformbotframeworkmicrosoft-teams

解决方案


端口号只能与localhost. 当您将机器人发布到具有域名和所有内容的远程服务器时,您应该省略端口号,以便它可以使用默认端口。


推荐阅读