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传输或者去掉不必要的协商编码。我这里就是去掉了些不必要的协商编码。
-----------------------------------------------------------
shotting source code
shotting source code

浙公网安备 33010602011771号