Asterisk最初是用來搭建一個獨立的系統(tǒng),一個單一的提供所有電話通信的中心。簡而言之,PBX交換機。如今,Asterisk開源電話服務(wù)器用在許多方面——很多應(yīng)用跟PBX完全沒有關(guān)系。Asterisk可以建設(shè)各種應(yīng)用程序。而當(dāng)你采用Asterisk構(gòu)建應(yīng)用的時候,也會很快發(fā)現(xiàn)它有很多局限。Asterisk很難擴展,呼叫狀態(tài)也僅存放在本機上。許多服務(wù)依賴于呼叫狀態(tài)—— 如果在呼叫中心坐席正忙,你需要找到一個可用的坐席。如果到PSTN中繼正在使用中,你可能需要另謀出路。Asterisk SCF框架可能解決這個問題。但這個版本需要一些時間。同時,Asterisk PBX團隊也一直致力于一些其他的方法來分配一組服務(wù)器之間的呼叫狀態(tài)。這篇文章將描述幾個不同的體系結(jié)構(gòu)。
使用OpenAIS來分發(fā)事件狀態(tài)
Russell Bryant已經(jīng)開始建立一個基于OpenAIS的解決方案。側(cè)重于Asterisk服務(wù)器之間的各種事件的內(nèi)在分發(fā)。目前仍處在實驗性的階段,但很有趣。
使用XMPP協(xié)議的狀態(tài)發(fā)布/訂閱
Brad Watkins一直在研究的一個解決方案是使用XMPP的發(fā)布/訂閱功能。這個協(xié)議更多是關(guān)注的呼叫狀態(tài),而Russel的作品更開放給其他信息。比如語音郵件和其他可能的事件——PRI中繼線上落,會議室開放和隊列被激活。
使用SIP分發(fā)狀態(tài)
2010年秋季開始,Brad和oej開始做一個Pinana的項目,Pinana是在Asterisk SIP發(fā)布/訂閱框架的基礎(chǔ)上來分發(fā)設(shè)備狀態(tài)和分機狀態(tài)的項目。 這是兩個不同的東西。 設(shè)備狀態(tài)是一個驅(qū)動通道信號對象,表示狀態(tài)不能到達,不可用,或正在忙。Extension states is an aggregated state - one extension in a server can have a state based on multiple devices.The connection between an extension and a device in Asterisk is called a hint .
使用SIP服務(wù)器分發(fā)狀態(tài)
在Pinana項目中,我們使用一個外部SIP表現(xiàn)服務(wù)器 - Kamailio。 我們首先發(fā)布設(shè)備狀態(tài),使所有集群中的Asterisk服務(wù)器可以訂閱并得到更新。發(fā)布一臺服務(wù)器狀態(tài)的變化會更新一次,Kamailio組中的所有其他服務(wù)器。 This code exist today - the possibility to PUBLISH (in SIP terminology) a device state and SUBSCRIBE to it (as a hint device state provider)。這些狀態(tài)真的只為Asterisk內(nèi)部使用,不為別的。
總結(jié):Asterisk擴展性越來越好
有了這三種不同的方法,Asterisk PBX擴展性是肯定越來越好。 盡管Asterisk SCF正在開發(fā),但是Asterisk仍然有很多事情可以做,以改善我們今天已經(jīng)安裝的用戶,發(fā)展他們的系統(tǒng)。
51asterisk.com