调用Graph通信API获取群组通话时ChatInfo属性为何为空?
问题分析与解决办法
Graph API ChatInfo属性的变更情况
微软Graph API近期确实调整了ChatInfo字段的返回逻辑:
- 此前,从Bot和用户A的点对点通话升级为群组通话、再通过Invite Participant API邀请用户B后,生成的群组通话会自动关联Teams聊天线程,调用
Get Call API能拿到包含messageId、threadId的ChatInfo。 - 现在,这种通过点对点升级+API邀请参与者创建的群组通话,不会自动绑定聊天线程,导致
ChatInfo返回为空。
生成录制Bot Join URL的替代方案
要解决录制Bot的加入链接问题,有两种可靠方式:
1. 直接用Create Call API创建带聊天线程的群组通话
放弃从点对点通话升级的流程,直接调用POST /communications/calls创建群组通话,这样Get Call API会正常返回ChatInfo。核心请求参数示例:
{ "subject": "录制测试群组通话", "participants": [ {"@odata.type": "#microsoft.graph.invitationParticipantInfo", "identity": {"user": {"id": "<用户A的ID>"}}}, {"@odata.type": "#microsoft.graph.invitationParticipantInfo", "identity": {"user": {"id": "<用户B的ID>"}}}, {"@odata.type": "#microsoft.graph.invitationParticipantInfo", "identity": {"application": {"id": "<你的Bot ID>"}}} ], "chatInfo": { "threadId": "<预先创建的Teams群组聊天ID>", "messageId": "<聊天内的消息ID>" }, "callbackUri": "<你的Bot回调地址>" }
2. 先创建聊天线程再关联通话
- 第一步:调用
POST /chats创建包含用户A、B和Bot的群组聊天,拿到threadId。 - 第二步:在调用Invite Participant API邀请参与者时,把
chatInfo参数(包含刚拿到的threadId)传入通话请求。 - 后续调用
Get Call API就能获取完整的ChatInfo,用来生成Join URL。
备选方案(针对必须保留点对点升级的场景)
如果一定要保留从点对点升级的流程,可以尝试:
- 升级群组通话后,调用
POST /chats创建关联的群组聊天。 - 再调用
PATCH /communications/calls/{callId}手动把chatInfo绑定到通话上。
注意:这个操作需要Calls.Initiate.All和Chats.Create.All权限。
内容的提问来源于stack exchange,提问作者Bijay Kushawaha
相关产品推荐
相关产品推荐

