究竟哪些SIP呼叫業(yè)務(wù)是企業(yè)用戶所要求的? 關(guān)于SIP業(yè)務(wù)呼叫,RFC5359對18個最常用的SIP業(yè)務(wù)呼叫流程給出了完整的SIP流程圖例,這些呼叫業(yè)務(wù)為企業(yè)用戶解決方案部署提供了一個比較權(quán)威的參考。因此,筆者希望通過此文章完整給出所有18個關(guān)于SIP呼叫業(yè)務(wù)的SIP流程和其相應(yīng)的圖例說明,并且加以適當討論和說明來解釋這些呼叫功能中可能出現(xiàn)的問題或應(yīng)該注意到地方,以便幫助技術(shù)人員或者銷售工程師能夠?qū)ζ洚a(chǎn)品或者周邊應(yīng)用終端有一個完整的比較深入的理解。提醒大家,筆者的解釋和圖例介紹僅針對標準的SIP流程來加以說明,完全以RFC5359為基礎(chǔ),不會涉及其他的設(shè)備,可能有時結(jié)合開源媒體服務(wù)器,軟交換的功能為了方便用戶理解和實踐來加以說明。
在關(guān)于SIP 呼叫服務(wù)的協(xié)議RFC5359中,對其18個SIP呼叫流程做了完整的流程示例演示。當然,RFC5359定義的這18個示例不是一個規(guī)范標準,這18個SIP呼叫業(yè)務(wù)僅表示根據(jù)RFC5359作者建議的最常用的18個呼叫業(yè)務(wù)。這18個最常用的SIP呼叫業(yè)務(wù)功能包括:
- Call Hold
- Consultation Hold
- Music on Hold
- Transfer - Unattended
- Transfer - Attended
- Transfer - Instant Messaging
- Call Forwarding Unconditional
- Call Forwarding - Busy
- Call Forwarding - No Answer
- Way Conference - Third Party Is Added
- 3-Way Conference - Third Party Joins
- Find-Me
- Call Management (Incoming Call Screening)
- Call Management (Outgoing Call Screening)
- Call Park
- Call Pickup
- Automatic Redial
- Click to Dial
下面,我們針對這18個最常用的SIP呼叫業(yè)務(wù)分別加以解釋。
1、Call Hold
Call Hold,此呼叫業(yè)務(wù)稱之為呼叫保持。呼叫保持的流程實現(xiàn)需要經(jīng)過幾個步驟來完成。以下是RFC5359中的呼叫流程圖例(25個flows):

這里假設(shè),Alice呼叫Bob,呼叫接聽后,Bob通過終端電話按鍵Hold鍵把呼叫設(shè)置為保持狀態(tài)。然后Bob解除呼叫保持狀態(tài),Alice掛機。注意,呼叫保持事實上是一個單向的功能。但是,執(zhí)行保持的一方可以對第三方停止媒體發(fā)送,這樣可能導致雙方無媒體流交互。舊的處理方式是連接到地址0.0.0.0,F(xiàn)在新的處理方式是在SDP的a=中實現(xiàn),a=inactive 表示無媒體發(fā)送;a=sendonly 表示仍有媒體發(fā)送。
注意,在F10, F11中使用了渲染功能tag(rfc4235)來表示Bob終端不再渲染,例如Bob已經(jīng)設(shè)置為保持狀態(tài)。下面,他們通過完整的流程圖帶SIP消息的說明來具體介紹呼叫保持的流程。

Alice 對P1 發(fā)出INVITE請求,然后通過P1呼叫Bob。

Bob呼叫振鈴,Alice振鈴(F4,F(xiàn)5):

收到OK(F6/F7)消息:

Alice發(fā)送到ACK確認信息到P1(F8),P1到Bob(F9) 流程。

Bob對P1發(fā)出INVITE消息執(zhí)行F10,然后,P1對Alice發(fā)出InVITE消息執(zhí)行F11。這里,開始雙方正式進入呼叫保持狀態(tài)。在這里讀者要注意, 結(jié)合我們開始時說明的,Bob使用了渲染 tag,并且o= 的version 增加。在F6,F(xiàn)7時仍然是2890844527,這里已經(jīng)增加到了2890844528。因為是一個RE-INVITE攜帶了a=sendonly。

Alice接受了呼叫保持請求,并且回復200 OK(F12, F13),在SDP中攜帶了a=reconly。

Bob回復ACK消息(F14/Bob->P1,F(xiàn)15/P1->Alice)。

Bob關(guān)閉呼叫保持狀態(tài),用戶通過按鍵Hold再次關(guān)閉保持功能。RE-INVITE中的SDP沒有包括a=sendonly。執(zhí)行F16(Bob到P1),F(xiàn)17(P1到Alice)流程。

Alice回復200 OK,發(fā)送到消息中沒有帶SDP的a=reconly。執(zhí)行F18(Alice->P1),F(xiàn)19流程(P1->Bob)。

Bob回復ACK,執(zhí)行F20(Bob到P1),F(xiàn)21(P1到Alice)流程。重新創(chuàng)建RTP媒體流。

Alice發(fā)送BYE消息到P1,P1發(fā)送BYE消息到Bob,執(zhí)行流程F22和F23。

然后各自發(fā)送最后的200 OK,執(zhí)行流程F24(Bob到P1),F(xiàn)25(P1到Alice)。

到此為止,整個呼叫保持流程結(jié)束。
參考資料:
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)注微信公眾號:asterisk-cn,獲得有價值的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中國合作伙伴,官方qq技術(shù)分享群(3000千人):589995817