繁体   English   中英

Bot Framework 门户 - “测试与您的机器人的连接”401 未经授权

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

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

https://docs.botframework.com/en-us/csharp/builder/sdkreference/gettingstarted.html之后,我将机器人应用程序发布到 Azure。 (创建为http://mybotappname.azurewebsites.net

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

http s ://mybotappname.azurewebsites.net /api/messages

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

但是,当我尝试“测试与您的机器人的连接”时,我看到的只是一条消息

“未经授权”

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

我尝试运行 Bot Framework Channel Emulator,将 Bot Url 设置为与我的 Bot 为 Messaging 端点设置的 URL 相同的 URL。 这也给了我一条“401 Unauthorized”消息,但我不知道如何/在哪里调试原因。

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

谢谢

想通了:

在 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 中

稍后在模拟器部分,它特别告诉您在本地运行时不要将 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"
  },

在上面,您需要更新文件appsettings.Development.json而不是appsettings.json 中MicrosoftAppIdMicrosoftAppPassword

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM