我在 Microsoft Copilot studio 中创建了一个主题,该主题向外部服务发出经过身份验证的 HTTP 请求。
身份验证是该流程中的第一步,我可以从我配置的 OAuth 提供程序检索有效的访问令牌。
当我使用在 copilot studio 中获得的访问令牌在邮递员中发出请求时,我能够成功调用该服务并查看响应。
我遇到的问题是,如果我尝试将响应分配给变量(以在稍后的提示中使用),则 copilot 会失败并显示“SystemError”。请求不会失败(因为它不会触发错误)除非我尝试将响应分配给变量。
我刚刚在调试时将变量类型设置为
any
,并且仅当我分配变量时,它才会与 SystemError 一致失败。
我检查了浏览器中的堆栈跟踪并注意到了这一点:
我用谷歌搜索了这个错误,发现了一个可能完全不相关的github问题,这表明这可能与压缩有关。
当我在 cURL 中发出请求时,它会返回二进制数据,除非我使用
--compressed
标志,所以也许那里有什么东西?
tl;博士 - 微软错误
我已经解决了这个问题。
我正在通信的服务器是:
accept-encoding
如何(无赖)content-encoding
的正确 gzip
标头Microsoft Copilot 未能遵守响应中的
content-encoding
标头。
我通过启动带有隧道的本地服务器来确定这一点,该隧道充当我的目标服务器的代理,但我的本地服务器没有压缩其响应,并且 copilot 能够与此本地代理服务器通信并保存并显示响应,而无需有问题。