![](/img/trans.png)
[英]Bot Framework Composer Skill Host Endpoint 401 Unauthorized
[英]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 中的MicrosoftAppId和MicrosoftAppPassword 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.