通过esl来检测回铃音

用到的模块主要模块是mod_spandsp, 该模块是freeswitch默认安装的。打开配置文件conf/autoload_configs/spandsp.conf.xml,添加如下内容

   

       

           

           

       

       

           

           

           

           

           

           

     

   

其中 RING_TONE 就是回铃音,BUSY_TONE是忙音;

我们知道中国电话信号音是:

拨号音 450±25 -10±3dBm0 <10% 连续信号音

回铃音 450±25 -10±3dBm0 <10% 1S(H)/4S(L)         频率450   1秒通 4秒停

忙音 450±25 -10±3dBm0 <10% 0.35S(H)/0.35S(L)   频率450   0.35秒通  0.35秒停

拥塞音 450±25 -10±3dBm0 <10% 0.7S(H)/0.7S(L)

我们回头看 RING_TONE 的配置,其实就是实现了 “频率450   1秒通 4秒停”  只不过 min和 max 为了网络延迟和信号差做了前后100毫秒的调整。

在esl 的 CHANNEL_PROGRESS_MEDIA 的事件中,调用 spandsp_start_tone_detect uuid  cn ,uuid为通道的uuid,cn为刚才配置文件的descriptor name,如果检测成功 会产生 DETECTED_TONE 事件,header中的 Detected-Tone 会包含配置的检测出来的 tone名称,比如RING_TONE 或者BUSY_TONE。

有一点需要注意,如果对方手机设置了彩铃,检测回铃音则会失效。

你可能感兴趣的:(通过esl来检测回铃音)