botframework - 机器人 channel 注册 - 将此消息发送到您的机器人时出错 : HTTP status code Unauthorized

标签 botframework asp.net-core-webapi azure-service-fabric

我正在构建一个将与 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/

相关文章:

c# - 如何将 ILogger 传递给我的过滤器

c# - VS2017 .NetCore 2.0 API - 无法加载文件或程序集 Microsoft.AspNetCore.Hosting.Abstractions

botframework - Microsoft/BotFramework-WebChat 是否具有先睹为快功能?

css - 编辑 Microsoft ChatBot UI 设计

c# - 使用 Direct Line v3.0 NuGet 包向我的机器人发送消息

asp.net-core-webapi - HTTP 错误 500.19 - 内部服务器错误代码 0x8007000d

multithreading - 在 Azure Service Fabric actor 内启动线程?

.net-core - .net 核心 API 中的混合身份验证

c# - 访问 Azure Service Fabric 有状态服务状态

c# - 机器人框架禁用用户输入框