freeswitch的2833和inband对接方案

freeswitch的2833和inband对接方案_第1张图片

 

概述

freeswitch支持三种模式的DTMF传输方式,分别时inband、INFO、2833。

在传统的PSTN网络中,所有的DTMF码都是inband模式,所以VOIP网络和PSTN网络对接中,需要将DTMF码做格式转换,通常是2833和inband之间的转换。

freeswitch作为VOIP和PSTN网络中间的媒体服务器时,AB路会协商为不同的DTMF按键格式,我们需要一种可以将2833和inband格式互转的方案。

环境

centos:CentOS  release 7.0 (Final)或以上版本

freeswitch:v1.10.7

GCC:4.8.5

2833和inband的转换接口

freeswitch中有两个inband到2833格式的转换接口,分别是“start_dtmf”和“spandsp_start_dtmf”。根据之前的测试结果,我们选择“spandsp_start_dtmf”。

而2833到inband格式的转换接口只有一个“start_dtmf_generate”。

fs内部默认在没有2833的情况下使用info传递DTMF,需要设置通道变量“rtp_info_when_no_2833”。

配置方案

在我们的模拟场景中,A路使用2833,B路使用inband。

修改拨号计划如下。

      

             

                    

                           

                           

                           

                                                             }sofia/external5066/sip:${destination_number}@10.55.55.138:5090"/>

                    

             

      

其中,A路使用2833,对A路设置了“start_dtmf_generate”接口,将A路的2833转换为B路的inband。

B路使用inband,对B路设置了“spandsp_start_dtmf”接口,将B路的inband转换为A路的2833。

测试

测试的架构,A(2833)->fs->B(inband)。预期的DTMF流程描述如下。

A路发起呼叫,B路接听并echo媒体流。

A路发送DTMF(2833)到fs,fs转换为DTMF(inband)转发B路,B路终端echo反射媒体流DTMF(inband)到fs,fs转换为DTMF(2833)返回A路。

测试结果如下。

信令流程截图。红框中是A路的DTMF(2833)。

freeswitch的2833和inband对接方案_第2张图片

 

媒体流截图。红框中是B路的DTMF(inband)。

freeswitch的2833和inband对接方案_第3张图片

 

测试结果基本符合预期。

总结

使用拨号计划的app组合,实现了fs支持AB路不同的DTMF格式的转换。

freeswitch的DTMF从inband转换为2833的功能仍然有缺陷,表现为inband中的波形过滤不完全,会造成后续节点识别DTMF时重码的问题。

空空如常

求真得真

你可能感兴趣的:(技术-VOIP,linux,服务器,voip,freeswitch)