在邮件扩展上获取用户信息(Microsoft Teams)

时间:2020-10-26 19:01:57

标签: c# asp.net-core microsoft-teams

我有一个消息传递扩展将与我们的VoIP系统一起使用。

假设我与其他用户进行了1:1对话。我希望我的消息传递扩展程序能够获取其他用户的信息(名称,电子邮件,AadObjectId等)。我得到的最接近的信息是与该用户进行1:1聊天的会话ID。然后,我尝试了以下两种方法:

SDK:

List<ChannelAccount> teamMembers = (await turnContext.TurnState.Get<IConnectorClient>().Conversations.GetConversationMembersAsync(turnContext.Activity.Conversation.Id).ConfigureAwait(false)).ToList();

以及具有会话ID的直接端点:

https://smba.trafficmanager.net/amer/v3/conversations/{REDACTEDCONVERSATIONID}/members

两个人都给我错误403(禁止)的消息:

    "error": {
    "code": "BotNotInConversationRoster",
    "message": "The bot is not part of the conversation roster."
}

我们真的需要消息传递扩展功能来提取该信息,有什么办法可以实现?

我正在使用最新版本的BotFramework SDK

1 个答案:

答案 0 :(得分:1)

因此,您已经发现,如果实际上没有将机器人自动安装到该特定位置,则无法直接通过该机器人(即通过“对话”端点)按照您尝试的方式进行操作-1聊天,频道等)。但是,仅通过另一条路线,这绝对是可能的。您需要做的是使用Microsoft Graph,特别是要获取conversation members的操作。但是,为此,您需要在Message Extension中实现登录。幸运的是,本月的最新Teams community call中有一个关于这个 exact 主题的讨论。该示例位于节点中,但对C#同样适用(我看到您正在使用)。