你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

呼叫 SDK 概述

最终用户设备可以通过呼叫 SDK 来驱动语音和视频通信体验。 本页提供呼叫功能的详细说明,包括平台和浏览器支持信息。 若要立即开始,请查看呼叫快速入门呼叫 hero 示例

开始开发后,请查看已知问题页,找到我们正在处理的 bug。

呼叫 SDK 的关键功能:

  • 寻址 - Azure 通信服务提供通用标识用于对通信终结点进行寻址。 客户端使用这些标识对服务进行身份验证并相互通信。 在可让客户端洞察谁已连接到呼叫终结点(名单)的呼叫 API 中会使用这些标识。
  • 加密 - 呼叫 SDK 将加密流量并防止在线篡改。
  • 设备管理和媒体 - 呼叫 SDK 提供所需的工具用于绑定到音频和视频设备、对内容进行编码以通过通信数据平面高效传输,并在指定的输出设备和视图中呈现内容。 此外,还提供 API 用于屏幕和应用程序共享。
  • PSTN - 呼叫 SDK 可以使用你在 Azure 门户中获取的电话号码或者以编程方式,通过传统的公共交换电话网络发起语音呼叫。
  • Teams 会议 - 呼叫 SDK 可以加入 Teams 会议,并与 Teams 语音和视频数据平面交互。
  • 通知 - 呼叫 SDK 提供可以在接到来电时通知客户端的 API。 如果你的应用不是在前台运行,可以使用触发弹出式通知(“toast”)的模式来通知最终用户接到了来电。

详细功能

下面列出了 Azure 通信服务通话 SDK 中当前提供的功能集。

功能组 功能 JS Windows Java (Android) Objective-C (iOS)
核心功能 在两个用户之间启动一对一呼叫 ✔️ ✔️ ✔️ ✔️
为两个以上的用户(最多 350 个用户)启动组呼叫 ✔️ ✔️ ✔️ ✔️
将两个用户的一对一呼叫升级为两个以上用户的组呼叫 ✔️ ✔️ ✔️ ✔️
在一个组呼叫开始后加入它 ✔️ ✔️ ✔️ ✔️
邀请其他 VoIP 参与者加入正在进行的组呼叫 ✔️ ✔️ ✔️ ✔️
Mid 呼叫控制 打开/关闭视频 ✔️ ✔️ ✔️ ✔️
将麦克风静音/取消静音 ✔️ ✔️ ✔️ ✔️
切换照相机 ✔️ ✔️ ✔️ ✔️
本地保持/取消保持 ✔️ ✔️ ✔️ ✔️
活动说话人 ✔️ ✔️ ✔️ ✔️
选择通话扬声器 ✔️ ✔️ ✔️ ✔️
选择呼叫麦克风 ✔️ ✔️ ✔️ ✔️
显示参与者的状态
空闲、早期媒体、正在连接、已连接、等候接听、接听中、已断开连接
✔️ ✔️ ✔️ ✔️
显示呼叫的状态
早期媒体、正在传入、正在连接、正在响铃、已连接、通话保持、正在断开连接、已断开连接
✔️ ✔️ ✔️ ✔️
显示参与者是否静音 ✔️ ✔️ ✔️ ✔️
显示参与者退出通话的原因 ✔️ ✔️ ✔️ ✔️
屏幕共享 在应用程序中共享整个屏幕 ✔️
共享特定的应用程序(从正在运行的应用程序列表中) ✔️
从打开的选项卡列表中共享 web 浏览器选项卡 ✔️
在屏幕共享过程中共享系统音频
参与者可以查看远程屏幕共享 ✔️ ✔️ ✔️ ✔️
名单 列出参与者 ✔️ ✔️ ✔️ ✔️
删除参与者 ✔️ ✔️ ✔️ ✔️
PSTN 启动与 PSTN 参与者的一对一呼叫 ✔️ ✔️ ✔️ ✔️
与 PSTN 参与者进行组呼叫 ✔️ ✔️ ✔️ ✔️
将 PSTN 参与者的一对一呼叫升级为组呼叫 ✔️ ✔️ ✔️ ✔️
以 PSTN 参与者身份在组呼叫中拨出 ✔️ ✔️ ✔️ ✔️
对早期媒体的支持 ✔️ ✔️ ✔️ ✔️
常规 使用音频测试服务测试麦克风、扬声器和照相机(可通过呼叫 8:echo123 使用) ✔️ ✔️ ✔️ ✔️
设备管理 请求使用音频和/或视频的权限 ✔️ ✔️ ✔️ ✔️
获取相机列表 ✔️ ✔️ ✔️ ✔️
设置相机 ✔️ ✔️ ✔️ ✔️
获取所选相机 ✔️ ✔️ ✔️ ✔️
获取麦克风列表 ✔️ ✔️
设置麦克风 ✔️ ✔️
获取所选麦克风 ✔️ ✔️
获取扬声器列表 ✔️ ✔️
设置扬声器 ✔️ ✔️
获取所选扬声器 ✔️ ✔️
视频渲染 在多个位置(本地相机或远程流)渲染单个视频 ✔️ ✔️ ✔️ ✔️
设置/更新缩放模式 ✔️ ✔️ ✔️ ✔️
渲染远程视频流 ✔️ ✔️ ✔️ ✔️

