【发布时间】:2020-08-21 05:47:42
【问题描述】:
我正在尝试开始预定的主动对话(机器人在预定时间发起对话)。 我设法根据 Graph API 获取用户的 AAD ID,但它与 Teams 用户 ID 不匹配。尝试了 2 个多小时才能获得正确的 id,但我无法弄清楚如何。我应该采取的最佳方法是什么?
【问题讨论】:
标签: azure botframework bots microsoft-teams azure-ad-graph-api
我正在尝试开始预定的主动对话(机器人在预定时间发起对话)。 我设法根据 Graph API 获取用户的 AAD ID,但它与 Teams 用户 ID 不匹配。尝试了 2 个多小时才能获得正确的 id,但我无法弄清楚如何。我应该采取的最佳方法是什么?
【问题讨论】:
标签: azure botframework bots microsoft-teams azure-ad-graph-api
我很好奇您是如何尝试“匹配”这些的?无论如何,我认为它们不打算以任何方式匹配(aadObjectId Guid 和“29:...”用户 ID)。因此,您应该将映射存储在您的身边(数据库或类似的)。无论如何,您都需要存储 ServiceUrl 和 ConversationId 来进行主动消息传递,因此只需添加用户 ID。
【讨论】:
查看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,并将用户详细信息保存在数据库中。
【讨论】: