究竟哪些SIP呼叫業(yè)務(wù)是企業(yè)用戶所要求的? 關(guān)于SIP業(yè)務(wù)呼叫,RFC5359對(duì)18個(gè)最常用的SIP業(yè)務(wù)呼叫流程給出了完整的SIP流程圖例,這些呼叫業(yè)務(wù)為企業(yè)用戶解決方案部署提供了一個(gè)比較權(quán)威的參考。因此,筆者希望通過此文章完整給出所有18個(gè)關(guān)于SIP呼叫業(yè)務(wù)的SIP流程和其相應(yīng)的圖例說明,并且加以適當(dāng)討論和說明來解釋這些呼叫功能中可能出現(xiàn)的問題或應(yīng)該注意到地方,以便幫助技術(shù)人員或者銷售工程師能夠?qū)ζ洚a(chǎn)品或者周邊應(yīng)用終端有一個(gè)完整的比較深入的理解。提醒大家,筆者的解釋和圖例介紹僅針對(duì)標(biāo)準(zhǔn)的SIP流程來加以說明,完全以RFC5359為基礎(chǔ),不會(huì)涉及其他的設(shè)備,可能有時(shí)結(jié)合開源媒體服務(wù)器,軟交換的功能為了方便用戶理解和實(shí)踐來加以說明。
在關(guān)于SIP 呼叫服務(wù)的協(xié)議RFC5359中,對(duì)其18個(gè)SIP呼叫流程做了完整的流程示例演示。當(dāng)然,RFC5359定義的這18個(gè)示例不是一個(gè)規(guī)范標(biāo)準(zhǔn),這18個(gè)SIP呼叫業(yè)務(wù)僅表示根據(jù)RFC5359作者建議的最常用的18個(gè)呼叫業(yè)務(wù)。這18個(gè)最常用的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
下面,我們針對(duì)這18個(gè)最常用的SIP呼叫業(yè)務(wù)分別加以解釋。
1、Call Hold
Call Hold,此呼叫業(yè)務(wù)稱之為呼叫保持。呼叫保持的流程實(shí)現(xiàn)需要經(jīng)過幾個(gè)步驟來完成。以下是RFC5359中的呼叫流程圖例(25個(gè)flows):
這里假設(shè),Alice呼叫Bob,呼叫接聽后,Bob通過終端電話按鍵Hold鍵把呼叫設(shè)置為保持狀態(tài)。然后Bob解除呼叫保持狀態(tài),Alice掛機(jī)。注意,呼叫保持事實(shí)上是一個(gè)單向的功能。但是,執(zhí)行保持的一方可以對(duì)第三方停止媒體發(fā)送,這樣可能導(dǎo)致雙方無媒體流交互。舊的處理方式是連接到地址0.0.0.0,F(xiàn)在新的處理方式是在SDP的a=中實(shí)現(xiàn),a=inactive 表示無媒體發(fā)送;a=sendonly 表示仍有媒體發(fā)送。
注意,在F10, F11中使用了渲染功能tag(rfc4235)來表示Bob終端不再渲染,例如Bob已經(jīng)設(shè)置為保持狀態(tài)。下面,他們通過完整的流程圖帶SIP消息的說明來具體介紹呼叫保持的流程。
Alice 對(duì)P1 發(fā)出INVITE請(qǐng)求,然后通過P1呼叫Bob。
Bob呼叫振鈴,Alice振鈴(F4,F(xiàn)5):
收到OK(F6/F7)消息:
Alice發(fā)送到ACK確認(rèn)信息到P1(F8),P1到Bob(F9) 流程。
Bob對(duì)P1發(fā)出INVITE消息執(zhí)行F10,然后,P1對(duì)Alice發(fā)出InVITE消息執(zhí)行F11。這里,開始雙方正式進(jìn)入呼叫保持狀態(tài)。在這里讀者要注意, 結(jié)合我們開始時(shí)說明的,Bob使用了渲染 tag,并且o= 的version 增加。在F6,F(xiàn)7時(shí)仍然是2890844527,這里已經(jīng)增加到了2890844528。因?yàn)槭且粋(gè)RE-INVITE攜帶了a=sendonly。
Alice接受了呼叫保持請(qǐng)求,并且回復(fù)200 OK(F12, F13),在SDP中攜帶了a=reconly。
Bob回復(fù)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回復(fù)200 OK,發(fā)送到消息中沒有帶SDP的a=reconly。執(zhí)行F18(Alice->P1),F(xiàn)19流程(P1->Bob)。
Bob回復(fù)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)。
到此為止,整個(gè)呼叫保持流程結(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)注微信公眾號(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中國合作伙伴,官方qq技術(shù)分享群(3000千人):589995817