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

能否获取Azure Communication Services通话及Teams会议参与者的邮箱地址?

Azure Communication Services 获取参与者邮箱相关问题解答

问题1:能否获取Azure Communication Services通话中参与者的邮箱地址?

  • 直接通过ACS通话SDK无法直接获取参与者的邮箱地址。ACS通话对象返回的参与者标识符仅包含通信用户ID、电话号码、Teams用户ID等标识信息,不会直接暴露邮箱这类敏感的用户属性。

问题2:通过util.js获取Teams用户ID后,能否获取其邮箱地址(userPrincipalName)?

  • 可以实现,但无法仅通过ACS SDK完成,需要结合Microsoft Graph API:
    1. 你当前的util.js代码仅提取了microsoftTeamsUserId(即Azure AD对象ID),要获取邮箱,需调用Graph API的/users/{object-id}接口,该接口会返回包含userPrincipalName(邮箱)在内的用户详细信息。
    2. 注意事项:
      • 需要具备调用Graph API的权限,需申请User.Read.All或User.ReadBasic.All类型的权限。
      • 需确保你的应用已完成Azure AD身份验证,能获取有效的访问令牌来调用Graph API。

补充:修改util.js示例(仅演示逻辑,需结合Graph调用)

如果要在现有代码基础上扩展,可先保留获取Teams用户ID的逻辑,再通过该ID调用Graph API:

if (isCommunicationUserIdentifier(identifier)) {
    return identifier.communicationUserId;
} else if (isPhoneNumberIdentifier(identifier)) {
    return identifier.phoneNumber;
} else if (isMicrosoftTeamsUserIdentifier(identifier)) {
    const teamsUserId = identifier.microsoftTeamsUserId;
    // 此处需添加调用Graph API获取邮箱的逻辑
    // 示例伪代码:fetchUserEmailFromGraph(teamsUserId).then(email => { /* 使用邮箱 */ })
    return teamsUserId; // 暂时返回ID,后续替换为邮箱或结合显示
} else if (isUnknownIdentifier(identifier) && identifier.id === '8:echo123'){
    return 'Echo Bot';
} else {
    return 'Unknown Identifier';
}

注意:直接在前端调用Graph API需注意安全,建议通过后端代理完成调用,避免暴露访问令牌。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:30:49