你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Teams 互操作性:通话
重要
本文中所述的功能目前以公共预览版提供。 此预览版在提供时没有附带服务级别协议,我们不建议将其用于生产工作负荷。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款。
在此预览版中,Azure 通信服务 SDK 可用于生成应用程序,使自带标识 (BYOI) 的用户能够与 Teams 用户进行 1:1 通话。 标准 Azure 通信服务定价适用于这些用户,但互操作性功能没有额外费用。 使用 Azure 通信服务生成的自定义应用程序可供最终用户或机器人用来与 Teams 用户或 Teams 语音应用程序连接并通信,在 Teams 应用程序中显示给 Teams 用户时不会有任何区别,除非应用程序的开发人员使用显示名称明确指出。
若要在通信服务用户与 Teams 租户之间启用调用,请通过表单允许你的租户,并启用租户与通信服务资源之间的连接。
在 Teams 租户中实现互操作性
具有 Teams 管理员角色的 Microsoft Entra 用户可以通过 MicrosoftTeams 模块运行 PowerShell cmdlet,以在租户中启用通信服务资源。
1.准备 Microsoft Teams 模块
首先,打开 PowerShell,并使用以下命令验证 Teams 模块是否存在:
Get-module *teams*
如果未看到 MicrosoftTeams
模块,请先安装它。 要安装该模块,需要以管理员身份运行 PowerShell。 然后,运行以下命令:
Install-Module -Name MicrosoftTeams
系统会通知你将要安装的模块,你可以通过回复 Y
或 A
进行确认。 如果模块已安装但已过时,可以运行以下命令来更新模块:
Update-Module MicrosoftTeams
2.连接到 Microsoft Teams 模块
模块安装并就绪后,可以使用以下命令连接到 MicrosftTeams 模块。 你将看到一个提示你进行登录的交互式窗口。 要使用的用户帐户需要具有 Teams 管理员权限。 否则,可能会在后续步骤中收到 access denied
响应。
Connect-MicrosoftTeams
3.启用租户配置
与通信服务资源的互操作性是通过租户配置和分配的策略来控制的。 Teams 租户具有单个租户配置,Teams 用户则已分配全局策略或自定义策略。 有关详细信息,请参阅在 Teams 中分配策略。
成功登录后,可以运行 cmdlet Set-CsTeamsAcsFederationConfiguration 以在租户中启用通信服务资源。 将文本 IMMUTABLE_RESOURCE_ID
替换为通信资源中的不可变资源 ID。 可在此处找到有关如何获取此信息的更多详细信息。
$allowlist = @('IMMUTABLE_RESOURCE_ID')
Set-CsTeamsAcsFederationConfiguration -EnableAcsUsers $True -AllowedAcsResources $allowlist
4.启用租户策略
每个 Teams 用户都分配了一个 External Access Policy
,可用于确定通信服务用户是否可以呼叫此 Teams 用户。 使用 cmdlet Set-CsExternalAccessPolicy 确保分配给 Teams 用户的策略已将 EnableAcsFederationAccess
设置为 $true
Set-CsExternalAccessPolicy -Identity Global -EnableAcsFederationAccess $true
获取 Teams 用户 ID
若要启动与 Teams 用户或 Teams 语音应用程序的呼叫,需要目标的标识符。 可以使用以下选项检索该 ID:
- Microsoft Entra ID 的用户界面,或通过本地目录同步 Microsoft Entra Connect
- 通过 Microsoft Graph API 以编程方式
调用
使用通话 SDK 时,通信服务用户或终结点可与 Teams 用户(由其 Microsoft Entra 对象 ID 来标识)开始 1:1 通话。 可轻松修改呼叫其他通信服务用户的现有应用程序,以呼叫 Teams 用户。
管理通话 - Azure 通信服务操作指南 | Microsoft Docs
使用 communicationUserId 调用另一个通信服务终结点:
const acsCallee = { communicationUserId: '<Azure Communication Services User ID>' }
const call = callAgent.startCall([acsCallee]);
使用 microsoftTeamsUserId 调用 Teams 用户:
const teamsCallee = { microsoftTeamsUserId: '<Teams User AAD Object ID>' }
const call = callAgent.startCall([teamsCallee]);
语音和视频通话事件
通信服务语音和视频呼叫事件是针对通信服务用户和团队用户之间的呼叫提出的。
限制和已知问题
- 此功能目前在 .NET 调用 SDK 中不可用。
- Teams 用户必须处于“TeamsOnly”模式。 Skype for Business 用户无法接听来自通信服务用户的 1:1 通话。
- 不支持升级到群组通话。
- 通信服务通话记录不适用于 1:1 通话。
- 不支持高级呼叫路由功能,如呼叫转移、群组通话代接、同时响铃和语音信箱。
- Teams 用户无法将通信服务用户设置为转移/转接目标。
- Teams 客户端中的许多功能在与通信服务用户的 1:1 通话期间无法按预期工作。
- 不支持第三方 Teams 设备和 Skype IP 电话。
隐私
通过 Azure 通信服务与 Microsoft Teams 之间的互操作性,应用程序和用户可以参与 Teams 通话和会议。 你需要负责确保,在 Teams 调用或会议中启用录制或听录时,要通知应用程序的用户。
Microsoft 将通过 Azure 通信服务 API 指示录制或听录已开始。 你必须在应用程序的用户界面中实时向用户传达这一事实。 你同意赔偿 Microsoft 因自己未能遵守此义务而产生的所有费用和损失。