奥科网关关于 DTMF 的调整

问题描述

有些客户使用奥科网关后,反应 DTMF 的效果不是很好。

这个问题可能是因为国内很多运营商的 DTMF 编码是 in-band,而大部分 PBX 使用的 DTMF 编码是 RFC2833,在进行 DTMF 拨号时需要转码导致的

我们就针对这个问题给大家一些配置的建议。

DTMF 传输类型

奥科网关支持多种 DTMF 在网络中传输的类型,配置的路径在:Configuration > VoIP > GW and IP to IP > DTMF and Supplementary > DTMF & Dialing。

接下来我们介绍一下网关支持的几种 DTMF 传输类型的设置方法:

  • 根据 Nortel IETF 草案发送 SIP INFO 消息:DTMF 信号以 INFO 消息的形式发送到终端。要开启该模式需要做以下配置:
    1. 将 ‘Declare RFC 2833 in SDP’ 设置为 NO (RxFTMFOption = 0)
    2. 将 ‘1st Tx DTMF Option’ 参数设为 INFO(Nortel)(TxDTMFOption = 1)
    注意:在该模式中,DTMF 信号会从音频流中删除(’DTMF Transport Type’ 参数会自动设为 Mute DTMF
  • 使用 Cisco 模式的 INFO 消息:DTMF 信号以 INFO 消息的形式发送到终端。要开启该模式需要做以下配置:
    1. 将 ‘Declare RFC 2833 in SDP’ 设置为 NO (RxFTMFOption = 0)
    2. 将 ‘1st Tx DTMF Option’ 参数设为 INFO(Cisco)(TxDTMFOption = 3)
    注意:在该模式中,DTMF 信号会从音频流中删除(’DTMF Transport Type’ 参数会自动设为 Mute DTMF
  • 根据 IETF Internet-Draftdraft-mahy-sipping-signaled-digits-01使用 NOTIFY 消息:使用 NOTIFY 消息将 DTMF 数字发送到远端。 要启用此模式,要开启该模式需要做以下配置:
    1. 将 ‘Declare RFC 2833 in SDP’ 设置为 NO (RxFTMFOption = 0)
    2. 将 ‘1st Tx DTMF Option’ 参数设为 NOTIFY(TxDTMFOption = 2)
    Note:在该模式中,DTMF 信号会从音频流中删除(’DTMF Transport Type’ 参数会自动设为 Mute DTMF
  • 将 RFC 2833 中继与有效负载类型协商一起使用:根据 RFC 2833,DTMF 数字作为 RTP 流的一部分发送到终端。要开启该模式需要做以下配置:
    1. 将 ‘Declare RFC 2833 in SDP’ 设置为 Yes (RxFTMFOption = 3)
    2. 将 ‘1st Tx DTMF Option’ 参数设为 RFC 2833(TxDTMFOption = 4)
    注意:要设置 RFC 2833 载荷默认值以外的值,请使用 RFC2833PayloadType 参数。网关会对本地和远端 SDP 的 RFC 2833 载荷进行协商,并在接受到 SDP 后发送设置的载荷值。设备会期望收到与设置的相同的载荷。如果远端的 SDP 不包含 “telephony-event”,设备会使用透明模式(作为音频的一部分)发送 DTMF 信号。
  • 将 DTMF 信号(在 RTP 包中)作为音频流的一部分(关闭 DTMF 中继)发送:这种方式通常被用于 G711 编码中。使用其他低码率(LBR)的编码器,会降低 DTMF 信号的质量。要开启该模式需要做以下配置:
    1. 将 ‘Declare RFC 2833 in SDP’ 设置为 No (RxFTMFOption = 0)
    2. 将 ‘1st Tx DTMF Option’ 参数设为 Not Supported(TxDTMFOption = 0)
    3. 在配置文件中,将 DTMFTransportType 设为 2(透明传输模式,默认值为 3)
  • 根据韩国模式使用 INFO 消息:DTMF 信号会使用 INFO 消息发送到远端。要开启该模式需要做以下设置:
    1. 将 ‘Declare RFC 2833 in SDP’ 设置为 No (RxFTMFOption = 0)
    2. 将 ‘1st Tx DTMF Option’ 参数设为 INFO(Cisco)(TxDTMFOption = 3)
    Note:在该模式中,DTMF 信号会从音频流中删除(’DTMF Transport Type’ 参数会自动设为 Mute DTMF

如果不想让设备接受来自 SDP 的 RFC 2833 Telephony 事件,只需要将 ‘Declare RFC 2833 in SDP’ 参数设为 NO 即可。

DTMF 载荷

对于奥科网关来说修改 DTMF 载荷对于 DTMF 效果也是有影响的,我们最好保证对端的 DTMF 载荷和网关中保持一致。

  1. 打开 RTP/RTCP 设置界面(Configuration > VoIP > Media > RTP/RTCP Settings),对应先选项都在 ‘General Settings’ 下方: sOULkF
  2. 配置下列参数:
    • ‘RTP Redundancy Depth’ (RTPRedundancyDepth) – 使设备能够生成RFC 2198冗余数据包。
    • ‘Enable RTP Redundancy Negotiation’ (EnableRTPRedundancyNegotiation) -使设备能够根据 RFC 2198 在 SDP 中包含 RTP 冗余动态有效载荷类型。
    • ‘RFC 2833 TX Payload Type’ (RFC2833TxPayloadType) – 定义了Tx RFC 2833 DTMF中继动态有效载荷类型。
    • ‘RFC 2833 RX Payload Type’ (RFC2833RxPayloadType) – 定义了Rx RFC 2833 DTMF中继动态有效载荷类型。
    • ‘RFC 2198 Payload Type’ (RFC2198PayloadType) – 根据RFC 2198定义了RTP冗余数据包的有效载荷类型。
  3. 点击 apply 应用更改

根据我们的经验,国内使用的 RFC2833 载荷通常使用 101 作为载荷,而奥科网关中的载荷类型为 96.