我正在构建一个将与 Teams 或 Slack 集成的聊天机器人。首先,我使用 echo bot 模板,但我将其添加到 Service Fabric 集群中现有的 API 中。
在本地运行应用程序时,我可以从 Bot 模拟器正常连接到它,但是当我将其部署到我的 Azure channel 注册并在网络聊天中测试它时,我得到:
There was an error sending this message to your bot: HTTP status code Unauthorized.
我正在设置 AppID 和密码,它们会被保存并从 KeyVault 中检索,如果其中一个值为空(情况并非如此),我会在启动时抛出异常。
我设置如下:
services.AddBot<EchoBot>(options =>
{
options.CredentialProvider = new SimpleCredentialProvider(Configuration["MicrosoftAppId"], Configuration["MicrosoftAppPassword"]);
options.OnTurnError = async (context, exception) =>
{
ServiceEventSource.Current.Message(exception.Message);
await context.SendActivityAsync("Sorry, it looks like something went wrong.");
};
});
我添加了一个团队 channel ,其中不会发生错误,但消息从未到达服务器。
该服务可访问,并且在测试期间 Controller 允许未经授权的凭据。
最佳答案
解决了我自己的问题。 事实证明,如果您使用自签名证书,则可能会发生这种情况,根据 Microsoft 文档发现 here -
如果聊天窗口中显示一个或多个错误,请单击错误以了解详细信息。常见问题包括:
- 模拟器设置为机器人指定了错误的端点。确保在 URL 中包含正确的端口号,并在 URL 末尾包含正确的路径(例如/api/messages)。
- 模拟器设置指定以 https 开头的机器人端点。在本地主机上,端点应以 http 开头。
- 在模拟器设置中,Microsoft 应用程序 ID 字段和/或 Microsoft 应用程序密码不包含有效值。两个字段均应填写,并且每个字段均应包含您在第 2 步中验证的相应值。
- 尚未为机器人启用安全性。验证机器人配置设置是否指定了应用 ID 和密码的值。
经验教训
阅读文档
当您感到沮丧时,冷静下来并阅读文档
关于botframework - 机器人 channel 注册 - 将此消息发送到您的机器人时出错 : HTTP status code Unauthorized,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60603620/