部署到谷歌云时,Microsoft Teams 向 aiohttp botframework 服务器发送错误请求

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

我正在使用 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

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

python google-cloud-platform botframework microsoft-teams
2个回答
0
投票

端口号只能与

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


0
投票

“HTTPNotFound”错误表明传入请求与您应用程序中定义的任何路由都不匹配。当 Microsoft Teams 指定的端点与“api/messages”路由不匹配时,可能会发生这种情况。

它对我有用,我在我创建的Azure服务机器人(我的机器人)机器人上更改了消息端点,

错误 网址:

https://good-mackerel-hugely.ngrok-free.app

已解决

https://good-mackerel-hugely.ngrok-free.app/api/messages

机器人消息端点的更改

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