通過(guò)上面的介紹,讀者可能已經(jīng)發(fā)現(xiàn),Transfer-Unattended(Blind Transfer)和Transfer-Attended之間是有所不同的。最大的不同之處在于盲轉(zhuǎn)過(guò)程中,電話轉(zhuǎn)接到終端不會(huì)詢(xún)問(wèn)第三方是否可以轉(zhuǎn)接,不關(guān)心轉(zhuǎn)接到第三方是否同意或者接受這個(gè)電話轉(zhuǎn)接(所以稱(chēng)之為“盲”)。而詢(xún)轉(zhuǎn)則有所不同,它和會(huì)轉(zhuǎn)接到第三方提前詢(xún)問(wèn),是否接受這個(gè)電話的轉(zhuǎn)接,然后再進(jìn)行電話轉(zhuǎn)接流程(所以稱(chēng)之為“詢(xún)”)。
另外,在上面的例子中,Bob插入了Replace 頭Refer-To URL。具體的Replace 頭的規(guī)范,讀者可以參考RFC3891。注意,Refer-To URL是一個(gè)Contact URL,它是詢(xún)轉(zhuǎn)接受方(Carol)在F10中返回的200 OK響應(yīng)消息中的Contact URL。這樣可以保證正確的Carol的URL可達(dá)。在F10流程中,Contact URL中的參數(shù)gr表示Contact URL是一個(gè)GRUU,它表示是一個(gè)dialog之外的全球路由方式(RFC5627)。
GRUU具有以下幾個(gè)特征:首先,它定義了指定的具體的用戶(hù)代理。其次,從理論上來(lái)說(shuō),可以支持全球路由方式。最后,它的存活周期很長(zhǎng)。我們簡(jiǎn)單查看一下關(guān)于GRUU的使用方式。如果支持了GRUU的SIP終端登錄的話,其請(qǐng)求可能被復(fù)制出幾個(gè)不同的終端設(shè)備地址。

但是,如果對(duì)某一臺(tái)指定的設(shè)備發(fā)送請(qǐng)求消息的話,請(qǐng)求消息會(huì)根據(jù)不同的設(shè)備URL來(lái)發(fā)送,它會(huì)專(zhuān)門(mén)發(fā)送到指定的終端設(shè)備,例如,sip:user@domain;opaque=user:epid:UghFocauauCHBHoLhAAA;gruu
那么,其他的設(shè)備就不會(huì)收到這個(gè)請(qǐng)求消息。

在一些關(guān)于SIP的其他應(yīng)用中,例如SBC的部署環(huán)境中,GRUU也支持了公開(kāi)的GRUU和臨時(shí)的GRUU,區(qū)別在于其存活周期的設(shè)定不同。具體的語(yǔ)法示例如下:
pub-gruu=" Sip:userA@home.net;gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6"
;temp-gruu="sip:tgruu.7hs==jd7vnzga5w7fajsc7-ajd6fabz0f8g5@home.net;gr";
在詢(xún)轉(zhuǎn)過(guò)程中,如果示例中的Bob不知道Contact URL中的gruu,Bob必須自己修復(fù)這個(gè)問(wèn)題。如果觸發(fā)的INVITE失敗,Bob必須重新使用refer帶Refer-To URL來(lái)連接Carol,但是需要支持另外一個(gè)要求條件,Replace頭中必須棄用Refer-To頭。


以上是關(guān)于電話詢(xún)轉(zhuǎn)到呼叫流程圖,處理過(guò)程需要27個(gè)具體的步驟。現(xiàn)在,我們配合詳細(xì)的SIP消息來(lái)進(jìn)一步解釋以上流程。

首先是Alice對(duì)Bob發(fā)起INVITE請(qǐng)求,進(jìn)行呼叫(F1):

然后,Bob對(duì)Alice發(fā)送180 振鈴(F2):

緊接著,Bob對(duì)Alice發(fā)送 200 OK(F3):

Alice對(duì)Bob發(fā)送ACK確認(rèn)消息(F4),雙方呼叫接通。

Bob對(duì)Alice發(fā)送INVITE消息,開(kāi)啟等待狀態(tài)(F5)。

Alice對(duì)Bob發(fā)送200 OK(F6):

Bo對(duì)Alice發(fā)送ACK確認(rèn)(F7):

