最常⽤的18个SIP呼叫业务流程详解(6~18)
⽬录
在《》中介绍了三种保持(Hold)和两种转接(Transfer)的详细流程,本节继续介绍剩余的流程。
6、Transfer - Instant Messaging
Transfer - Instant Messaging,我们称之为即时消息转发。其主要的⼯作⽅式是,⾸先⽤户Alice和Bob创建了⼀个会话,然后Bob 呼叫Carol,Bob发送即时消息给Carol,即时消息中包含⼀个Alice的URL和⼀个嵌⼊的Replace头。如果Carol点击这个URL链接,Carol 的SIP终端会对Alice发送⼀个INVITE请求,并且替换了会话中的Bob。在这个⽰例中,其URL传递是使⽤的SIP MESSAGE method来实现(参考RFC3428),也可以使⽤其他IM即时协议来完成Bob和Carol之间的URL传递⼯作。具体的处理流程经过11个步骤:
现在,我们配合SIP消息来进⼀步说明如何实现即时消息转发⽅式。
⾸先,Alice对Bob发送INVITE消息(F1):
借口简谱
Bob回复180(F2) :
紧接着Bob对Alice发送 200 OK(F3):
Alice对Bob发送Ack确认,开始RTP流(F4):
ipth 然后Bob对Carol发送⼀个message call(F5),在这个即时消息中携带了Alice的URL和Replaces头。
Carol看到以后,发送⼀个200 OK给Bob:
接下来,Carol点击URL,控制这个呼叫,对Alice发送⼀个INVITE请求,并且替换了Bob(F7)。
Alice对⽐dialog中消息和Replaces的头消息,确认以后,接受Carol的请求。Alice对Carol回复⼀个200 OK(F8):
Carol对Alice回复了ACK消息(F9),并且开始RTP流。
Alice和Carol开始通话以后,并且因为已经替换了Replaces头,所以Alice对Bob挂机处理,Alice对Bob发送BYE消息(F10):
大学必备
Bob对Alice发送200 OK(F11),到此为⽌,即时消息转接的流程完成。圣乔治岛
7、Call Forwarding Unconditional
别样的风景
Call Forwarding Unconditional,我们称之为⽆条件呼叫前转。从字⾯意思,读者也可以看明⽩,被呼叫⽅会把呼叫进⾏⽆条件转移。与之对应的是忙状态呼叫前转和⽆应答呼叫前转。这些业务都涉及到了运营商接⼊业务(PSTN或者IMS),不是专门针对内⽹IPPBX ⽤户之间的电话转接功能。我们会在后续的章节中分别介绍这两种呼叫的流程。这⾥,我们仅对⽆条件前转进⾏分析。
科普工作总结
这⾥,我们假设Alice呼叫Bob(这⾥没有标识Bob的流程)。Bob会把呼叫⽆条件前转到PSTN⽹络。
如果实现此场景,呼叫必须经过Proxy和Gateway来实现处理。Gateway看作为另外⼀个Proxy的URL地址,同时⽀持了PSTN的接⼝。在以下的场景中,Alice对Bob进⾏呼叫,这个INVITE消息会经过Proxy,Proxy则会重写请求的URL地址,然后前转这个INVITE到Gateway地址。以上两步是前转最重要的部分,所以,我们仅针对这个部分进⾏深⼊分析,对⽹关侧和Bob的响应不做分析。
论语警句 这⾥,读者需要注意,在以上⽰例中的F3中,Proxy是通过返回Alice ⼀个181 响应消息来实现的呼叫前转处理。严格地说,在这个使⽤场景中,Proxy仅扮演着⽤户代理的⾓⾊,它不能⽣成non-100的临时响应回复消息。另外需要说明的是,呼叫前转的处理也可以通过redirect的⽅式来实现,就是通常所说302 Moved Temporarily respon。以下图例是⼀个完整的⽆条件呼叫前转流程和具体的SIP消息操作。
投掷游戏教案 接下来,我们针对⽆条件呼叫前转的具体细节,结合请求响应消息进⾏分析介绍。⾸先,Alice对Bob
发送INVITE请求,通过Proxy执⾏呼叫(F1):
然后,Proxy回复Alice ⼀个100 trying(F2),表⽰正在处理这个请求,忽略了流程图。接下来,Proxy会对Alice发送⼀个181响应消息(181 Call is Being forwarded),执⾏F3流程;同时Proxy对Gateway发出⼀个INVITE请求(F4)。这⾥,Proxy对Gateway 发送到INVITE请求中已经重写了请求URL地址。