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