然后,Bob對(duì)Carol發(fā)送INVITE請(qǐng)求消息,要求完成Alice的電話轉(zhuǎn)接:

Carol回復(fù)Bob一個(gè)180振鈴(F9):

緊接著,Carol回復(fù)Bob一個(gè)200 OK(F10),注意,這里的參數(shù)已經(jīng)增加了一個(gè)gruu。

Bob對(duì)Carol回復(fù)了一個(gè)ACK確認(rèn)消息(F11),開(kāi)始媒體流。

經(jīng)過(guò)Bob和Carol通話以后,Bob告訴Carol,Alice想和Carol直接通話,Carol同樣和Alice通話。Bob將此通話設(shè)置為等待狀態(tài),邀請(qǐng)Alice和Carol通話。

Carol對(duì)Bob發(fā)送200 OK(F13):

Bob收到Carol的ACK消息(F14),Bob和Carol最終確定轉(zhuǎn)接。

然后Bob對(duì)Alice發(fā)送REFER消息,開(kāi)始通知Carol的地址:

Alice收到202 接受消息(F16),表示接受這個(gè)轉(zhuǎn)接。

緊接著,Alice繼續(xù)對(duì)Bob發(fā)送NOTIFY消息(F17),通知Bob一個(gè)訂閱事件,告知Alice電話轉(zhuǎn)接的流程處理狀態(tài)。

Bob收到Alice 200 OK(F18):

獲悉了Bob已經(jīng)知道訂閱事件以后,Alice開(kāi)始對(duì)Carol發(fā)送INVITE請(qǐng)求(F19),并且替換了Bob。

Carol對(duì)Alice 發(fā)送200 OK(F20):

然后,Alice對(duì)Carol發(fā)送ACK確認(rèn)消息(F21),開(kāi)始RTP語(yǔ)音流,轉(zhuǎn)接完成。

因?yàn),Alice和Carol已經(jīng)開(kāi)始RTP流的交互,所以緊接著,Carol需要對(duì)Bob進(jìn)行掛機(jī)處理。因此,Carol對(duì)Bob發(fā)送BYE消息,雙方掛機(jī)(F22)。

Bob對(duì)Carol發(fā)送200 OK,執(zhí)行掛機(jī)處理(F22):

到現(xiàn)在為止,Alice仍然需要告訴Bob電話轉(zhuǎn)接狀態(tài),因此,Alice對(duì)Bob發(fā)送第二個(gè)NOTIFY事件,通知Bob電話已經(jīng)完全成功轉(zhuǎn)接(F24):

Bob發(fā)送一個(gè) 200 OK消息,表示收到從事件(F25):

然后Bob對(duì)Alice掛機(jī),發(fā)送BYE消息(F26):

最后,Alice對(duì)Bob發(fā)送200 OK(F27),詢(xún)轉(zhuǎn)正式流程結(jié)束。

參考資料:
https://tools.ietf.org/html/rfc4579
https://www.rfc-editor.org/rfc/rfc5359.txt
https://tools.ietf.org/html/rfc7088
https://www.rfc-editor.org/rfc/rfc3515.txt
https://tools.ietf.org/html/rfc3840
https://tools.ietf.org/html/rfc3891
https://support.sonus.net/display/SBXDOC51/GRUU+Support
www.freepbx.org.cn
https://svn.resiprocate.org/viewsvn/resiprocate/main/resip/recon/MOHParkServer/doc/MOHParkServer_User_Documentation.pdf?revision=8937&view=co
http://ijsetr.com/uploads/463152IJSETR13872-273.pdf
https://tools.ietf.org/html/rfc3665
https://tools.ietf.org/html/rfc3265
https://tools.ietf.org/html/rfc3515
https://tools.ietf.org/html/rfc4317


關(guān)注微信公眾號(hào):asterisk-cn,獲得有價(jià)值的Asterisk行業(yè)分享
Asterisk freepbx 中文官方論壇:http://bbs.freepbx.cn/forum.php
Asterisk freepbx技術(shù)文檔: www.freepbx.org.cn
融合通信商業(yè)解決方案,協(xié)同解決方案首選產(chǎn)品:www.hiastar.com
Asterisk/FreePBX中國(guó)合作伙伴,官方qq技術(shù)分享群(3000千人):589995817