1、PBX簡(jiǎn)單背景介紹
讓我們首先簡(jiǎn)單說明關(guān)于PBX的一些背景知識(shí),更多關(guān)于交換機(jī)的知識(shí),讀者可以查閱網(wǎng)絡(luò)資料。PBX最早起源于程控電話交換機(jī)。讀者可以通過此視頻介紹電話系統(tǒng)的發(fā)展歷史:

因?yàn)橥ㄐ偶夹g(shù)本身的不斷發(fā)展,PBX技術(shù)也不斷更新迭代。其應(yīng)用場(chǎng)景逐漸延伸到了公司電話系統(tǒng),商業(yè)公司的客戶聯(lián)系等環(huán)境中。

以前的PBX是龐然大物,隨著IP化演進(jìn),IPPBX已經(jīng)變得非常精致小巧,功能卻有很大不同。

隨著網(wǎng)絡(luò)的發(fā)展,傳統(tǒng)的基于PSTN的純PBX電話系統(tǒng)逐漸被淘汰出來市場(chǎng);贗P化的PBX在最近幾十年有了很大的發(fā)展,從功能到用戶場(chǎng)景。部署方式,甚至于運(yùn)營(yíng)方式都發(fā)生了很大變化,因?yàn)楫a(chǎn)品更新不夠及時(shí),或者技術(shù)落伍,這些變化導(dǎo)致了很多企業(yè)通信公司的破產(chǎn)重組,一些非常大牌的世界級(jí)公司都從市場(chǎng)上消失了,一個(gè)個(gè)巨人都紛紛倒下。目前來看,基于SIP,純IP化或PSTN/IP的產(chǎn)品具有非常高的地位。
2、IPPBX發(fā)展歷史
這里,為了說明后續(xù)章節(jié)的內(nèi)容,筆者羅列幾個(gè)關(guān)于IP的主要的里程碑事件和相關(guān)技術(shù)。
1974年,IEEE發(fā)表了VINTON G. CERF 的研究論文:

A Protocol For Packet Network Intercommunication
此論文對(duì)網(wǎng)絡(luò)封包處理,錯(cuò)誤處理,發(fā)送順序等提出了協(xié)議機(jī)制,為基于IP化的處理提供了非常權(quán)威的論述。這是當(dāng)時(shí)通信界非常有影響力的論文。
1985年,NSFNET 骨干網(wǎng)建立。
1994年,發(fā)明了第一個(gè)VOIP 應(yīng)用軟件-MTALK
1999年,兩個(gè)比較大的事件發(fā)生,SIP協(xié)議規(guī)范正式公布(rfc2543),同時(shí)Mark Spencer發(fā)布了世界上第一個(gè)開源IPPBX-Asterisk,支持了語音板卡,SIP協(xié)議,PRI協(xié)議。
2004年后,各種應(yīng)用軟件和運(yùn)營(yíng)方式也不斷發(fā)生變化,產(chǎn)生了很多產(chǎn)品銷售模式。


3、Half-Call model的基本概念
Half-call模式的基本概念其實(shí)非常簡(jiǎn)單,是一個(gè)比較抽象化的模式,不是一個(gè)具象功能。IPPBX分為兩個(gè)部分,一部分支持呼叫方的功能要求,另外一個(gè)部分則支持被呼叫方的功能要求。這里筆者說明,IPPBX的工作模式還有其他模式,例如,multi segment model 等等模式,這里僅討論Half-call 模式。

