拨号成功后听到的回铃音由谁来播放是服务器和设备协商决定,终端根据服务器回复的18X消息来判断是服务器放回铃音还是终端放回铃音,标准规范中主要参考服务器回的18X消息中是否携带SDP消息,以及P-Early-Media的参数值,由于现网中部分服务器没有按照规范执行,主要表现为该服务器放彩铃或者回铃音,服务器没有放,由于服务器不修改,只能终端自己播放,故我司设备添加sip early-media开关,在服务器不放回铃音时终端播放,以保证可以正常听到回铃音。以下为我司设备的具体实现方式:
1、当sip early-media disable时表示设备不参考P-Early-Media值,
设备收到的180消息中有SDP媒体,我们就听服务器放音,否则,我们设备自己放回铃音。
设备收到的183消息中有SDP媒体,我们就听服务器放音,否则,我们设备自己不放回铃音,现象是静音。
2、当sip early-media enable,P-Early-Media:inactive时,
不管收到的180消息中是否带SDP媒体,我们设备都是本地放回铃音。
收到的183消息中带SDP媒体,我们设备本地放回铃音,收到183消息不带SDP媒体,静音。
3、当sip early-media enable,18x中带P-Early-Media:sendonly时,
收到180消息带SDP媒体,听服务器放音,收到180消息不带SDP媒体,我们设备自己放回铃音。
收到的183消息中带SDP媒体,听服务器放音,收到183消息不带SDP媒体,静音。
以上是终端设备收到第一个18X消息时的处理机制,现网中往往存在不止一个18X消息,当出现两个或两个以上时处理机制如下:
1、183不带SDP后180不带SDP,先处理183消息,表现为静音,后处理180消息,本地放回铃音。
2、180不带SDP后183不带SDP,先处理180消息,本地放回铃音,183不带SDP,忽略,本地继续放回铃音。
3、第一个18X报文带SDP,第二个18X报文不带SDP,不处理第二个报文,如果第一个是183带SDP就听服务器放彩铃,如果第一个是180带SDP就听服务器放回铃音。
4、第一个18X报文带SDP或者不带SDP,第二个18X报文带SDP,先处理第一个报文,18X带SDP就听服务器放彩铃或者回铃音,不带SDP就本地放回铃音,第二个报文到后,就以第二个为准,如果是183带SDP,听服务器放彩铃,如果是180带SDP,听服务器放回铃音。