Asterisk Gateway Interace (AGI)
Asterisk 提供了名為 Asterisk Gateway Interface (以下簡稱為 AGI) 的功能,開發者可能以透過 Dialplan
以外的工具或程式 (E.g. Perl, Shell Script,C++, Java, PHP, Mono, etc….)來開發Asterisk的應用程序
,控制Asterisk 的 telephony channel,包括Play music,讀寫DTMF等等。
AGI 是一個獨立程式,Asterisk 會經由Dialplan 調用 AGI() 這一程式來執行AGI。它執行後便會用 stdin
和 stdout 來控制Asterisk。直至那 channel 收線為止。
AGI 在Asterisk 下,會根據本身的用途和行為特徵分了四種類型。
1, AGI - AGI 應用程序是與Asterisk 一同在本機內執行。
2, EAGI - 有別於 AGI,它除了用 stdin 和 stdout 外,它還會把 音訊輸出到 File descriptor 3。其他應用程式可以用它的
File descriptor 3來搜取這channel 的音訊。
3, FastAGI - 用 TCP 和 port 4537 來連接 AGI。因此這樣AGI 程式是可 以安裝在網路上不同時的機器上。
4, DeadAGI - 這特別的AGI 只有在channel 掛線後才會起作用。
可參考以下的網址進一步認識 AGI
http://www.voip-info.org/wiki-Asterisk+AGI
以下網址除了有AGI的語法外,還有各種範例提供
http://home.cogeco.ca/~camstuff/agi.html
Fast AGI 的實例
上月,我幫建設了一個基於Asterisk的電話系統。因為這電話系統的需求是:
1, 平衡負載 - 這系統有多部 Asterisk 同一時間接聽電話,和收發傳真。
倘若有其中一部出現問題時,其他 Asterisk 也可以在那時間分擔任務。
2, 我朋友的公司是從事電話服務系統相關的業務。因為那電話系統的流量極大,
如果程式要在Asterisk Box 裏運行,那會加重Asterisk 的負擔。而且朋友想
簡化系操作和維護程序,所以我自行開發了一個 Fast AGI Server (Application Server) 在某一伺服器上獨立執行。所有Asterisk Box 將會用Fast AGI 連接這台伺服器。因此,所有Call Flow,Business Logic,和其他與電話底層不相關的模組
會全部由 Fast AGI Server 負責。而Asterisk 只負責電話底層的任務。
下一篇我會詳細介紹Fast AGI的運作和開發的要點。
[@more@]
Posted: 八月 6th, 2008 under 系統設定, 開發.
Tags: AGI