在half-call模式中,呼叫發(fā)起方和呼叫結(jié)束方根據(jù)都具有處理機(jī)制和角色切換功能:
- 用戶屬性,用戶屬性分別包括發(fā)起方功能和結(jié)束方功能。因?yàn),任何一個(gè)終端用戶都可能發(fā)起呼叫或者作為下游終端來接受呼叫,因此,終端的角色可能會(huì)隨時(shí)切換。如果是呼叫發(fā)起方,則需要遵守發(fā)起方功能;如果是結(jié)束方則遵守結(jié)束方功能要求。
- 業(yè)務(wù)處理順序:首先處理發(fā)起方功能,按照IPPBX設(shè)置流程,處理發(fā)起方流程,然后再處理接收方功能。
- Half-call 模式和B2BUA的工作方式高度契合,同時(shí)滿足了UA轉(zhuǎn)換的要求,增加了IPPBX的功能處理的靈活性。
4、IPPBX的主要功能
因?yàn)榛贗P化的IPPBX的功能不斷發(fā)展,IPPBX所支持的功能越來越多,廠家不同可能支持的功能數(shù)量有所不同。目前,IPPBX可能支持了大概500多個(gè)功能。但是,IPPBX大部分的主要常用功能包括幾個(gè)部分:
- 管理員功能:包括系統(tǒng)管理員對(duì)系統(tǒng)的全局設(shè)置功能,例如,語音,界面設(shè)置,系統(tǒng)用戶權(quán)限設(shè)置,網(wǎng)絡(luò)環(huán)境設(shè)置等。
- 業(yè)務(wù)功能:包括IPPBX的業(yè)務(wù)邏輯功能支持,例如,語音導(dǎo)航,隊(duì)列,振鈴組,會(huì)議管理等設(shè)置。
- 呼叫功能:包括針對(duì)具體呼叫進(jìn)行的設(shè)置,例如,免打擾功能,實(shí)時(shí)呼叫錄音功能,電話轉(zhuǎn)接功能,軟電話終端支持等。
- 通信接口支持功能:包括支持的外部接入設(shè)備,板卡,語音網(wǎng)關(guān),中繼網(wǎng)關(guān),其他終端產(chǎn)品或者軟件類型的接口,SIP trunk/IMS,WebRTC等。
- 系統(tǒng)用戶側(cè)(UCP)功能:包括系統(tǒng)用戶的管理訪問界面,支持IPPBX用戶訪問系統(tǒng)界面來控制自己的功能屬性,例如呼叫記錄,呼叫錄音,個(gè)性化的傳真設(shè)置,分機(jī)隨行設(shè)置。
- 其他第三方附加功能:包括高可靠性設(shè)置,外部應(yīng)用對(duì)接支持,ASR/TTS接口支持,CRM支持,第三方終端自動(dòng)部署設(shè)置等功能。


5、Half-Call 模式具體處理流程
前面我們討論了半呼叫模式的基本概況。這里,我們重點(diǎn)針對(duì)半呼叫模式的四種呼叫模式結(jié)合具體的功能要求說明。筆者再次強(qiáng)調(diào)關(guān)于業(yè)務(wù)流程處理的邏輯順序:
- 首先處理呼叫方的用戶屬性所規(guī)定的功能要求
- 然后處理被呼叫方結(jié)束方功能要求
- 如果被呼叫方無任何用戶屬性所規(guī)定的功能要求,則進(jìn)入到下游處理流程,呼出外部號(hào)碼
- 呼叫發(fā)起方是外部號(hào)碼呼入的話,首先執(zhí)行發(fā)起方用戶屬性規(guī)定的呼叫功能,沒有規(guī)定的功能要求,則呼入到下游被呼叫方,接入內(nèi)部分機(jī)
- 呼叫方被呼叫方都分別具有呼叫方屬性規(guī)定的功能和被呼叫方屬性規(guī)定的呼叫功能。

通過以上圖例可以基本了解半模式呼叫模型的構(gòu)成方式。以上圖例說明了四種呼叫場(chǎng)景:
- 內(nèi)部分機(jī)A呼叫內(nèi)部分機(jī)B,按照Case 1執(zhí)行,作為呼叫方,用戶A首先檢查自己的呼叫方功能要求(例如,執(zhí)行錄音功能),然后IPPBX再次INVITE到被呼叫方測(cè),被呼叫方B檢查自己的被呼叫方用戶屬性,執(zhí)行支持的功能,例如內(nèi)部分機(jī)拒絕接聽。則對(duì)用戶A進(jìn)行掛機(jī)處理,或者返回408等消息。當(dāng)然,我們這里的功能設(shè)置都是假設(shè),用戶屬性規(guī)定的功能要求根據(jù)不同廠家的設(shè)置可能有所不同。
- 內(nèi)部分機(jī)B呼叫內(nèi)部分機(jī)A,按照Case 2 執(zhí)行。這里,用戶B作為發(fā)起方對(duì)用戶A進(jìn)行呼叫,用戶B首先檢查自己呼叫方用戶屬性所規(guī)定的功能要求,例如執(zhí)行呼叫錄音等。IPPBX再次INVITE用戶B到用戶A測(cè),用戶A首先檢查自己的被呼叫方用戶屬性所規(guī)定的功能要求,按照功能設(shè)置的優(yōu)先級(jí)執(zhí)行處理,例如拒絕接聽,或者分機(jī)隨行等功能。
- 作為發(fā)起方的外部呼入,按照Case 4執(zhí)行。如果是外部呼入的呼叫,作為發(fā)起方檢查是否規(guī)定了用戶屬性中的功能處理,如果沒有,則通過IPPBX的INVITE進(jìn)入到下游終端,用戶A的被叫方。用戶A檢查自己的被叫方的功能屬性要求,然后執(zhí)行功能流程。
- 內(nèi)部分機(jī)A呼出到外部號(hào)碼,按照Case 3執(zhí)行。用戶A首先執(zhí)行自己的呼叫方用戶屬性規(guī)定的功能,如果可以執(zhí)行的話(例如呼叫國(guó)際長(zhǎng)途),則IPPBX再次INVITE到被呼叫方,如果被呼叫方?jīng)]有任何規(guī)定的用戶屬性,則進(jìn)入到下游處理流程,呼出到外部電話或者國(guó)際長(zhǎng)途等。
在以上這四種處理流程中,用戶屬性和呼叫角色是隨時(shí)切換的,切換以后的功能要求都必須遵守相應(yīng)的身份來處理,同時(shí)需要按照功能要求的優(yōu)先級(jí)進(jìn)行。因?yàn),很多IPPBX都支持不同的設(shè)置流程,所以,用戶最好對(duì)應(yīng)具體的產(chǎn)品做進(jìn)一步的理解。大部分的IPPBX基本上都是按照撥號(hào)規(guī)則或dialplan來處理呼叫流程。當(dāng)然,其復(fù)雜程度遠(yuǎn)遠(yuǎn)大于我們的示例,很多功能檢查也基本上都隱藏了起來,用戶甚至于感覺不到half-call模式的存在,都是基本上都是遵守這樣一個(gè)處理模式。讀者可以查閱Asterisk或者FreeSWITCH的撥號(hào)規(guī)則通過自己編寫撥號(hào)規(guī)則來理解呼叫流程的控制。

