使用有效的应用程序注册,v4 BotFramework SDK未经授权返回



我一直在Azure支持聊天中与Kyle H.合作,他建议我在这里发布这篇文章。

请理解,因为我已经阅读了所有相关的Stack Overflow帖子,并进行了尽职调查。

我已经多次完全删除并重新启动我的Azure资源和源代码。使用本指南:https://learn.microsoft.com/en-us/azure/bot-service/bot-builder-howto-deploy-azure?view=azure-bot-service-4.0

机器人程序项目正在使用v4模板"Echo"。

在Azure门户中,在Web聊天中测试:"There was an error sending this message to your bot: HTTP status code Forbidden"

在配置ngrok的Bot Emulator中:Cannot post activity. Unauthorized.

以下说明如下:https://learn.microsoft.com/en-us/azure/bot-service/bot-service-troubleshoot-authentication-problems?view=azure-bot-service-4.0#第二步

我运行了:curl -k -X POST https://login.microsoftonline.com/botframework.com/oauth2/v2.0/token -d "grant_type=client_credentials&client_id=b7404e9f-0e74-4174-aa4f-447fdd96d7f0&client_secret=REMOVED&scope=https%3A%2F%2Fapi.botframework.com%2F.default",并返回了一个有效的访问令牌。

我已经多次确认,我的应用程序注册使用的是https,以及/api/messages路由,并且我的应用服务有两个密钥MicrosoftAppIdMicrosoftAppPassword,它们设置得很合适。包括停止和启动以及重新启动功能。我还确保在部署期间(VS 2017发布),它会删除现有文件。

我最后一次尝试是将模板"Echo"bot升级到.net core 2.2,并成功部署。我再次验证了如上所述设置的应用程序id和应用程序密码,不幸的是,Bot Emulator和Test in Web Chat都失败了,并出现了相同的错误。

编辑1:我使用了"创建新资源"并选择了"Web App Bot"模板。我选择了"Echo"机器人。我也选择了"自动生成应用程序ID和密码"。这导致机器人程序部署没有授权错误。然而,我注意到它没有创建"Bot频道注册"资源,而是创建了一个"Web应用程序Bot"。当检查"应用程序设置"时,应用程序ID和密码不存在,但它的功能很好。

编辑2:我进行了更深入的研究,了解到在azure中创建的"Web应用程序Bot"使用了botFilePath和botFileSecret应用程序设置,并可能将应用程序id和应用程序密码保留在那里。

编辑3:创建新项目时在visual studio中使用的v4 BotBuilder EchoBot模板与创建新资源时在Azure中使用的EchoBot模版之间存在巨大差异。现在把它缩小。

编辑4:我能够使用Azure创建的网络机器人并对其进行修改以继续我的工作。即使在确保应用程序配置和.bot文件配置正确的情况下,使用Vsix模板也是不可能的。

编辑5:我还了解到v4不支持Microsoft Teams,这就是我努力的全部目的。v3文档几乎不存在。因此,我认为我将使用一个完全不同的框架来与Teams集成。我甚至试图实现:https://github.com/OfficeDev/BotBuilder-MicrosoftTeams-dotnet但我的机器人在Teams中只响应"Sorry, there was a problem encountered with your request"

编辑6:在解决未经授权的错误的过程中,我设法让我的机器人与Microsoft Teams一起运行。

我在Azure中创建了Echo机器人,并使用Microsoft Teams中的App Studio添加了一个清单,并将机器人添加到我们的团队中。

之后,我导入了位于此处的项目:https://github.com/OfficeDev/BotBuilder-MicrosoftTeams-dotnet/tree/master/CSharp/Samples/Microsoft.Bot.Builder.Teams.TeamEchoBot

然后,我根据在Azure中创建Echo Bot的源代码,修改了setup.cs以使用加密的.bot文件。

VSIX模板将生成使用.bot文件作为appId/secret的Startup代码,并且在部署到Azure时,将寻找一个名为"production"的端点,您必须将其添加到默认的.bot文件中,并从您提供的bot中获得appId和secret。

要了解更多详细信息,请查看我之前对此主题的回答。

如果你正在努力部署你的机器人,我建议你看看本指南。这些步骤将引导您在Azure上创建一个机器人程序,然后您可以下载源代码,开发您的机器人程序,并重新部署它。

很高兴我能帮忙!

最新更新