FreeSWITCH 检查忙音
FXO 网关自带忙音检查功能,本文不予讨论
现在要讨论的是 FreeSWITCH 忙音检查怎么弄
spandsp.conf.xml 可以这样配置:
<descriptors debug-level="10"><descriptor name="86"><tone name="BUSY_TONE"><!-- 检查 2 个连续的忙音即可挂机 --><element freq1="450" freq2="0" min="300" max="400"/><element freq1="0" freq2="0" min="300" max="400"/><element freq1="450" freq2="0" min="300" max="400"/><element freq1="0" freq2="0" min="300" max="400"/> </tone></descriptor><!-- 其他国家的配置 --><!-- North America --><descriptor name="1">...
dialplan 这样弄:
<action application="set" data="execute_on_spandsp_tone_detect_BUSY_TONE=hangup"/>
<!-- 推荐PCM,实际测试发现其他的 codec 不好用 -->
<action application="set" data="codec_string=PCMA,PCMU"/>
<action application="spandsp_start_tone_detect" data="86"/>
...
下面是运行日志:
EXECUTE [depth=0] sofia/internal/1001@192.168.31.166 spandsp_start_tone_detect(86)
2024-06-18 15:36:34.091832 99.28% [INFO] mod_spandsp_dsp.c:905 initializing tone detector
EXECUTE [depth=0] sofia/internal/1001@192.168.31.166 echo()
2024-06-18 15:36:47.824955 99.09% [INFO] mod_spandsp_dsp.c:926 DETECTED TONE: BUSY_TONE
EXECUTE [depth=0] sofia/internal/1001@192.168.31.166 hangup()
标准的忙音是 450 hz, 350 ms on, 350 ms off。有的运营商发很多个忙音,有的只发少数几个。
一般检查到 2 个连续的忙音即可挂机。
可以多定义几个 BUSY_TONE,比如 BUSY_TONE1, BUSY_TONE2 等,满足不同的需要。