python - 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
知道为什么会发生这种情况吗?
解决方案
端口号只能与localhost
. 当您将机器人发布到具有域名和所有内容的远程服务器时,您应该省略端口号,以便它可以使用默认端口。
推荐阅读
- docker - 在 Docker for Windows 上运行的带有 kafka 映像的 Kafka 工具连接问题
- linux - 如何在保持虚拟地址映射的同时返回物理页面?
- netlogo - 如何使用 Face 引导海龟向锥体移动
- kerberos - 向导中断时如何为 ambari 重新安装 Kerberos 客户端?
- azure - “添加或修改 blob 时(仅限属性)”的逻辑应用 Azure 权限问题
- c - 如果我在全局内存中有一个结构对象,我需要 malloc 吗?如果该结构具有结构作为属性,我是否必须 malloc 那些?
- codeigniter-3 - 单击codeigniter中的其他页面时css和js文件路径更改
- javascript - 如何在 React 中根据屏幕大小将信息(链接)推送到“...”中显示更多弹出框
- c# - 从导致问题的各种脚本中引用
- node.js - Electron / Mongoose / MongoDB Cast 错误:“错误:有效负载验证失败:video_buffer:Cast to Buffer 值“Uint8Array..”