- 作者:james.zhu(james.zhu@hiastar.com) www.hiastar.com 微信公眾號:asterisk-cn
- Asterisk課堂-如何通過源代碼安裝方式安裝Asteisk/dahdi
- Asterisk課堂-系統(tǒng)部署環(huán)境要求
- asterisk課堂-Asterisk技術架構(gòu)
CORE, Codecs, Functions, Applications, Resources, Formats, Channel drivers
CORE 模塊從字面意思就可以理解,它是Asterisk的核心模塊,負責控制管理配置文件,系統(tǒng)時鐘,通道管理等等任務。文件格式為so 命名。系統(tǒng)默認配置文件路徑可參考官方文檔,當然用戶也可以修改配置文件來保存系統(tǒng)的so 文件路徑。
Channel drivers 負責和Asterisk通信接口的通信,例如Asterisk語音卡的chan_dahdi.so 文件,此文件控制語音板卡的應用層配置。chan_sip.so 文件,此模塊控制舊版本的SIP協(xié)議,用戶呼入呼出通過SIP配置來和SIP通信設備進行呼叫。目前官方已經(jīng)使用了PJSIP,所以未來的SIP 通道驅(qū)動器就是chan_pjsip.so 文件。還有官方自定義的IAX2 通道,就是chan_iax.so 文件,此文件負責IAX 終端和IAX2 trunk的控制,實現(xiàn)和其他Asterisk系統(tǒng)對接。
Formats 負責系統(tǒng)對媒體文件寫入到系統(tǒng)存儲介質(zhì)中,可以實現(xiàn)對不同語言編碼的支持。
Codecs負責語音編碼規(guī)則的處理,來控制通話過程中不同語音編碼轉(zhuǎn)換和算法的處理。如果呼叫是否存在語音編碼不一致的情況,需要Codecs 模塊進行轉(zhuǎn)換協(xié)商。
Applications 模塊包括了很多撥號規(guī)則中的應用模塊,主要用在對呼叫通道的處理,例如dial,playback,voicemail的處理。
Functions 模塊負責獲得或設置呼叫通道數(shù)據(jù)等功能,例如讀取CDR數(shù)據(jù),讀取來電顯示號碼,利用數(shù)學函數(shù)進行號碼變換或者其他計算。
Resources 模塊是一個靜態(tài)模塊,實現(xiàn)對其通道的資源共享,例如對通道播放音樂等待,或者對呼叫通話通道進行錄音,這時就需要res 前綴的模塊,例如res_musiconhold.so, res_monitor.so。
CLI,AMI,AGI 接口控制Asterisk呼叫流程。Asterisk CLI 命令是一個管理員命令,用戶可以通過SSH,登錄到Asterisk系統(tǒng),執(zhí)行CLI命令來檢查排查系統(tǒng)問題,發(fā)起呼叫,設置其他變量。AMI 是一個管理員接口,可以實現(xiàn)對Asterisk 發(fā)起呼叫,在呼叫中心開發(fā)中可以實現(xiàn)定期發(fā)起呼叫,隊列檢測,坐席檢測等等功能。用戶可以非常靈活地通過開發(fā)語言例如PHP,Java 等等開發(fā)第三方程序。AGI是在撥號規(guī)則中執(zhí)行的一種接口控制方式,可以對呼叫進行各種處理。支持各種Linux 腳本語言實現(xiàn)強大靈活的呼叫控制。網(wǎng)上有很多關于AMI/AGI 的開發(fā)實例,用戶可以下載測試。
以上僅介紹了Asterisk核心架構(gòu)中的一些關鍵技術點,可以幫助用戶快速了解Asterisk基本流程和基本概念。更多技術細節(jié)我們在未來的章節(jié)中會逐一介紹。