【问题标题】:Retrieve Teams User ID based on AAD ID根据 AAD ID 检索 Teams 用户 ID
【发布时间】:2020-08-21 05:47:42
【问题描述】:

我正在尝试开始预定的主动对话(机器人在预定时间发起对话)。 我设法根据 Graph API 获取用户的 AAD ID,但它与 Teams 用户 ID 不匹配。尝试了 2 个多小时才能获得正确的 id,但我无法弄清楚如何。我应该采取的最佳方法是什么?

【问题讨论】:

    标签: azure botframework bots microsoft-teams azure-ad-graph-api


    【解决方案1】:

    我很好奇您是如何尝试“匹配”这些的?无论如何,我认为它们不打算以任何方式匹配(aadObjectId Guid 和“29:...”用户 ID)。因此,您应该将映射存储在您的身边(数据库或类似的)。无论如何,您都需要存储 ServiceUrl 和 ConversationId 来进行主动消息传递,因此只需添加用户 ID。

    【讨论】:

    • 所以你的意思是,如果没有存储 ConversationId,就不可能开始对话......举个例子。只能通过电子邮件?
    • 不,你绝对不能 100% 以这种方式发起。这有点痛苦,但可以理解,因为否则你可以创建“垃圾邮件”机器人,可以这么说。用户必须至少一次物理连接(即安装)机器人。此外,请注意,您可以使用 Graph 将应用安装到团队中(请参阅docs.microsoft.com/en-us/graph/api/…),但不能以编程方式将其安装给用户
    • @HiltonGiesenow,您可以像阅读 here 一样以编程方式将应用程序安装给用户。
    • 啊,傻瓜,我 - 以为 - 我见过这样的操作,但忘记检查“beta”端点 - 谢谢 Mick!
    【解决方案2】:

    查看get the chat thread ID 的 Microsoft Graph api。

    为用户安装应用后,机器人将收到一个 conversationUpdate 事件,其中包含发送主动消息所需的信息。有关详细信息,请参阅机器人事件。

    如果chatThreadId丢失了,可以通过调用重新找回:

    GET /users/{user-id}/chats?$filter=installedApps/any(a:a/teamsApp/id eq '{teamsAppid}')
    

    但是,这仅适用于个人范围!我的建议是确保您捕获安装后触发的conversationUpdate,并将用户详细信息保存在数据库中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-21
      • 1970-01-01
      • 2014-07-21
      • 2016-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多