如何通过Teams Bot获取群聊名称并映射会话ID?
获取Bot所在群聊名称的可行方案
1. 先检查平台权限配置
不同聊天平台对Bot获取群聊名称有明确权限要求:
- 比如Teams平台,得在Bot的manifest文件里声明
Team.ReadBasic.All或Channel.ReadBasic.All权限,并且完成权限审批流程,不然平台不会返回名称信息。 - 有些平台默认不会主动推送群聊名称,必须先申请对应权限。
2. 从TurnContext里正确提取名称
别死磕TurnContext.Activity.Conversation.Name,试试这些方法:
- 如果是Teams渠道,用自带的扩展方法直接拿团队/频道信息:
var teamInfo = turnContext.Activity.TeamsGetTeamInfo(); var teamName = teamInfo?.Name; var channelInfo = turnContext.Activity.TeamsGetChannelInfo(); var channelName = channelInfo?.Name; - 其他渠道可以看看会话的扩展属性,有些平台会把名称存在
Conversation.Properties里:if (turnContext.Activity.Conversation.Properties.TryGetValue("conversationName", out var nameObj)) { var conversationName = nameObj.ToString(); }
3. 换用Graph API查询
要是ConnectorClient的GetConversationsWithHttpMessagesAsync不好使,直接用Microsoft Graph API更靠谱:
- 针对Teams团队,拿到团队ID(通过
TeamsGetTeamInfo()获取)后,调用GET /teams/{team-id}就能拿到团队名称。 - 普通群聊的话,用Conversation ID作为chat-id,调用
GET /chats/{chat-id}接口获取群聊名称。
4. 确认保存的Conversation ID没问题
检查你之前保存的Conversation ID格式是否正确,比如Teams的ID是19:xxx@thread.tacv2这种带前缀的,格式错了肯定查不到信息。
内容的提问来源于stack exchange,提问作者MilleB
相关产品推荐
相关产品推荐

