你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
虚拟会议室概述
虚拟会议室为开发人员提供基本的安全性和控制功能,以构建设计良好的通信体验,例如虚拟预约和小组通信。 开发人员可以使用虚拟会议室进行语音、视频和 PSTN 会议。 会议室中的安全和控制可以按如下方式进行分类。
用户访问安全和控制功能可用于会议参与者,能够控制可以加入会议的人,以及他们在会议期间可以执行的操作。 例如,在病人与医生的虚拟预约期间,只有经过授权的医院工作人员和患者才能加入会议。 限制参与者可保护患者隐私,参与者在所分配的角色和权限范围内进行操作,因此不会中断正在进行的会议。
在会议级别应用聊天室级安全和控制措施,以控制会议何时可以进行,以及会议期间提供哪些功能。 例如,学生只能在分配的时间内加入课堂会议,但 PSTN 呼叫者无法加入同一课堂会议。
虚拟会议室支持的高级功能
功能 | 会议室会议支持 |
---|---|
语音 (VoIP) | ✔️ |
视频 | ✔️ |
客户端发起的对 PSTN 号码的拨出 | ✔️ |
服务器发出的对 PSTN 号码的拨出** | ✔️ |
服务器端呼叫管理(呼叫自动化)* | ✔️ |
PSTN 拨入 | ❌ |
异步消息 (Chat) | ❌ |
与 Microsoft Teams 的互操作性 | ❌ |
* 有一些例外情况。 本文档列出了支持的呼叫自动化功能的完整列表。
** 目前为公共预览版。
何时使用虚拟会议室
下表显示何时使用虚拟会议室。
条件 | 使用会议室 |
---|---|
控制允许谁加入会议(仅邀请体验)非常重要时。 | ✔️ |
必须控制何时启动和结束会议时。 | ✔️ |
需要用户角色和权限才能进行管理得当的通信时。 | ✔️ |
解决方案需要 Teams 互操作性时。* | ❌ |
* 如果解决方案需要 Teams 与 Azure 通信服务之间的互操作性,请使用 Teams 互操作性呼叫
如何在虚拟会议室中执行呼叫
概括而言,若要在虚拟会议室中执行呼叫,需要创建和管理会议室。 下表介绍了如何使参与者能够从客户端和服务器端的呼叫 SDK 加入会议和执行会议内操作。
功能 | ACS SDK | 客户端与服务器 SDK | 说明 |
---|---|---|---|
创建和管理虚拟会议室 | 虚拟会议室 SDK | Server | 虚拟会议室 SDK 使开发人员能够创建和管理虚拟会议室、添加/删除用户、分配/更新用户角色、设置/更新虚拟会议室计划。 开发人员还可以设置安全限制,例如限制从会议室拨出 PSTN。 |
使用语音、视频或 PSTN 加入虚拟会议室会议,并执行客户端发起的会议内操作 | 呼叫 SDK | 客户端 | 呼叫客户端 SDK 使用户能够加入虚拟会议室会议,并按照其分配的用户角色执行允许的客户端操作。 通过强制实施名单、计划、用户角色和控制限制(通过创建和管理虚拟会议室)来确保虚拟会议室会议的安全性。 使用客户端呼叫 SDK 后,开发人员使会议参与者能够执行会议内操作,例如静音/取消静音、共享屏幕、打开/关闭视频并向 PSTN 参与者拨出呼叫等。 |
会议内操作的服务器端管理 | 呼叫自动化 SDK | Server | 呼叫自动化 SDK 使开发人员能够从服务器端执行会议内操作。 呼叫内操作包括服务器发起的 PSTN 号码拨出、会议录制、发送/接收 DTMF、向特定用户发送公告等。 由于运行服务器端呼叫操作独立于用户,并且由开发人员控制,这些操作不受用户角色控制。 |
开发人员使用虚拟会议室 SDK、呼叫客户端 SDK 和呼叫自动化 SDK 来保护其会议并触发会议内的客户端/服务器端操作。
功能 | 会议室服务器 SDK | 呼叫客户端 SDK | 呼叫自动化服务器 SDK |
---|---|---|---|
虚拟会议室管理 - 创建/获取/更新/列出/删除虚拟会议室 | ✔️ | ❌ | ❌ |
虚拟会议室名单管理 - 向虚拟会议室添加/更新/删除用户 | ✔️ | ❌ | ❌ |
虚拟会议室会议参与者权限管理 - 分配/更新用户角色 | ✔️ | ❌ | ❌ |
虚拟会议室计划管理 - 设置/更新允许的虚拟会议室计划 | ✔️ | ❌ | ❌ |
虚拟会议室安全控制管理 - 设置/更新标志以允许从特定虚拟会议室拨出 PSTN | ✔️ | ❌ | ❌ |
获取受邀加入虚拟聊天室的用户列表 | ✔️ | ❌ | ❌ |
用户发起虚拟会议室呼叫或加入正在进行的会议 | ❌ | ✔️ | ❌ |
向 PSTN 用户拨出 | ❌ | ✔️ | ✔️* |
向正在进行的会议添加/删除 VoIP 参与者 | ❌ | ✔️ | ✔️* |
获取已加入正在进行的会议的参与者的列表 | ❌ | ✔️ | ✔️* |
启动/停止会议字幕并更改字幕语言 | ❌ | ✔️ | ❌ |
管理会议录制 | ❌ | ❌ | ✔️ |
向/从 PSTN 参与者发送/接收 DTMF | ❌ | ❌ | ✔️* |
向参与者播放音频提示 | ❌ | ❌ | ✔️* |
呼叫客户端 SDK 可提供客户端会议内操作的完整列表,并说明如何执行这些操作。
* 目前为公共预览版。
使用呼叫自动化服务器 SDK 从服务器端管理虚拟会议室呼叫
呼叫自动化 SDK 使开发人员能够从服务器端管理虚拟会议室呼叫并执行会议内操作。 正在虚拟会议室会议中逐步启用呼叫自动化功能。 下表显示了这些功能的当前状态。 开发人员从服务器端管理和控制呼叫自动化功能,这些功能在高于会议参与者权限的级别运行。 因此,呼叫自动化功能不通过用户角色和权限进行控制。
呼叫自动化功能 | 会议室会议支持 |
---|---|
向 PSTN 参与者拨出 * | ✔️ |
向/从 PSTN 参与者发送/读取 DTMF * | ✔️ |
向特定会议参与者发送通知公告 | ✔️ |
从正在进行的会议中添加/删除 VoIP 参与者 | ✔️ |
使所有用户结束会议 | ✔️ |
会议听录 | ❌ |
音频媒体流式处理 | ❌ |
* 目前为公共预览版。
此图显示了管理和加入会议室的概念。
使用呼叫自动化服务器 SDK 发起的服务器 PSTN 拨号
开发人员可以通过设置会议室特定的 pstnDialoutEnabled 标志来激活/停用向 PSTN 参与者拨出的功能。 开发人员为会议室设置 pstnDialoutEnabled=TRUE 后,可以使用呼叫自动化从服务器端向 PSTN 参与者拨出,无需客户端参与。
例如,患者可能会为即将与医生进行的虚拟预约请求解释服务。 在大多数情况下,解释服务的电话号码通过后端进程动态确定。 此服务器端 PSTN 拨出功能允许开发人员确定目标电话号码、发起呼叫并将其添加到患者的虚拟预约会议中,而无需任何客户端操作。
按照以下步骤使用呼叫自动化 SDK 将 PSTN 号码添加到会议室会议:
- 创建 pstnDialoutEnabled 标志设置为
True
的会议室 - 参与者发起聊天室会议
- 使用呼叫自动化 SDK 通过会议室 ID 连接到聊天室会议
- 使用呼叫自动化 SDK 拨出到 PSTN 号码
- PSTN 用户接受并加入会议室会议
管理来自客户端呼叫 SDK 的虚拟会议室呼叫
使用通话 SDK 加入会议室通话。 可以使用 Web、iOS 或 Android 通话 SDK 加入会议室会议。 可在此处找到快速加入会议室通话的示例。
也可以使用Azure 通信服务 UI 库访问会议室。 借助 UI 库,开发人员只需几行代码即可将启用了会议室的呼叫客户端添加到其应用程序中。
客户端使用呼叫客户端 SDK 发起的 PSTN 拨出
开发人员可以通过设置会议室特定的 pstnDialoutEnabled 标志,允许/禁止会议参与者向 PSTN 参与者拨出。 开发人员为会议室设置 pstnDialoutEnabled=TRUE 后,具有演示者角色的会议参与者可以从呼叫客户端向 PSTN 参与者拨出。 以下步骤用于使用呼叫客户端 SDK 将 PSTN 号码添加到会议室会议。
- 创建 pstnDialoutEnabled 标志设置为 True 的会议室
- 参与者发起聊天室会议
- 具有演示者角色的参与者将 PSTN 号码添加到会议中
- PSTN 用户接受并加入会议室会议
虚拟会议室 API/SDK
会议室是通过会议室 API 或 SDK 创建和管理的。 在服务器应用程序中使用会议室 API/SDK 进行 room
操作:
- 创建
- 修改
- 删除
- 设置和更新参与者列表
- 设置和修改会议室有效性
- 向用户分配角色和权限
虚拟会议室 SDK | 版本 | State |
---|---|---|
虚拟会议室 SDK | 2024 年 4 月 15 日 | 正式发布 - 完全支持 |
虚拟会议室 SDK | 2023-06-14 | 正式发布 - 完全支持 |
虚拟会议室 SDK | 2023-10-30 | 公共预览版 - 完全支持 |
虚拟会议室 SDK | 2023-03-31 | 公共预览版 - 已停用 |
虚拟会议室 SDK | 2022-02-01 | 公共预览版 - 已停用 |
虚拟会议室 SDK | 2021-04-07 | 公共预览版 - 已停用 |
虚拟会议室会议中的预定义参与者角色和权限
可以向会议室参与者分配以下角色之一:“演示者”、“与会者”和“使用者”。
下表提供了映射到角色的详细功能。 在基础层面上,“演示者”角色具有完全控制权限,“与会者”功能仅限于音频和视频,而“使用者”只能接收音频、视频和屏幕共享。
功能 | 角色:演示者 | 角色:与会者 | 角色:使用者 |
---|---|---|---|
Mid 通话控制 | |||
- 打开/关闭视频 | ✔️ | ✔️ | ❌ |
- 将麦克风静音/取消静音 | ✔️ | ✔️ | ❌ |
- 将远程用户设为静音 | ✔️ | ❌ | ❌ |
- 切换摄像头 | ✔️ | ✔️ | ❌ |
- 激活扬声器 | ✔️ | ✔️ | ✔️ |
- 选择通话的扬声器 | ✔️ | ✔️ | ✔️ |
- 选择通话的麦克风 | ✔️ | ✔️ | ❌ |
- 显示参与者状态(空闲、正在连接、已连接、通话保持、正在断开连接、已断开连接等) | ✔️ | ✔️ | ✔️ |
- 显示通话状态(早期媒体、正在接入、正在连接、正在响铃、已连接、通话保持、正在断开连接、已断开连接) | ✔️ | ✔️ | ✔️ |
- 显示参与者是否静音 | ✔️ | ✔️ | ✔️ |
- 显示参与者退出通话的原因 | ✔️ | ✔️ | ✔️ |
- 启动通话字幕 | ✔️ | ✔️ | ✔️ |
- 更改字幕语言 | ✔️ | ✔️ | ❌ |
- 为所有参与者结束会议 | ✔️ | ❌ | ❌ |
- 邀请参与者加入虚拟会议室会议 | ✔️ | ❌ | ❌ |
屏幕共享 | |||
- 共享屏幕 | ✔️* | ❌ | ❌ |
- 共享应用程序 | ✔️* | ❌ | ❌ |
- 共享浏览器选项卡 | ✔️* | ❌ | ❌ |
- 参与者可以查看共享屏幕 | ✔️ | ✔️ | ✔️ |
名单管理 | |||
- 移除参与者 | ✔️ | ❌ | ❌ |
设备管理 | |||
- 请求使用音频和/或视频的权限 | ✔️ | ✔️ | ❌ |
- 获取摄像头列表 | ✔️ | ✔️ | ❌ |
- 设置摄像头 | ✔️ | ✔️ | ❌ |
- 获取选定摄像头 | ✔️ | ✔️ | ❌ |
- 获取麦克风列表 | ✔️* | ✔️* | ❌ |
- 设置麦克风 | ✔️* | ✔️* | ❌ |
- 获取选定麦克风 | ✔️* | ✔️* | ❌ |
- 获取扬声器列表 | ✔️* | ✔️* | ✔️* |
- 设置扬声器 | ✔️* | ✔️* | ✔️* |
- 获取选定扬声器 | ✔️ | ✔️ | ✔️ |
视频渲染 | |||
- 在多个位置(本地摄像头或远程流)渲染单个视频 | ✔️ | ✔️ | ✔️ (仅远程) |
- 设置/更新视频缩放模式 | ✔️ | ✔️ | ✔️ (仅远程) |
- 渲染远程视频流 | ✔️ | ✔️ | ✔️ |
从客户端向 PSTN 参与者拨出 | |||
- 从虚拟会议室呼叫向 PSTN 参与者拨出 | ✔️ | ❌ | ❌ |
* 仅在 Web 通话 SDK 上可用。 在 iOS 和 Android 通话 SDK 上不可用
** 目前为公共预览版。
事件处理
通过事件网格发布的语音和视频通话事件使用会议室通话信息进行批注。
- 会议室通话启动时,会发布 CallStarted。
- 会议室通话结束时,会发布 CallEnded。
- 新参与者加入会议室通话时,会发布 CallParticipantAdded。
- 参与者离开会议室通话时,会发布 CallParticipantRemoved。
已弃用的功能
早期公共预览版会议室 API 支持两种会议室名单控制配置,如下所示:
- “仅邀请”会议室,仅允许受邀用户加入会议室会议。
- 一个不太安全的开放会议室。 在开放会议室配置中,所有 Azure 通信服务用户都能加入会议,无需通过会议室名单明确邀请。
“开放会议室”概念现已弃用。 今后,“仅邀请”会议室将是唯一受支持的会议室类型。
已知限制
- Azure 通信服务呼叫自动化功能目前不支持会议室会议。
后续步骤:
- 使用快速入门:创建、管理和加入会议室。
- 了解如何加入会议室通话。
- 了解如何管理会议室会议。
- 查看媒体和信号的网络要求。
- 分析会议室数据,请参阅:会议室日志。
- 了解如何使用 Log Analytics 工作区,请参阅:Log Analytics 教程。
- 在 Log Analytics 中创建自己的查询,请参阅:查询入门。