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

在Microsoft Teams应用/选项卡中代表用户创建并控制通话的方案咨询

解决方案:在Teams应用/选项卡中代表用户发起并控制通话

可行方案1:使用Microsoft Graph API发起并控制Teams原生通话

  • 发起通话:通过Graph API的POST /communications/calls端点,以用户委托权限(需申请Calls.Initiate.All、Calls.InitiateGroupCall.All等权限)发起两个用户之间的直接通话,请求体中指定两个用户的ID或UPN,通话发起后无第三方参与者,完全是用户间的原生Teams通话。
  • 通话控制:利用Graph API的通话管理端点,比如POST /communications/calls/{callId}/mute(静音)、POST /communications/calls/{callId}/hold(保持)、POST /communications/calls/{callId}/transfer(转接)等,通过获取到的通话ID执行各类控制操作。
  • 注意:必须使用用户授权的access token调用接口,不能用应用权限,否则无法代表用户发起通话;需在Azure AD中注册应用并配置对应的委托权限,同时完成OAuth 2.0授权流程获取用户令牌。

可行方案2:Teams深层链接+Graph API组合实现

  • 发起通话:在Teams选项卡中调用microsoftTeams.executeDeepLink()方法,传入Teams通话深层链接格式:https://teams.microsoft.com/l/call/0/0?users=<user1_upn>,<user2_upn>,直接唤起Teams客户端发起用户间通话,这种方式无需额外后端逻辑,用户体验更贴近原生Teams操作。
  • 通话控制:通过Graph API的GET /communications/calls端点,根据用户身份筛选出当前通话的ID,再调用控制接口完成静音、保持等操作。需要确保应用已获取用户的通话读取权限(Calls.Read.All)。

你之前方案的局限说明

  • 机器人发起通话:机器人作为通话的创建者和参与者,必然会留在通话中,且本质是机器人呼叫用户,而非用户间的直接呼叫,不符合需求。
  • Teams SDK原生方法:Teams JS SDK的startCall等方法仅能唤起通话界面,没有提供直接控制通话状态的API,无法实现静音、保持等操作。
  • Azure Communications Service:ACS是独立的通信平台,所有通话都在ACS服务器上托管,不属于Teams原生通话体系,因此不符合你的托管需求。

如果以上方案仍无法满足你的场景,目前Teams生态中确实没有其他原生方案能完全匹配“代表用户发起Teams原生通话+全量控制”且无需依赖第三方托管的需求。

内容的提问来源于stack exchange,提问作者Daan Zwarthoed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 18:25:41