通过使用Microsoft Bot Framework将Cortana作为通道添加到我的机器人来获取错误

问题描述 投票:0回答:2

Cortana尝试验证我的Bot时出错

我正在尝试使用MS Bot Framework和Azure Bot服务将Cortana连接到我的QnA Bot。

当我在调用Invocation Phrase时在Windows 10桌面上进行测试 - Cortana尝试对我进行身份验证,但却给出了以下错误。请让我知道我做错了什么?

Error Image

Cortana Settings

c# botframework cortana
2个回答
1
投票

我最近实施了Cortana技能,并且在进行身份验证方面遇到了一些挑战。但是,我发现您的配置存在一些问题:

  • User.Read.All需要管理员同意。这真的是你想要的,还是你在寻找User.ReadBasic.All。根据您的设置,这将阻止身份验证。有关详细信息,请参阅Microsoft Graph documentation
  • 在客户端授权方案下的Cortana通道配置中,请确保在请求正文中选择了凭据。我无法从您的屏幕截图中看到这一点,但我相信值得检查一下。

此外,以下是我的最佳实践,应该使您的方案工作:

  • 不要使用机器人的服务主体(应用程序注册)进行Cortana身份验证。
  • 而是在您的租户上创建专用的应用程序注册(例如,品牌名称为您的Bot for Cortana)并在您的Cortana通道配置(appId /客户端密钥)上配置此应用程序注册
  • 确保您不仅可以在机器人的Cortana通道配置上配置您需要的范围,还可以配置您的应用程序注册(转到AAD - 应用程序注册(预览) - API权限)。请记住,Cortana通道配置上的范围可以是应用程序注册中配置的范围的子集。这就是我为您的机器人和Cortana推荐专用应用程序注册的原因之一。
  • 确保Cortana通道配置上的范围顺序是openid offline_access配置文件User.Read User.ReadBasic.All(由于某种原因,订单很重要 - 至少在我的经验中)。

0
投票

如果你遵循这个指导......

希望你了解范围。如果没有,请提交github评论以澄清。

需要User.Read来访问AAD IAM的配置文件。除非您针对MS图形进行配置文件调用,否则您不需要它。

如果您只是登录AAD IAM,则需要openid范围。

如果您希望返回JWT令牌中的电子邮件地址,则添加电子邮件范围。

如果您需要JWT令牌中的用户配置文件数据(名称),则可以添加配置文件范围。

如果您希望Cortana为您处理刷新令牌(即不每两小时重新登录一次),则添加offline_access范围。

添加应用注册时,您需要将所有这些范围授予Web应用并添加cortana的重定向URI。如上所述,某些范围需要管理员授予(如果您使用的是AAD帐户)。

您的cortana通道配置必须(确切地)请求这些范围。

那么你就不会得到权限错误。

您可以通过解码来查看已授予JWT令牌的范围。

© www.soinside.com 2019 - 2024. All rights reserved.