【问题标题】:How do I find out the reason I cannot send messages to my bot?如何找出无法向机器人发送消息的原因?
【发布时间】:2020-03-31 13:44:14
【问题描述】:

我已经设置了一个连接到我的机器人端点的机器人注册通道。它在 Bot Framework Emulator 中运行良好。

我在通过 Azure 门户上的“网络聊天测试”页面连接到我的机器人时遇到问题。我尝试发送消息,但没有任何反应,我在消息下方看到的只是“正在发送”。

然后我将转到刀片中的“频道”选项卡并查看网络聊天错误:There was an error sending this message to your bot: HTTP status code Unauthorized

当我尝试向 Microsoft Teams 中的机器人发送消息时,绝对没有任何反应。我什至没有收到错误。在 Azure 门户上的运行状况下,它只会显示“正在运行”。

不过,让我的机器人在网络聊天中工作并不是首要任务。我真的希望它最终能够在团队中工作。

【问题讨论】:

  • 您是否添加了 Microsoft App Id 和 Microsoft App Password?
  • 这是我对清单做的事情吗?
  • 您是否已将 Microsoft 应用 ID 和密码添加到机器人代码中(C# 中的 appsettings.json / JS 中的 .env)?当您创建 BCR 时,它会为您生成一个 AppId,但您需要生成一个新的 password,您需要将其添加到您的机器人代码中以便在其他 channels 上进行测试。
  • @ranusharao 好的,所以在我的 '.env' 文件中,我执行了以下操作:对于“MicrosoftAppId”,我输入了 Microsoft App ID。对于“MicrosoftAppPassword”,我输入了我创建的密钥(它将持续一年)。我这样做正确吗?我重新启动了我的机器人,但它仍然无法在 Teams 中运行...
  • 能否分享您的应用清单以便我们检查他的问题?

标签: azure botframework microsoft-teams azure-bot-service


【解决方案1】:

未调用机器人的主要原因是地址不正确(地址的某些部分的根位置,具体取决于您托管它的方式。例如,Azure 函数会自动添加一个额外的“/api” 在路径的早期),或者,正如您所发现的那样,AppId 和 AppPassword 没有被正确获取。

如果是后者,这听起来像这里,那么原则上这是一个简单的修复 - 您只需要确保您的 AppId 和 AppPassword (a) 在门户中是正确的,并且 (b) 在你的机器人配置。

问题出现在上面的 (b) 中 - 互联网上有一大堆不同的示例,来自 Microsoft 和其他公司,包括 C# 和 Node,他们使用大量不同的方式来实例化机器人并设置它是 AppId 和 AppPassword。例如,一些示例在内部使用“ConfigurationCredentialProvider”的实现,它将尝试从您的配置文件中提取 appid/apppassword,但当然希望它们位于一组专门命名的值中(参见 @987654321 @了解更多)。

那么,您是否可以检查您已实施机器人的方式,以查看凭据在何处/如何准确设置?

【讨论】:

  • Aaron,你运气好吗?
【解决方案2】:

想发表评论但没有足够的积分。授权有几个不同的原因。创建机器人注册时,有一个“仅允许来自该组织的帐户”的选项,这需要额外配置,因此如果您选择了此选项,请将其更改为任何帐户。

此外,您通常可以从服务器端获得更详细的错误消息(不会向遭受 403 攻击的用户透露)。在 Azure 门户中转到机器人的应用服务,然后转到左侧菜单底部附近的“应用服务日志”。启用“应用程序日志记录(文件系统)”(我也喜欢将级别设置为详细并启用“详细错误消息”)。现在转到左侧菜单中的“日志流”。它现在应该已连接。再次尝试访问机器人,看看日志流中有哪些消息。

如果您启用也可以提供帮助的 Application Insights

【讨论】:

  • 感谢您分享此内容。向我的机器人发送消息后,我发现弹出一些错误堆栈。我要看看它是否是我的任何代码的结果。这很奇怪,因为当我从 Bot Framework Emulator 向我的机器人发送消息时,这些错误都不会发生......
  • 好的,所以当我使用 Teams 和 Bot Framework Emulator 时,我在日志中看到了一些有趣的差异。当我尝试在 Bot Framework Emulator 中向我的机器人发送消息时,模拟器显示“机器人的 Microsoft 应用 ID 或 Microsoft 应用密码不正确”。和日志流说Unauthorized Access. Request is not authorized。当我尝试使用 Teams 时,它只会在日志流中显示 BotFrameworkAdapter.processActivity(): 500 ERROR - Error: Bad Request
  • 您需要确保您的 MicrosoftAppId 和 MicrosoftAppPassword 正确,它通常位于 appsettings.json 中(或旧机器人的 .bot 文件)。设置 Bot 注册可能很棘手,我放弃了手动操作,只是按照使用提供的 arm 部署模板的说明进行操作
  • 我在整个服务器上搜索了这两个文件,但找不到它们。您是在谈论.env 文件吗?如果是这样,我有确切的 MicrosoftAppId 和 MicrosoftAppPassword。然而,我还没有尝试过看看这些变量名是否正确(即拼写和大写)。他们目前是MicrosoftAppIdMicrosoftAppPassword。我很确定第一个变量名中的最后一个 d 应该是小写的。无论如何,我认为我需要联系 Microsoft 并直接获得支持。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-21
  • 2021-06-10
  • 2019-03-13
  • 1970-01-01
  • 2018-05-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多