3、回铃音的产生
一个呼叫被发起之后,当被叫终端振铃时,主叫也会听到某种声音,提示正在等待被叫应答,这就是所谓回铃音。回铃音通常是某种标准的音频信号,也可能是被叫用户指定的某种特殊的声音文件,例如音乐等等。在PSTN中,回铃音通常是被叫的本地交换机产生,然后通过已建立的单向话路传送给主叫话机,由主叫话机播放给主叫。
在SIP网络中,被叫侧可以早期媒体的形式向主叫提供回铃音(如果被叫侧不提供回铃音,则主叫SIP终端会在本地产生回铃音)。究竟使用前面所述的两种做法的那一种来传送早期媒体,下面分别讨论。
3.1.网关模式
网关模式适用于被叫(即UAS)为一个SIP网关的情形。具体的可能的情况通常如下图所示:一个用户在SIP终端上呼叫一个PSTN用户,这个呼叫通过了一个SIP网关。就SIP呼叫而言,网关是被叫。
在这里,回铃音是由PSTN网产生的。但是在SIP域,SIP网关需要以早期媒体的形式将从PSTN网络收到的回铃音媒体传送给主叫SIP终端。
这种情况下,从SIP域来看,回铃音媒体流和之后的被叫媒体流的产生是同源的,都在SIP网关上。当被叫用户摘机时,回铃音媒体流自然地变成了用户媒体流,因此可以使用网关模式,而不会带来媒体删剪的问题。
信令流程如下图:
其中消息简单说明如下:
1) INVITE请求中含有SDP offer,其处置类型为“Session”。
网关收到INVITE后向PSTN发送IAM消息,然后在PCM话路上收到回铃音,同时在信令上收到ACM消息。
2) 183响应中含有SDP answer,其处置类型为“Session”。
此时,UAC与网关之间媒体会话建立,同时将回铃音在这个会话上传送给UAC。
3) UAC发送PRACK
4) 网关返回针对PRACK的200响应。
5) 被叫用户应答,网关收到ANM后向SIP UAC返回200 INVITE响应。同时到SIP UAC上的会话上的回铃音自动变成了从PSTN上收到的用户话音。主被叫用户开始双向通话
6) SIP UAC发送ACK。
3.2.应用服务器模式
应用服务器模式适用于被叫(即UAS)是一个应用服务器的情形。具体的可能的情况通常如上图所示:一个SIP用户希望由运营商网络(而非终端)来产生回铃音。运营商通常使用网络上的一个MRF资源提供回铃音,并且需要一个应用服务器其来控制回铃音的产生。
这种情况下,回铃音媒体流与之后的被叫媒体流分别在MRF与被叫SIP终端上产生,显然是不同的源。如果使用网关模式的话,将回铃音媒体切换为被叫媒体流必须在会话上进行媒体更改,媒体更改不能立即完成,这将会带来媒体删剪的问题。
使用应用服务器模式,则是同时建立了两个会话,将回铃音媒体切换为被叫媒体流可以通过将当前会话从早期会话切换到正常会话上即可,能够立即完成。
简单说明如下:
1) INVITE请求中携带一个SDP作为常规会话的offer
其Supported头域中包含一个选项标签“early-session”,表示主叫终端支持早期会话。
2) INVITE请求中携带之前收到的offer
3) 183响应中携带一个SDP作为常规会话的answer。
4) 183中含有两个SDP:
a) 一个是之前从被叫那里收到的,作为常规会话的answer;
此时常规会话被建立,但并没有媒体被传送。
b) 另一个作为要建立的早期会话的的offer.
5) PRACK中携带一个SDP,作为早期会话的answer
此时早期会话被建立,且有被早期媒体(回铃音)传送。
6) AS向被叫发送PRACK
7) 被叫向AS返回200 PRACK
8) AS向主叫返回200 PRACK
9) 被叫摘机,向AS发送200响应
10) AS向主叫发送200响应
此时常规会话上将会有媒体传送,主叫UA播放常规会话上的媒体。
4、关于目前多媒体彩铃的实现的简单说明
目前中国网通及中国移动的多媒体体彩铃业务的实现都主要采用了网关模式的实现方案(详细流程参见相关技术规范),原因是很多SIP终端都不支持“early-session”选项标签,无法使用应用服务器模式。
实际上,采用网关模式实现彩铃会导致媒体删剪等一些问题,最终应该会逐步过渡到理想的方案 – 应用服务器模式。