在 Microsoft bot Framework 中跨渠道对用户进行身份验证

Authenticate user across channels in Microsoft bot Framework

我想构建一个可以在多个渠道(如 Skype、Teams、SMS 等)上使用的机器人。为此,我正在使用 BotBuilder SDK。我想通过这些渠道对用户进行身份验证。在不要求他通过网页登录的情况下,我该怎么做?由于我已经登录应用程序(比如 Skype),我如何根据上下文获取电子邮件地址或号码并隐式验证?

如果我选择使用 OAuth 执行此操作,我会要求用户在每次对话时都登录,我认为这是不正确的方法

快速回答:

每个渠道都是特定的,它们不提供获取用户信息的唯一方式。

您不会拥有跨渠道的通用信息,例如电子邮件地址或 ID,因此您将不得不构建一些东西来做您想做的事情(可能询问用户是唯一的方法...)。


详情

关于您在某些频道中获得的内容的更多详细信息:

  • Facebook 信使: "from": { "id": "1613014XXXXXXXXX", "name": "My Facebook Name" }

ID 是一个 PSID,用于页面范围 ID。它不是您在用户配置文件的 URL 中拥有的用户 ID,它特定于托管您的 bot

的 Facebook 页面
  • 松弛: "from": { "id": "U54xxxxxx:T53xxxxxx", "name": "nicolas" }

ID 由 Slack 的用户 ID 和 Slack 的团队 ID 串联而成。该名称是我的 Slack 的用户名

  • Skype: "from": { "id": "29:1DwlGVzj.....", "name": "My Skype Name" }

此 ID 特定于您的机器人,它是一个散列,但生成方式未知(非开源)

  • Skype 商务版: "from": { "id": "nicolas-r@myCompany.com", "name": "My SkypeForBusiness Name" }

这里更简单...

  • 微软团队: "from": { "id": "29:1ar5DN....", "name": "Nicolas R" }

这里类似于我们在 Skype 上找到的,ID 是特定于您的 bot 的唯一 ID,它是一个哈希,但它的生成方式未知(未开源)

  • Twilio 短信: "from": { "id": "+33600000000", "name": "+33600000000" }

ID为用户的phone号

==> 如您所见,要获得独特的东西需要做很多工作