小易社区

呼叫易新闻资讯,行业动态,产品咨询

呼叫易新闻资讯

小易社区

呼叫易新闻资讯,行业动态,产品咨询

呼叫易新闻资讯
  • FreeSWITCH检测DTMF数据的方法

    来源:呼叫易    作者:小易
    发表时间:2022/6/15 17:48:27
    浏览:

          FreeSWITCH检测DTMF数据的方法有三种:RFC2833(带内检测)、SIPINFO(带外检测)、INBAND(带内RTP检测),下面我们就来详细了解学习一下。

    一、RFC2833

     
    1.介绍:
     
    RFC2833为带内检测方式,通过RTP传输,由特殊的rtpPayloadType即TeleponeEvent来标示RFC2833数据包。同一个DTMF按键通常会对应多个RTP包,这些RTP数据包的时间戳均相同,此可以作为识别同一个按键的判断依据,最后一包RTP数据包的end标志置1表示DTMF数据结束。
     
    另外,很多SIP UA默认的TeleponeEvent都为101,但可以人为修改,这时要求在进行RFC2833 DTMF检测之前需事先获取SDP协商的TeleponeEvent参数。
     
    2. 配置:
     
    这是FreeSWITCH默认的DTMF检测配置。
     
    二、SIPINFO
     
    1. 介绍:
     
    SIPINFO为带外检测方式,通过SIP信令通道传输DTMF数据。这种方式甚至比RFC2833更有效。但是由于SIP信令和RTP收发采用的是不同的端口,所以可能会造成收到DTMF和实际的声音不同步。
     
    2. 配置:
     
    修改profile,例如sip_profiles/internal.xml。
     
     
     
    三、INBAND
     
    1. 介绍:
     
    INBAND为带内检测方式,而且与普通的RTP语音包混在一起传送。在进行INBAND DTMF检测时唯一的办法就是提取RTP数据包进行频谱分析,经过频谱分析得到高频和低频的频率,然后查表得到对应的按键,进行频谱分析的算法一般为Goertzel,这种算法的实现也很简单,网上有很多可以下到,但建议采用定点算法,浮点算法效率很低。
     
     
    2. 配置:
     
    2.1 修改profile,例如sip_profiles/internal.xml。
     
    2.2 在需要使用的dialplan中增加
     
    <完>
     
咨询电话 在线咨询 回到顶部
400-676-8039