拖很大的文章
前面的文章有提到asterisk 有提供GUI 但是其實真的有彈性的做法是不建議使用GUI,請直接編輯設定檔
下面要介紹重要的設定檔,以及asterisk 的設計概念。
1.1 [asterisk的設計理念]
如同之前的文章所說 asterisk 的開發理念是連結所有的通話協定 (連最難搞的skype 也OK了)

如上圖所見,asterisk 位於中心,所連結的協定就像是*字符號,這就是 asterisk 的命名由來。
1.2 [設定檔的架構]
以下為主要的設定檔架構,asterisk 的設定檔 放置於 /etc/asterisk中

dahid - 與語音卡驅動程式連結的設定檔
sip - 目前最有前景的VOIP協定
skype - 就....SKYPE
mgcp - cisco 的電話協定
unistim - Nortel 的電話協定
iax - asterisk 的通話協定 目前已經被列入RFC 5456
其實還有很多設定檔,但是我只列出比較重要的幾個出來。
2.1 [開始設定dahdi]
假定您從網路上購買了 語音卡 回來,且已經自行安裝編譯好了,那你要先設定 dahdi 驅動程式的設定檔,
設定檔位於 /etc/dahdi/system.conf
請依照您購買的硬體填寫:
#(FXO Port)
fxsks =1
loadzone=us
defalutzone=us
channels=1
#(FXS PORT)
fxoks =2
loadzone=us
defalutzone=us
channels=2
echocanceller = mg2,1-2 #(後面的1-2為Port Number,代表port 1 至Port 2 的echo canceller 使用mg2 )
至此為止,已經完成了Dahdi的硬體設定,接下來要設定讓asterisk 可以正確的連結至硬體。
2.2 [開始設定asterisk]
設定完dahdi 裝置後,就要設定連結至asterisk了
設定檔為chan_dahdi.conf
首先先找到
#group=0 這個設定值
然後將它改成
group=0 (將1-4port的fxo 都設為一個群組,方便撥出時可以循線撥號)
signalling=fxs_ks (協定設定為fxs_ks)
context=income_call (電話撥入時,參考 income_call 這個class)
channel => 1-4 (將設定值部屬到1至4Port上)
OK~~ 到目前為止,撥入到asterisk pbx 的部分已經完成,執行asterisk 後,將電話撥入,應該可以聽到一個女生的提示你現在撥入的是asterisk pbx
3.1 [新增 SIP user]
設定檔為 /etc/asterisk/sip.conf
請在檔案的最後面加入
[1001] ;分機號碼
type=friend
secret=yourpassword ;密碼
host=dynamic
context = out_call (撥出時要依據的class)
canreinvite=yes (通話時RTP封包不會經過asterisk 的處理)
qualify=yes (由asterisk來監控是否延遲過大,預設超過兩秒就會斷線)
disallow=all (只允許使用ulaw CODEC)
allow=ulaw
如果有需要更多的帳號,請自行發揮吧
3.2 [新增撥號處理Class]
設定檔為 /etc/asterisk/extensions.conf
剛剛上面文章有提到 context =xxxx,這個指的是撥號時要處理的步驟。
請在extensions.conf 的最後面加上
;dahdi撥入時,將1001分機 以及 1002分機 同時響鈴
[income_call]
exten => s,1,answer()
exten => s,2,dial(sip/1001&sip/1002)
exten => s,3,hangup()
;撥出時,由dahdi 的Port 循線撥出
[out_call]
exten => _xxx,1,dial(dahdi/r0/${EXTEN})
exten => _xxxx,1,dial(sip/{EXTEN})
exten => _xxxxx.,1,dial(dahdi/r0/${EXTEN})
至此應該可以從市話接收到正常的呼入,以及可以正常的撥出了。
接下來就是重點了,要如何接入節費電話咧。
來看看目前有幾種解決方案
1. SIP (二類電信業者)
2. SKYPE
------------------------------我是分隔線---------------------------------
拖很大的文章~~~ 抱歉 待續