在以上IPPBX的處理過程中,IPPBX本身的業(yè)務(wù)處理扮演著非常重要的角色;赟IP的IPPBX為IPPBX的功能處理增加了很大的靈活性,這樣,IPPBX就可以拓展出很多具體的,新的業(yè)務(wù)功能。筆者認(rèn)為,IPPBX可以支持如此強(qiáng)大的功能,就在于IPPBX支持了SIP的B2BUA功能,IPPBX和B2BUA高度契合才能充分實(shí)現(xiàn)IPPBX的二次處理。

關(guān)于B2BUA的概念和其處理機(jī)制,讀者可以查閱筆者的歷史文檔:
- B2BUA/SBC/Proxy的SIP消息重構(gòu)和RFC7092詳解
- 在此文章中,筆者對(duì)其代理角色做了非常充分的說明。
- 半呼叫模式其實(shí)在早期的智能網(wǎng)發(fā)布時(shí)就已經(jīng)存在。同時(shí)早期的IMS網(wǎng)絡(luò)也使用了此模式。智能網(wǎng)(IN)的版本已經(jīng)發(fā)布了很多,讀者有興趣的話,可以查閱官方文檔來做進(jìn)一步理解。

6、總結(jié)
在本文章中,我們通過漫談的方式對(duì)IPPBX的抽象處理方式half-call 模式做了全面的介紹。首先,我們介紹了IPPBX的一些相關(guān)背景知識(shí),然后介紹了IPPBX發(fā)展歷史過程中幾個(gè)重要的里程碑事件。然后,我們介紹了Half-call model的基本原理,分別介紹了其用戶屬性功能和邏輯處理的流程,筆者重點(diǎn)針對(duì)四種呼叫處理方式做了介紹,通過示例說明了處理邏輯的優(yōu)先級(jí)。最后,特別針對(duì)half-call 模式和B2BUA的高度契合來說明IPPBX的功能靈活性。
最后,筆者說明,half-call模式僅是一種IPPBX呼叫流程的抽象處理機(jī)制,IPPBX廠家產(chǎn)品的具體實(shí)現(xiàn)方式可能有所不同,用戶也可能感覺不到此抽象模型的存在。但是,IPPBX的業(yè)務(wù)處理方式仍然沒有脫離此模式。SIP協(xié)議的使用結(jié)合IPPBX,實(shí)現(xiàn)了B2BUA和half-call模式的高度契合,通過這樣的組合方式,可以連接很多基于物聯(lián)網(wǎng),互聯(lián)網(wǎng),人工智能的接口。因此,IPPBX的處理方式可能更加靈活。
參考資料:
https://signallake.com/innovation/CerfKahnMay74.pdf
https://getvoip.com/blog/2014/01/27/history-of-voip-and-internet-telephones/
https://en.wikipedia.org/wiki/Mark_Spencer_(computer_engineer)
https://documentation.avaya.com/bundle/AdministeringCommunicationManagerServerOptions_r7.1.3/page/Half-call_model.html


關(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
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