我的环境是这样的:我的LYNC   server直接和运营商的IMS连接,本地没有网关,我的网关直接指向运营商的SBC。当使用其他非LYNC电话拨打我的LYNC电话时直到被叫方接起中间呼叫方只能听到第一声振铃,后面应该有的振铃听不到,直到被叫方接起才有声音。通过抓包看的如下结果

图中第9行有183信令,第28行就没有183信令了,运营商方面给我的反馈是,183 Session Progressing消息体中的SDP消息携带与振铃相关的信息,

如果183 Session Progressing消息不携带SDP消息,此时不会影响信令层面的正常流程,但是此时系统由于读取不到SDP消息将不会产生振铃。

经过分析我们有两个方法可以解决此问题,第一运营商端通过写脚本把183Session Progressing后面没有带sdp信息的都加上,这样使用其他电话拨打LYNC电话时就能够听到全部的振铃声了,这也是最符合标准的一种做法。

第二种做法是,运营商一方直接把183信令里面不带SDP消息都过滤掉,但是这样拨打LYNC电话时只能听到4声振铃,原因是LYNC端在和SBC端连接默认只等20秒,因为把其他183消息过滤掉了,并且过了20秒LYNC发现SBC端没有响应所以就断掉了,这是我们可以把这个等待时间改长些也可以实现一直振铃的效果,但是这样不太符合标准呼叫流程。具体修改方法如下就是修改前端上的C:\Program Files\Microsoft Lync Server 2010\Server\Core\OutboundRouting.exe.config文件里面的MaxGwWaitingTime 参数。把他改为40就差不多了,一般用户等待振铃时间的耐心在40秒左右,具体可根据实际情况更改。保存后再拨打LYNC电话就可以听到多声振铃了。