這些模塊通常都是以.so爲擴展名的文件,這些文件存放在Asterisk的modules子目錄中(通常是/usr/lib/asterisk/modules)。在Asterisk啓動時,它會加載這些文件,把它們的功能添加到系統中。
Asterisk的模塊中,內核部分的文件名是pbx_xxxxx.so。
通道驅動模塊
例如:SIP通道驅動,用於與使用SIP協議的終端設備通信。它爲內核轉換SIP信令。這意味着Asterisk的內核是與信令無關的。因此,Asterisk不僅僅是SIP PBX,它是多協議的PBX。
所有通道驅動都以 chan_xxxxx.so命名,比如說chan_sip.so、chan_dahdi.so
文件格式驅動模塊
Asterisk利用文件模塊從網絡上獲取音頻或視頻,轉換成文件,存儲在磁盤中;反過來從磁盤中讀取文件並轉換爲媒體流。
文件格式模塊以format_xxxxx.so命名,比如說 format_wav.so、format_xxxxx.so
編解碼模塊
編解碼模塊都以codec_xxxxx.so命名,比如說codec_alaw.so、 codec_ulaw.so
Asterisk在接收和發送媒體(音頻和視頻)時,都用到編解碼模塊。這個模塊還完成不同編碼算法間的轉換工作。
Asterisk提供了多種媒體格式的支持,包括:ADPCM, 32kbit/s、G.711 alaw, 64kbit/s、G.711 ulaw, 64kbit/s、G.726, 32kbit/s、G.726, 32kbit/s、GSM, 13kbit/s、LPC-10, 2.4kbit/s。
其它的如G.729A、G.723.1,是需要專利許可的
橋接模塊
從Asterisk1.6.2開始,Asterisk引入了橋接呼叫的一種新方法。它依賴各種橋接模塊,控制爲呼叫參與者間的媒體流混頻方式。新的橋接方式,是一種更靈活、更高效的設計。
橋接模塊以 bridge_xxxxx.so命名,比如bridge_simple.so、 bridge_multiplexed.so.
呼叫事件日誌(Call Event Log)驅動
CEL和CDR類似,但它更側重於記錄在呼叫過程中,Asterisk內部發生了什麼。
CEL記錄呼叫過程中發生的各種事件。正因如此,它通常記錄了比CDR更詳盡的事情。比如說CEL可能會記錄下這樣的內容:ALICE呼叫BOB;BOB的電話在振鈴20秒後,BOB的移動電話響鈴了,再過15秒,呼叫轉到BOB的語音信箱去了,然後ALICE留下一條25秒長的語音留言,然後掛機。系統還能夠自定義需要記錄的事件。
CEL模塊以cel_xxxxx.so命名,比如cel_custom.so、cel_adaptive_odbc.so
呼叫詳細記錄(CDR)驅動
CDR模塊的用途是把呼叫詳細記錄按不同的格式要求存儲。通常每一通呼叫生成一條通話記錄,記錄內容包括主叫、被叫、通話時長等等。
CDR模塊都以cdr_xxxxx.so命名,比如說cdr_csv.so、 cdr_pgsql.so
撥號規則應用模塊
Application爲系統提供呼叫相關的功能。這些應用可能是應答、播放提示音、掛機等功能。
應用模塊爲系統提供呼叫功能。 所有應用模塊,都以app_xxxxx.so命名
(1)/etc/dahdi/system.conf 板卡信息配置
[root@localhost ~]# cat /etc/dahdi/system.conf
span=1,1,0,ccs,hdb3
bchan=1-15,17-31
dchan=16
echocanceller=none //消除回聲
loadzone =cn
defaultzone =cn
一個span對應一個E1話路,第一個1表示E1編號,第二個1表示時鐘源爲主,ccs是frame格式,hdb3是編碼格式;
bchan:話路,數據通道,30個時隙
dchan:信令,分組信息通道,第16時隙
(2)/etc/asterisk/chan_dahdi.conf PRI協議模塊的參數配置
[root@localhost ~]# cat /etc/asterisk/chan_dahdi.conf
[trunkgroups]
[channels]
context=from_pri //與extensions.conf中的from_pri對應
switchtype = euroisdn //交換機類型,說明PRI信令採用歐洲標準
;switchtype = national
;pridialplan=national
signalling = pri_cpe //信令類型,用戶側;pri_net表示網絡側
;pri_net:net, pri_cpe:user
group=1
channel => 1-15,17-31 把這個E1的30條話路分到分組1
echocancel=no
echocancelwhenbridged=no