You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 18:52:52