使用 RTCP 来监视 RTP 音频流
可以通过启用 RTP 控制协议 (RTCP) 来配置 IBM® Voice Gateway 以监视音频流。启用 RTCP 后,Voice Gateway 将在报告事件中和 vgwNetworkWarnings 状态变量中报告与网络相关的事件。V1.0.0.5 和更高版本中支持启用 RTCP。
关于音频流监视
Voice Gateway 使用实时传送协议 (RTP) 从终端系统(例如 SIP 干线)发送和接收音频流。RTP 控制协议 (RTCP) 是 RTP 规范 (RFC 3550) 的一部分,并为 RTP 媒体流提供服务质量 (QoS) 统计信息。启用 RTCP 后,Voice Gateway 使用该协议监视 RTP 网络数据传送指标,例如抖动和数据包传输。
在启用了通过 RTCP 进行音频流监视后,Voice Gateway 将报告以下信息:
-
网络警告:当发生与网络相关的事件(例如 RTP 流中的高丢包率或高平均抖动)时,SIP Orchestrator 和 Media Relay 会记录警告。Voice Gateway 还会将这些警告报告到以下位置:
- 对于每个 Watson Assistant 轮次,如果启用了 Watson Assistant 轮次事件报告,那么 Voice Gateway 将在 Watson Assistant 轮次事件中报告警告。Voice Gateway 还在发送到 Watson Assistant 或服务编排引擎的
vgwNetworkWarningsAPI 状态变量上发送警告。 - 在呼叫结束时,如果启用了 CDR 事件报告,那么警告将包含在呼叫详细记录事件内的
warnings对象中。
- 对于每个 Watson Assistant 轮次,如果启用了 Watson Assistant 轮次事件报告,那么 Voice Gateway 将在 Watson Assistant 轮次事件中报告警告。Voice Gateway 还在发送到 Watson Assistant 或服务编排引擎的
-
网络摘要:Voice Gateway 在呼叫详细记录事件内的
rtpNetworkSummary对象中提供网络摘要。网络摘要包含来自呼叫中的入站和出站音频流的统计信息,包括平均和最大抖动以及数据包信息。
请注意,如果 RTP 终端系统不支持 RTCP,那么无法报告出站流抖动和丢包。
重要信息:启用 RTCP 会每个呼叫另外使用一个 UDP 端口。对于每个呼叫,RTP 使用 RTP_UDP_PORT_RANGE 环境变量上设置的范围内的动态端口,而 RTCP 使用下一个端口。例如,如果 RTP 使用端口 16384,那么 RTCP 将使用端口 16385。请确保这些端口在防火墙中处于打开状态。有关更多信息,请参阅防火墙的端口设置。
启用 RTCP
要启用 RTCP,请在部署配置中的 Media Relay 容器下设置以下环境变量:
| 环境变量 | 缺省值 | 描述 |
|---|---|---|
ENABLE_RTCP 必需 |
false |
设置为 true 可启用 RTP 控制协议 (RTCP) 来监视 RTP 音频流。启用 RTCP 后,在呼叫详细记录 (CDR) 报告事件中将包含呼叫期间生成的警告和含有音频流统计信息的网络摘要。V1.0.0.5 和更高版本。 |
RTCP_MAX_JITTER_THRESHOLD 可选 |
30 |
触发警告之前 RTP 包之间的最大延迟(以毫秒为单位)。如果超过此最大值,那么 Voice Gateway 将针对受影响的入站或出站音频流发出警告。V1.0.0.5 和更高版本。 |
RTCP_MAX_PACKET_LOSS_THRESHOLD 可选 |
5 |
触发警告之前的最大丢包百分比。如果超过此最大值,那么 Voice Gateway 将针对受影响的入站或出站音频流发出警告。V1.0.0.5 和更高版本。 |
以下示例将启用 RTCP 并更改用于发送抖动和丢包警告的缺省值。
-
对于 Docker:
media.relay: environment: ... - ENABLE_RTCP=true - RTCP_MAX_JITTER_THRESHOLD=45 - RTCP_MAX_PACKET_LOSS_THRESHOLD=10 -
对于 IBM Cloud Kubernetes Service 中的 Kubernetes:
"env": [ ... { "name": "ENABLE_RTCP", "value": "true" }, { "name": "RTCP_MAX_JITTER_THRESHOLD", "value": "45" }, { "name": "RTCP_MAX_PACKET_LOSS_THRESHOLD", "value": "10" }]
所报告的网络信息
启用 RTCP 后,Voice Gateway 将在呼叫期间报告网络警告,然后在呼叫结束时汇总警告并提供网络摘要。
在呼叫期间
对于每个 Conversation 轮次,Voice Gateway 将网络警告发送到 vgwNetworkWarnings 状态变量上的已配置的 Watson Assistant 服务或服务编排引擎。可以使用此状态变量作为触发器来执行相应的操作,例如转接或结束呼叫。有关使用状态变量的更多信息,请参阅使用 Voice Gateway API 对自助服务代理程序进行编程。
例如:
"vgwNetworkWarnings" : [
{
"timestamp": "2018-02-08T13:10:01Z",
"message": "CWSMR0035W: The inbound RTP audio stream packet loss of 7 percent exceeds the maximum packet loss threshold of 5 percent.",
"id": "CWSMR0035W"
}
]
由于 Watson Assistant 轮次事件包含从 Watson Assistant 或服务编排引擎发送的完整上下文,因此事件还包含所报告的警告。有关更多信息,请参阅从 Voice Gateway 报告 Watson Assistant 轮次事件。
在呼叫结束时
当呼叫结束时,Voice Gateway 将汇总所报告的网络警告并在呼叫详细记录 (CDR) 事件中提供 RTP 网络摘要。要生成 CDR 事件,必须在 Voice Gateway 配置中启用 CDR 事件报告,并且设置 REST 服务器以存储事件。有关更多信息,请参阅从 Voice Gateway 报告呼叫详细记录事件。
RTCP 添加到事件内的以下 JSON 对象:
warnings:将 RTP 网络警告添加到呼叫期间记录的警告的列表。请参阅警告详细信息。rtpNetworkSummary:入站和出站 RTP 音频流的数据传递统计信息。请参阅 RTP 网络摘要详细信息