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