Bot Channels Registration - 向您的 bot 发送此消息时出错:HTTP 状态代码未经授权

Bot Channels Registration - There was an error sending this message to your bot: HTTP status code Unauthorized

我正在构建一个将与 Teams 或 Slack 集成的聊天机器人。首先,我使用 echo bot 模板,但我将其添加到我的 Service Fabric 集群中现有的 API。

当 运行 在本地应用程序时,我可以从 Bot Emulator 很好地连接到它,但是当我将它部署到我的 Azure 频道注册并在网络聊天中测试它时,我得到:

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.");
                };
            });

我已经添加了一个团队频道,那里没有发生错误,但是消息永远不会到达服务器。

该服务是可访问的,控制器允许未经授权的凭据,而这正在测试中。

解决了我自己的问题。 事实证明,如果您使用的是自签名证书,则可能会发生这种情况,根据发现的 Microsoft 文档 here -

如果聊天中指出一个或多个错误 window,请单击错误以获取详细信息。常见问题包括:

  • 模拟器设置为机器人指定了错误的端点。确保在 URL 中包含正确的端口号,并在 URL 末尾包含正确的路径(例如,/api/messages)。
  • 模拟器设置指定了一个以 https 开头的机器人端点。在本地主机上,端点应以 http.
  • 开头
  • 在模拟器设置中,Microsoft App ID 字段 and/or Microsoft App Password 不包含有效值。应填充这两个字段,并且每个字段应包含您在第 2 步中验证的相应值。
  • 尚未为机器人启用安全性。确认机器人配置设置指定了应用 ID 和密码的值。

经验教训

  • 阅读文档

  • 当你感到沮丧时,静下心来阅读文档