Bot Framework 门户 - "Test connection to your bot" 401 未经授权

Bot Framework portal - "Test connection to your bot" 401 Unauthorized

我创建了一个机器人应用程序,我已经成功地通过模拟器在本地进行了测试。

正在关注 https://docs.botframework.com/en-us/csharp/builder/sdkreference/gettingstarted.html I published the Bot Application to Azure. (which is created as http://mybotappname.azurewebsites.net)

然后我转到 https://dev.botframework.com 的 Microsoft Bot Framework 门户并注册了机器人,并确保将消息传递端点设置为

https://mybotappname.azurewebsites.net /api/messages

注册成功后,我更新了web.config中的MicrosoftAppId和MicrosoftAppPassword键。

但是,当我尝试 "Test connection to your bot" 时,我只看到一条消息说

"Unauthorized"

如何调试这是从哪里来的?

我已经尝试 运行 Bot Framework Channel Emulator,将 Bot Url 设置为与我的 Bot 为消息端点设置的相同 url。这也给了我一个“401 Unauthorized”消息,但我无法找出 how/where 来调试原因。

有没有人经历过这个或者知道我可以做些什么来调试?

谢谢

想通了:

在web.config中,默认的appSetting键是

<add key="AppId" value="ID" />
<add key="AppSecret" value="SECRET" />

并且在文档中,我们设置:

<add key="MicrosoftAppId" value = "ID" />
<add key="MicrosoftAppPassword" value = "SECRET" />

我的问题不是将这些 appSetting 键更新为 MicrosoftAppId 和 MicrosoftAppPassword。一旦我这样做了,它就奏效了。

入门指南在这方面有点误导。在第 5 步中,它会告诉您:

Bot Framework注册页面的AppId和AppPassword必须记录在项目的web.config

稍后在 Emulator 部分中,它特别告诉您在 运行 本地时不要将 appid 或密码放入模拟器工具中的框中。这部分不正确,如果您的 web.config 文件中有值,那么您必须将相同的值放入模拟器中。您可以在模拟器中将这些值留空,但您还需要将它们从 web.config 文件中删除。

此页面对解决身份验证问题非常有帮助: https://docs.botframework.com/en-us/support/troubleshooting-bot-framework-authentication/

我在尝试访问部署在 Azure 中的机器人时也遇到了这个错误“错误:未经授权。传递给令牌的 AppId 无效”。解决方案是转到机器人注册>访问控制>我将自己添加为机器人的所有者。它开始在模拟器中为我工作。我给了 http://localhost:port 并且没有在模拟器中提供 MicrosoftAppId 和 MicrosoftAppPassword 并且我能够在本地调试机器人。

只是为其他人(可能还有我未来的自己)添加,不要忘记检查您正在使用哪个 appsettings.json 文件。

Properties/launchSettings.json中,设置ASPNETCORE_ENVIRONMENT定义了你是哪个版本使用。

例如,

"environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  },

在上面,你需要更新文件MicrosoftAppId & MicrosoftAppPassword appsettings.Development.json 而不是 appsettings.json.