

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 联系人控制面板 (CCP) 如何使用 WebRTC
<a name="ccp-uses-webrtc"></a>

本高级主题适用于可能对联系人控制面板（CCP）如何传递语音通话感兴趣的 IT 管理员。其中还提供了一些网络细节。

CCP 使用 WebRTC 作为底层技术，以实现联络中心座席和客户之间的实时通信。它使座席能够直接从其 Web 浏览器管理入站和出站呼叫以及视频会议。

**Topics**
+ [WebRTC 是什么？](#whatis-webrtc)
+ [术语](#ccp-uses-webrtc-terminology)
+ [WebRTC 的工作原理](#how-webrtc-works)
+ [STUN、TURN 和 ICE 如何协同工作](#how-stun-turn-ice-works)
+ [最佳实践](#webrtc-ccp-bp)

## WebRTC 是什么？
<a name="whatis-webrtc"></a>

WebRTC 是一个开放的技术规范，它通过简单的 API 支持跨浏览器和移动应用程序的实时通信（RTC）。

WebRTC 使用对等互连技术在连接的对等点之间进行实时数据交换。它提供人与人互动所需的低延迟媒体流。

WebRTC 规范包括一组 IETF 协议，包括用于建立对等连接的[交互式连接建立](https://www.ietf.org/rfc/rfc5245.txt)、[使用中继绕过 NAT 的遍历（TURN）](https://datatracker.ietf.org/doc/html/rfc5766)和 [NAT 的会话遍历实用工具（STUN）](https://www.ietf.org/rfc/rfc5389.txt)。除此之外，还包括用于可靠和安全的实时媒体和数据流的协议规范。

由于 Connect Customer 使用 WebRTC，因此您无需为实时通信构建和维护复杂的基础架构。它使您能够通过Connect Customer快速部署全渠道客户参与解决方案，同时受益于WebRTC提供的低延迟、高质量的媒体流和安全的点对点连接。

## 术语
<a name="ccp-uses-webrtc-terminology"></a>

NAT 的会话遍历实用工具 (STUN)  
一种协议，用于发现您的公有地址并确定路由器中阻止与对等方直接连接的任何限制。  
管理 STUN 端点的组件。这些端点使应用程序能够在其位于 NAT 或防火墙后面时发现其公有 IP 地址。

使用中继绕过 NAT 的遍历 (TURN)  
通过打开与 TURN 服务器的连接并通过该服务器中继所有信息来绕过对称 NAT 限制的服务器。  
管理 TURN 端点的组件。这些端点在应用程序无法通过对等方式流式传输媒体时，可通过云启用媒体中继。

会话描述协议（SDP）  
一种描述连接的多媒体内容的标准，例如分辨率、格式、编解码器、加密等，以便一旦传输数据，两个对等方就可以相互理解。

SDP 提议  
代理发送的 SDP 消息，用于生成会话描述以创建或修改会话。它描述所需媒体通信的各个方面。

SDP 应答  
应答者响应从提议人收到的提议而发送的 SDP 消息。应答指出了已接受的各个方面。例如，提议中的所有音频和视频流是否都被接受。

交互式连接建立 (ICE)  
允许您的 Web 浏览器与对等方连接的框架。

ICE 候选项  
发送对等方能够用于通信的方法。

对等  
任何配置为与 WebRTC 进行实时、双向通信的设备或应用程序（例如移动或 Web 应用程序）。

正在发送信号  
信令组件管理 WebRTC 信令端点，这些端点允许应用程序彼此之间安全地连接，以实现对等的实时媒体流式传输。

## WebRTC 的工作原理
<a name="how-webrtc-works"></a>

WebRTC使用信令协议， JavaScript 例如浏览器的会话建立协议 (JSEP) 或基于此构建的自定义协议，来启动和管理 WebSockets/XMPP通信会话。它还使用编解码器对音频和视频数据进行编码和解码，使用安全 Real-time 传输协议 (SRTP) 来加密媒体流以确保隐私，并使用ICE、STUN和TURN协议在NAT网关和防火墙之间导航和建立点对点连接。

## STUN、TURN 和 ICE 如何协同工作
<a name="how-stun-turn-ice-works"></a>

让我们考虑一下这样的场景，即代理CCP（联系人控制面板）是对等体A，Connect客户是对等体B，使用WebRTC进行双向媒体流（例如，语音通话）。

以下是代理商CCP想要与Connect客户建立联系时会发生的情况：

1. 座席 CCP 生成一个 SDP 选件，其中包含有关所需会话的信息，例如要使用的编解码器、是音频还是视频会话等。它还包括ICE候选列表，Connect客户可以尝试使用这些 IP/port 配对来连接到代理CCP。

1. 为了收集 ICE 候选项，CCP 向 STUN 服务器发出了一系列请求。STUN 服务器返回发起请求的公有 IP 地址和端口对。代理 CCP 还为 Connect Customer 的 TURN 服务创建一个 TURN 通道以获取媒体中继地址。此中继地址是一 IP/port 对可以在代理 CCP 和 Connect Customer 中的其他媒体服务之间转发数据包。代理CCP将每 IP/port 对添加到ICE候选列表中。接下来，代理CCP通过信令通道将SDP报价发送给Connect客户。 WebSocket

1. Connect Customer 按照相同的过程生成 SDP 答案：它收集 ICE 候选者，然后将他们连同 SDP 答案一起发送给代理 CCP。 WebSocket交换 SDP 后，代理 CCP 和 Connect Customer 会执行一系列连接检查。双方都从 IP/port 对方的 SDP 中选出一对候选人并向其发出 STUN 请求。如果收到响应，则该 IP/port 对将被标记为有效的 ICE 候选对。

1.  完成所有 IP/port 配对的连接检查后，代理CCP和Connect Customer协商并决定其中一对用于媒体流的有效配对。

下图说明了CCP和Connect客户之间使用WebRTC进行的通信。

![CCP和Connect客户之间使用WebRTC的通信流程。](http://docs.aws.amazon.com/zh_cn/connect/latest/adminguide/images/webrtc-diagram.png)


## 最佳实践
<a name="webrtc-ccp-bp"></a>
+ 为了获得最可靠和最佳的音频体验，强烈建议确保座席工作站和 AWS 之间的媒体流量直接交换，不要通过 VPN 或其他网络加速器跳跃传输。
+ 为确保您的企业能够成功帮助WebRTC连接并缓解错误行为，请确保将端口 3478 () 上的传入 UDP 流量列入允许名单。SEND/RECEIVE有关更多信息，请参阅 [选项 1（推荐）：将 Amazon EC2 和 CloudFront IP 范围要求替换为域名许可名单](ccp-networking.md#option1)。在表中，查阅 `TurnNlb-*.elb.region.amazonaws.com` 那行。
+ 如果您使用的是 [选项 2（不推荐）：允许 IP 地址范围](ccp-networking.md#option2)，建议您使用以下方法来缓解错误行为：
  + 监控您的企业为Connect客户列出的允许列表的IP范围。
  + 确保监控 IP 范围内的变化。
  + 确保列表中的任何新增内容都附有 3478 (UDP) 端口和协议允许流量。 SEND/RECEIVE 
+ 迁移到生产环境之前，请执行以下操作
  + 使用 Connect [客户端点连接测试工具测试 WebRTC 连接](check-connectivity-tool.md)。此工具可帮助您确定是否可以从代理站访问Connect Customer WebRTC Media端点。
  + 测试和跟踪对于[网络环境](network-ts.md#investigate-ndc)和本地网络架构（例如防火墙更新、边缘路由器和 VPN）的变更。
+ 如果您使用的是无状态防火墙，请确保已按照[无状态防火墙](ccp-networking.md#stateless-firewalls)中所述将临时端口范围添加到允许列表中。