【问题标题】:Get unencrypted Teams chat ID from personal chat in message extension从消息扩展中的个人聊天中获取未加密的 Teams 聊天 ID
【发布时间】:2021-03-10 00:36:29
【问题描述】:

是否可以从消息扩展中以未加密格式检索个人/一对一聊天(两个用户之间,而不是用户和机器人之间)的 ID,以便它可以与 Graph API 一起使用?

我很确定我已经知道了答案,因为为什么要首先对其进行加密?问题是,这确实不一致,因为您可以检索群聊的普通聊天 ID,甚至可以检索频道的普通 ID。

在这方面对TeamsInfoBotFrameworkAdapter 的所有调用都以Error: The bot is not part of the conversation roster 失败。我认为它们仅在机器人参与对话时才起作用(这对于个人聊天是不可能的)。

这样我的消息扩展程序无法在个人聊天中工作,这对用户来说没有意义。有人知道解决方法吗?

我在获取频道(请参阅here)的团队 ID(特别是团队的 AAD 组 ID)时遇到了同样的问题,我通过从 Graph API 获取用户的所有团队/频道和根据频道 ID 进行匹配。但是,我无法为个人聊天找到类似的解决方法,因为据我所知,除了加密的聊天 ID 之外,几乎没有可用的聊天信息。

【问题讨论】:

    标签: botframework microsoft-teams microsoft-graph-teams


    【解决方案1】:

    您可以使用 Graph API fetch conversationChatId for your app

    步骤:

    1. Get the teamsAppId for your app
    2. Determine whether your bot is currently installed for a message recipient
    3. Retrieve the conversation chatId

    请按照文档中提供的步骤进行操作,如果您遇到任何问题,请告诉我们。

    【讨论】:

    • 您的解决方案的第二步需要接收用户的 userId,但您首先无法从个人聊天中的机器人上下文中获得它。您的步骤还用于接收用户与机器人之间的聊天 ID,以发出主动机器人消息。因此,首先调用消息扩展的不是两个用户之间的聊天。除了不能解决问题之外,这还需要过多的权限。
    • 1.您可以在 activity.From.Id 字段中从 Bot Payload 获取用户 AAD Id。 2.另一个选项是提示用户JustInTime Installation的App。检查this sample
    【解决方案2】:

    我很确定 ID 没有“加密”,但它可能会被“编码”(即遵循一套算法)以获得唯一的聊天 ID。

    无论哪种方式,与上一个答案类似,您都可以通过 Graph(Beta 端点)获得所需的内容。请参阅List Chats 端点和Get Chat Members 端点。

    【讨论】:

    • Encoded 我认为它是可逆的,但它不是 afaik。这些端点没有给我我需要的东西,因为它们需要(未加密/编码的)聊天 ID - 我没有从活动中获得它
    • 您可以使用列表聊天来获取聊天本身,就像您在 Teams+Channels 中所做的那样 - ID 应该与您在 Teams 上下文中获得的内容相匹配,我认为,这就是你的短信扩展
    • 它不是同一个 ID,正如我所说的,对于个人聊天,活动仅包含加密/编码格式的 ID - 这仅适用于群聊和频道对话,这就是重点
    • @nilo,你还在面对这个问题吗?
    • 是的,我认为目前没有解决方案,微软可能不得不更新它的机器人服务
    猜你喜欢
    • 1970-01-01
    • 2018-10-09
    • 2021-10-04
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 1970-01-01
    • 2016-10-27
    相关资源
    最近更新 更多