Teams呼叫机器人通过objectId转接至其他应用及语音信箱相关问题咨询
Teams呼叫转接相关问题解决方案
1. 直接通过objectId转接至其他Teams calling bot的实现
- 同Azure AD租户下的Teams calling bot支持直接通过objectId完成转接,无需走PSTN号码。
- 你遇到的
Request authorization tenant mismatch错误常见原因有三个:- 发起转接的bot和目标转接bot不属于同一个Azure AD租户,目前Graph API原生不支持跨租户直接用应用objectId转接呼叫,跨租户场景只能走目标bot的PSTN号码实现
- 你构造请求时传入的
tenantId和你发起Graph API请求所用的access token对应的租户ID不一致,需要校验你获取access token时指定的租户参数和SetTenantId传入的值完全相同 - 你填入的
transferTargetId是目标应用的应用ID(Client ID),而非所需的Azure AD对象ID(Object ID),这两个值在Azure AD应用注册页是分开展示的,需要替换为正确的Object ID
- 同租户场景下的请求构造优化:你可以删除多余的
SetTenantId调用,确保请求头里的access token所属租户和目标应用所属租户一致即可正常完成转接。
2. 转接至语音信箱的实现方法
转接语音信箱需要在构造TransferTarget时指定语音信箱标识,参考代码示例如下:
var requestBody = new CallTransferRequestBody { TransferTarget = new InvitationParticipantInfo { Identity = new IdentitySet { // 若转接至指定用户的语音信箱,Id填入该用户的AAD Object ID或用户主体名称(UPN) Voicemail = new Identity { Id = "<target-user-id-or-upn>" } }, AdditionalData = new Dictionary<string, object> { {"endpointType", "voicemail"} } } };
- 使用前需要确认两点:
- 你的bot已被授予
Calls.Initiate.All或Calls.AccessMedia.All的应用级API权限 - 目标用户已开通Exchange Online许可,且已激活Teams语音信箱功能
- 你的bot已被授予
内容的提问来源于stack exchange,提问作者user1515791
相关产品推荐
相关产品推荐

