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