应用程序托管的媒体机器人的要求和注意事项
应用程序托管的媒体机器人需要 Microsoft.Graph.Communications.Calls.Media
.NET 库来访问音频和视频媒体流。 机器人必须部署在 Azure 中的 Windows 服务器本地计算机或 Windows 服务器来宾操作系统 (OS) 上。
注意
- 开发消息传递和互动语音响应 (IVR) 机器人的指南并不完全适用于构建应用程序托管的媒体机器人。
- 由于适用于机器人的 Microsoft 实时媒体平台是开发人员预览版,因此本文档中的指南可能会更改。
用于开发的 C# 或 .NET 和 Windows 服务器
应用程序托管的媒体机器人具有以下要求:
机器人必须使用 C# 和标准.NET Framework进行开发,并部署在 Azure Microsoft 上。 不能使用C++或 Node.js API 来访问实时媒体。 但是,应用程序托管的媒体机器人支持 .NET Core,SDK 提供对 .NET 6.0 的支持。
机器人可以托管在以下 Azure 服务环境之一中:
- 云服务。
- 使用虚拟机规模集 (VMSS) 的 Service Fabric。
- 基础结构即服务 (IaaS) 虚拟机 (VM)。
- Azure Kubernetes 服务 (AKS) 。
无法将机器人部署为 Azure Web 应用。
机器人必须在最新版本的
Microsoft.Graph.Communications.Calls.Media
.NET 库上运行。 机器人必须使用最新版本的 NuGet 工具包,或不超过三个月的版本。 旧版本的库已弃用,几个月后无法正常工作。 使Microsoft.Graph.Communications.Calls.Media
库保持最新状态可确保机器人与 Microsoft Teams 之间的最佳互操作性。
下一部分提供有关实时媒体调用所在位置的详细信息。
实时媒体呼叫保留在创建位置
实时媒体调用保留在创建它们的计算机上。 实时媒体调用固定到已接受或启动调用的虚拟机 (VM) 实例。 来自 Teams 通话或会议的媒体流向该 VM 实例,而机器人发回 Teams 的媒体也必须源自该 VM。 如果 VM 停止时有任何实时媒体调用正在进行,这些调用会立即终止。 如果机器人事先知道挂起的 VM 关闭,则可以结束调用。
下一部分提供有关应用程序托管的媒体机器人的辅助功能的详细信息。
可在 Internet 上访问的应用程序托管的媒体机器人
必须直接在 Internet 上访问应用程序托管的媒体机器人。 这些机器人必须包括以下功能:
- 必须使用实例级公共 IP 地址 (ILPIP) 直接从 Internet 访问在 Azure 中托管应用程序托管媒体机器人的每个 VM 实例。
- 要获取和配置 Azure 云服务的 ILPIP,请参阅实例级公共 IP 经典概述。
- 要为 VM 规模集配置 ILPIP,请参阅每台虚拟机的公共 IPv4。
- 托管应用程序托管媒体机器人的服务还必须使用映射到特定实例的面向公众的端口配置每个 VM 实例。
- 对于 Azure 云服务,这需要实例输入端点。 有关详细信息,请参阅为 Azure 中的角色实例启用通信。
- 对于 VM 规模集,必须在负载均衡器上配置 NAT 规则。 有关详细信息,请参阅 Azure 中的虚拟网络和虚拟机。
- Bot Framework Emulator不支持应用程序托管的媒体机器人。
下一部分提供有关应用程序托管媒体机器人的可扩展性和性能注意事项的详细信息。
可伸缩性和性能注意事项
应用程序托管的媒体机器人需要考虑以下可扩展性和性能注意事项:
- 与消息传送机器人相比,应用程序托管的媒体机器人需要更多的计算和网络 (带宽) 容量,并且可能会产生更高的运营成本。 实时媒体机器人开发人员必须仔细衡量机器人的可扩展性,并确保机器人不会接受比它所能管理的更多的同时呼叫。 启用视频的机器人的每个 CPU 内核只能维持一两个并发媒体会话(如果使用“原始”RGB24 或 NV12 视频格式)。
- 实时媒体平台不会利用 VM 上提供的任何图形处理单元 (GPU) 来卸载 H.264 视频编码/解码。 相反,视频编码和解码在软件的 CPU 中完成。 如果 GPU 可用,机器人可能会利用它进行自己的图形呈现,例如,如果机器人使用 3D 图形引擎。
- 托管实时媒体机器人的 VM 实例必须至少具有两个 CPU 核心。 对于 Azure,建议使用 Dv2 系列虚拟机。 对于其他 Azure VM 类型,具有四个虚拟 CPU (vCPU) 的系统是所需的最小配置。 有关 Azure VM 类型的详细信息,请参阅 Azure 文档。
支持用于机器人的媒体格式
Microsoft Teams 上的机器人仅支持以下音频和视频内容的媒体格式:
格式 | 更多信息 |
---|---|
Vorbis | http://www.vorbis.com/ |
PCM_U8、PCM_S16LE、PCM_S32LE、PCM_F32LE、PCM_S16BE、PCM_S24BE、PCM_MULAW | https://wiki.multimedia.cx/?title=PCM |
Ogg | http://www.vorbis.com/ |
Matroska | https://matroska.org/ |
WAV | https://en.wikipedia.org/wiki/WAV |
AAC | https://en.wikipedia.org/wiki/Advanced_Audio_Coding |
H264 | https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC |
MP3 | https://en.wikipedia.org/wiki/MP3 |
Opus | http://opus-codec.org/ |
MP4 | https://en.wikipedia.org/wiki/MPEG-4 |
代码示例
应用程序托管的媒体机器人示例如下所示:
示例名称 | 说明 | Graph |
---|---|---|
本地媒体示例 | 演示不同本地媒体方案的示例。 | View |
远程媒体示例 | 演示不同远程媒体方案的示例。 | View |