呼叫 SDK 流式传输支持

通信服务呼叫 SDK 支持以下流式传输配置:

限制 Web Windows/Android/iOS
最多 # 个可同时发送的传出本地数据流 1 个视频和 1 个屏幕共享 1 个视频 + 1 个屏幕共享
最多 # 个可同时呈现的传入远程数据流 4 个视频 + 1 个屏幕共享 6 个视频 + 1 个屏幕共享

虽然“呼叫 SDK”不会强制执行这些限制,但如果超出这些限制,用户可能会遇到性能降低的情况。

呼叫 SDK 超时

以下超时适用于通信服务呼叫 SDK:

操作 超时(秒)
重新连接/删除参与者 120
在调用中添加或删除新的模态(启动/停止视频或屏幕共享) 40
呼叫转移操作超时 60
1:1 呼叫建立超时 85
组呼叫建立超时 85
PSTN 呼叫建立超时 115
将 1:1 呼叫升级到组呼叫超时 115

最长通话持续时间:

最长通话持续时间为 30 小时,达到最长通话持续时间的参与者将断开通话连接。

OS 和浏览器提供的 JavaScript 呼叫 SDK 支持

下表显示了当前可用的一组受支持的浏览器。 除非另有说明,我们支持浏览器最新的三个主版本(对于 Safari,则支持最新的三个次要版本)。

平台 Chrome Safari Microsoft Microsoft Edge (Chromium) Firefox
Android ✔️
iOS ✔️
macOS ✔️ ✔️ ✔️ ✔️
Windows ✔️ ✔️ ✔️
Ubuntu/Linux ✔️

Android 调用 SDK 支持

  • 支持 Android API 级别 21 或更高版本

  • 支持 Java 7 或更高版本

  • 支持 Android Studio 2.0

iOS 调用 SDK 支持

  • 在编译时支持 iOS 10.0+,运行时支持 iOS 12.0+

  • Xcode 12.0+

调用客户端 - 浏览器安全模型

通过 HTTPS 的用户 WebRTC

WebRTC API(如 getUserMedia)要求通过 HTTPS 处理调用这些 API 的应用。

对于本地开发,可使用 http://localhost

在 iframe 中嵌入通信服务调用 SDK

各种浏览器正在采用新的权限策略(也称为功能策略)。 此策略通过控制应用程序如何通过跨源 iframe 元素访问设备的摄像头和麦克风来影响调用方案。

如果要使用 iframe 从其他域托管应用的一部分,则必须将具有正确值的 allow 属性添加到 iframe。

例如,此 iframe 允许摄像头和麦克风访问:

<iframe allow="camera *; microphone *">

后续步骤

有关详细信息,请参阅以下文章: