无法将基于 botkit 的机器人连接到 BotFramework 的网络聊天(401 错误)
unable to connect botkit-based bot to BotFramework's webchat (401 errors)
在将我本地托管的(基于 botkit 的)机器人成功连接到 Microsoft 的 Bot Framework Emulator(使用本地主机地址作为消息传递端点)后,我现在正在尝试将它连接到框架的网络聊天(使用 ngrok 的主机名)对于我的本地机器人)。但是,当网络聊天尝试连接时,我收到 'unauthorized'。关于我的机器人的更多信息:
- bot 通过 botkit 自己的 Botkit Framework Adapter 与 Bot Framework 集成(详见 https://github.com/howdyai/botkit/blob/main/packages/docs/core.md#using-bot-framework-channels)
*该机器人在本地托管(开发版本,这是我正在尝试测试的版本),并通过 ngrok 公开。其生产版本将托管在 AWS 上。
这是我到目前为止尝试过的方法:
- 使用 https://docs.microsoft.com/en-us/azure/bot-service/bot-service-channel-connect-webchat?view=azure-bot-service-4.0 中描述的方法 #1 和 #2 使用带有提供的网络聊天密码的 iframe 和令牌(通过 POSTMAN 单独获得)嵌入网络聊天。
- 在同一网页中使用方法 #3 的修改,我在其中获取了一个 Direct Line 令牌(通过 POSTMAN),然后尝试在其中提供的 html 中使用它。
- 我也在 Azure 控制台中尝试过 'Test in Web Chat'。
在所有这些情况下,我的机器人自己的日志都显示相同的内容:
“在转弯处理程序中遇到错误 Error: BotFrameworkAdapter.processActivity(): 401 ERROR
错误:未经授权。令牌上传递的 AppId 无效:blah"。
最后一个案例的浏览器控制台显示与网站嵌入不同的结果如下:
- (网站嵌入),我在浏览器的控制台中看到了 502,我认为鉴于机器人的 401 响应(如其他来源所解释的),我认为这是预期的。
- (在 Web Chat 中测试'),除了 502 之外,我在浏览器 Web 控制台中看到了几个 other 错误。其中一个错误让我觉得也许 'Test in Web Chat' 实际上不支持非 Azure 托管机器人(MsPortalFx/Base/Base.Net Base.Net:安全问题:请求将身份验证令牌发送到不受信任的域 'myngrokhostname.scm.azurewebsites.net'。只有一组固定的域应该配置为接收身份验证令牌)。
所以这是我的直接问题:
- 'Test in web chat' 功能是否需要 Azure 托管的机器人?
- 考虑到我在配置网络聊天频道时没有指定自己的 appId 和密码(因为它是自动配置的),我怎么会收到错误提示,指出使用了错误的 appId? (注意:appId 和密码是 bot 适配器配置的一部分,如我之前分享的 link 中所述;这是我输入它们的唯一位置,它们是直接从 AzureBot 配置控制台复制的)
除了上述问题,您对我的环境中可能 wrong/missing 有什么其他建议吗?
顺便说一句,到目前为止,我相信我已经阅读了所有在使用网络聊天时提到 'unauthorized' 错误的类似 post,其中 none 到目前为止已经有所帮助,包括第一个中引用的那些下面提供的评论。作为记录,这里是我也读过的 posts(评论中未提及):
- Getting a 403 while connecting local bot to local WebChat client (works with Emulator though)
(注意:最后 post 中的评论建议我应该研究离线直达线以使其正常工作;我可能会尝试这个,尽管我不明白为什么需要它)。
任何进一步的帮助将不胜感激。
• 我建议您查看下面的 Github 社区论坛,了解有关转弯处理程序和“BotFrameworkAdapter.processActivity():401 错误”的问题的详细信息,他们在其中声明他们试图通过本地机器人通过两种类型进行连接:-
- 通过输入URL、appID/password
- 到 select 由欢迎部分“我的机器人”表单中的机器人文件定义的机器人。
以上两种连接,第一种总是失败,第二种总是成功。因此,根据他们的说法,他们建议下载最新版本的模拟器。
https://github.com/microsoft/BotFramework-Emulator/issues/1417
希望对您有所帮助,敬请参考。就“网络聊天测试”功能而言,它确实需要一个 Azure 托管机器人,因为在本地设备上运行的 Bot Framework Emulator 在其运行时配置中嵌入了 Azure Bot 服务端点 link执行模拟器,我们必须输入要连接的 Azure Bot 服务的 AppID 和密码。
https://docs.microsoft.com/en-us/composer/test/test-bots-in-web-chat
在花了很多时间调试这个问题后,结果证明这是 botkit 控制器创建代码中的一个简单拼写错误。它没有使用 'adapterConfig' 将机器人的适配器设置为 built-in 机器人框架适配器,而是使用 'adapter_config'。这破坏了与 bot 框架的集成,因为没有传递任何应用程序 ID 或密码。感谢 Microsoft 支持提供故障排除帮助。
在将我本地托管的(基于 botkit 的)机器人成功连接到 Microsoft 的 Bot Framework Emulator(使用本地主机地址作为消息传递端点)后,我现在正在尝试将它连接到框架的网络聊天(使用 ngrok 的主机名)对于我的本地机器人)。但是,当网络聊天尝试连接时,我收到 'unauthorized'。关于我的机器人的更多信息:
- bot 通过 botkit 自己的 Botkit Framework Adapter 与 Bot Framework 集成(详见 https://github.com/howdyai/botkit/blob/main/packages/docs/core.md#using-bot-framework-channels) *该机器人在本地托管(开发版本,这是我正在尝试测试的版本),并通过 ngrok 公开。其生产版本将托管在 AWS 上。
这是我到目前为止尝试过的方法:
- 使用 https://docs.microsoft.com/en-us/azure/bot-service/bot-service-channel-connect-webchat?view=azure-bot-service-4.0 中描述的方法 #1 和 #2 使用带有提供的网络聊天密码的 iframe 和令牌(通过 POSTMAN 单独获得)嵌入网络聊天。
- 在同一网页中使用方法 #3 的修改,我在其中获取了一个 Direct Line 令牌(通过 POSTMAN),然后尝试在其中提供的 html 中使用它。
- 我也在 Azure 控制台中尝试过 'Test in Web Chat'。
在所有这些情况下,我的机器人自己的日志都显示相同的内容: “在转弯处理程序中遇到错误 Error: BotFrameworkAdapter.processActivity(): 401 ERROR 错误:未经授权。令牌上传递的 AppId 无效:blah"。
最后一个案例的浏览器控制台显示与网站嵌入不同的结果如下:
- (网站嵌入),我在浏览器的控制台中看到了 502,我认为鉴于机器人的 401 响应(如其他来源所解释的),我认为这是预期的。
- (在 Web Chat 中测试'),除了 502 之外,我在浏览器 Web 控制台中看到了几个 other 错误。其中一个错误让我觉得也许 'Test in Web Chat' 实际上不支持非 Azure 托管机器人(MsPortalFx/Base/Base.Net Base.Net:安全问题:请求将身份验证令牌发送到不受信任的域 'myngrokhostname.scm.azurewebsites.net'。只有一组固定的域应该配置为接收身份验证令牌)。
所以这是我的直接问题:
- 'Test in web chat' 功能是否需要 Azure 托管的机器人?
- 考虑到我在配置网络聊天频道时没有指定自己的 appId 和密码(因为它是自动配置的),我怎么会收到错误提示,指出使用了错误的 appId? (注意:appId 和密码是 bot 适配器配置的一部分,如我之前分享的 link 中所述;这是我输入它们的唯一位置,它们是直接从 AzureBot 配置控制台复制的)
除了上述问题,您对我的环境中可能 wrong/missing 有什么其他建议吗? 顺便说一句,到目前为止,我相信我已经阅读了所有在使用网络聊天时提到 'unauthorized' 错误的类似 post,其中 none 到目前为止已经有所帮助,包括第一个中引用的那些下面提供的评论。作为记录,这里是我也读过的 posts(评论中未提及):
- Getting a 403 while connecting local bot to local WebChat client (works with Emulator though) (注意:最后 post 中的评论建议我应该研究离线直达线以使其正常工作;我可能会尝试这个,尽管我不明白为什么需要它)。 任何进一步的帮助将不胜感激。
• 我建议您查看下面的 Github 社区论坛,了解有关转弯处理程序和“BotFrameworkAdapter.processActivity():401 错误”的问题的详细信息,他们在其中声明他们试图通过本地机器人通过两种类型进行连接:-
- 通过输入URL、appID/password
- 到 select 由欢迎部分“我的机器人”表单中的机器人文件定义的机器人。
以上两种连接,第一种总是失败,第二种总是成功。因此,根据他们的说法,他们建议下载最新版本的模拟器。
https://github.com/microsoft/BotFramework-Emulator/issues/1417
希望对您有所帮助,敬请参考。就“网络聊天测试”功能而言,它确实需要一个 Azure 托管机器人,因为在本地设备上运行的 Bot Framework Emulator 在其运行时配置中嵌入了 Azure Bot 服务端点 link执行模拟器,我们必须输入要连接的 Azure Bot 服务的 AppID 和密码。
https://docs.microsoft.com/en-us/composer/test/test-bots-in-web-chat
在花了很多时间调试这个问题后,结果证明这是 botkit 控制器创建代码中的一个简单拼写错误。它没有使用 'adapterConfig' 将机器人的适配器设置为 built-in 机器人框架适配器,而是使用 'adapter_config'。这破坏了与 bot 框架的集成,因为没有传递任何应用程序 ID 或密码。感谢 Microsoft 支持提供故障排除帮助。