Teams Graph API:如何取消已发出的参会者邀请
如何取消Teams Graph API发出的未接听参会邀请
我懂你的困扰——你用Invite接口发了通话邀请,对方还没接,这时候拿不到participant ID,没法直接用Delete接口取消。别着急,这里有两个靠谱的解决办法:
方法1:存好Invite接口返回的参与者ID
当你调用await graphClient.Communications.Calls["{call-id}"].Participants.Invite(participants,clientContext).Request().PostAsync();的时候,这个API会返回一个InviteParticipantsOperation对象,里面就算对方还没加入通话,也会生成一个临时的participant ID。你只要在调用完接口之后立刻把这个ID存下来,后面要取消的时候直接用就行:
// 调用Invite接口并保存返回的操作结果 var inviteResult = await graphClient.Communications.Calls["{call-id}"].Participants.Invite(participants, clientContext).Request().PostAsync(); // 提取被邀请人的ID(如果是一次邀多个,就循环处理每个参与者) var invitedParticipantId = inviteResult.Resource.Participants.FirstOrDefault()?.Id; // 需要取消时执行删除操作 if (!string.IsNullOrWhiteSpace(invitedParticipantId)) { await graphClient.Communications.Calls["{call-id}"].Participants[invitedParticipantId].Request().DeleteAsync(); }
方法2:查询通话参与者列表,找到待邀请状态的人
要是你没提前存ID也没关系,你可以调用Get Participants接口获取当前通话的所有参与者,筛选出状态为invited的那个对象,拿到ID之后再调用Delete接口:
// 获取当前通话的所有参与者列表 var allParticipants = await graphClient.Communications.Calls["{call-id}"].Participants.Request().GetAsync(); // 找到处于「邀请中」状态的参与者 var pendingParticipant = allParticipants.FirstOrDefault(p => p.Status == ParticipantStatus.Invited); if (pendingParticipant != null) { await graphClient.Communications.Calls["{call-id}"].Participants[pendingParticipant.Id].Request().DeleteAsync(); }
执行这个Delete操作后,对方会收到邀请被取消的通知,刚好符合你的需求。另外要注意,你的应用得配置对应的权限,比如Calls.Initiate.All或者Calls.AccessMedia.All,具体可以根据你的业务场景调整。
内容的提问来源于stack exchange,提问作者MHugh
相关产品推荐
相关产品推荐

