NAT环境下分机可以相互呼通但是originate不通的问题解决

问题:

软话机可以正常注册到fs. 也可以拔打9664这类测试号码,可以听到回铃音乐。

问题是:

NAT环境下 fs_cli中用 originate user/1000 &echo() 无法呼通1000分机,一直是INVITE.
两个注册到服务器的软话机,是可以拔通连接,就是无法使用originate直接呼通。


最明显的另外一个用法就是:分机可以互打,不存在问题,但是通过mod_callcenter分配找到的在线分机就无法呼通。

解决

fs_cli中用 使用 originate {absolute_codec_string=PCMA}user/1000 &echo() 试试,如果能呼通,那么因为我们是NAT环境,我这里就直接把internal.xml文件里面的

<param name="inbound-codec-prefs" value="$${global_codec_prefs}"/>
<param name="outbound-codec-prefs" value="$${global_codec_prefs}"/>

直接改成

<param name="inbound-codec-prefs" value="PCMA,PCMU"/>
<param name="outbound-codec-prefs" value="PCMA,PCMU"/>

加上默认编码就可以了(为何我这里是PCMA?因为我抓包分析过能打通的分机使用的都是PCMA编码,因为时间关系我这里就不贴出来了)!
invite对端以后,过来的udp消息超长度了,建议改TCP传输或者去掉不必要的协商编码。我这里就是去掉了些不必要的协商编码。

posted @ 2020-02-13 23:13  源码加特灵  阅读(376)  评论(0)    收藏  举报