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.
我创建了一个机器人应用程序,我已经成功地通过模拟器在本地进行了测试。
正在关注 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.