DTMF 在FreeSWITCH中的传输方式

简介

DTMF(Dual Tone Multi Frequency),双音多频。这是一种在通话过程中的号码传输方式,通过DTMF,交换机知道客户端按了什么按键,然后做对应的处理。详细内容可以google或百度一下。

在SIP 通话中,传输按键信息的方式很多,但还是统一称作DTMF。其中在FreeSWITCH中支持三种DTMF的传输方式。

inband

这种方式和传统的DTMF相似,不过是把双音多频内容用音频编码方式放到RTP数据里进行传输。FreeSWITCH默认不支持这种方式,因为这种方式需要检测RTP包中的内容,比较耗费CPU。

如果需要在FreeSWITCH中开启这种方式的话,需要修改profile,这个是全局生效。

<param name="dtmf-type" value="inband">

但在使用的过程中还是需要使用start_dtmf这个app,需要在制定的dialplan中增加

<action name="start_dtmf"/>

如果不想全局也可以单独在dialplan中增加,如下

<action name="set" value="dtmf_type=inband"/>
<action name="start_dtmf"/>

RFC2833

RFC2833文件中规定了传输DTMF的另一种方式。这种方式也是通过RTP传输,不过采用了特殊的Payload,并且RTP
中的内容是文本数据,这样解析起来比较简单。

默认FreeSWITCH就是采用这种传输方法,如果不是则修改profile的配置

<param name="dtmf-type" value="rfc2833">

SIP INFO

DTMF也可以在SIP的INFO消息里发送,这种方式甚至比RFC2833更有效。但是可能由于SIP信令和RTP收发采用的是不同的端口,所以可能会造成收到DTMF和实际的声音不同步。

总结

具体情况针对不同的对接设备来进行配置,和传统的设备对接通常只能用Inband模式。如果支持RFC2833,建议使用RFC2833。

你可能感兴趣的:(SIP,DTMF,FreeSWITCH,sip,DTMF,FreeSWITCH)