撥號方案語法
Asterisk的撥號方案在文件extensions.conf中定義(/etc/asterisk/extensions.con)
extensions.conf(四部分:context,extension,priorities,application)
context:用於對extensions組命名,把撥號方案的不一樣部分進行分離,省得交織在一塊兒.
表示方法是把名字放在[]的中間,名字只能用a~z,A~Z,0~9,以及連字號和下劃線組成(空格不在容許的字符裏面,context中不要使用空格).如:[context1],[incoming],[default];全部放在context定義的以後的指令都是這個context一部分,直到下一個context定義的開始.
context的一個重要用途就是增強安全性.若是沒有仔細設計撥號方案,可能會形成別人盜用你的系統的不良後果.
extensions:extensions是asterisk要執行的指令,由來電或通道上所撥數字來觸發.能夠定義電話分機
extension的語法是單詞exten後面跟着一個由等號和大於號組成的箭頭,如:exten => extension的名字
一個完整的extension由三部分組成: git
extensions的名字或號碼 priority(每一個extension能夠有多個步驟,步驟的編號稱做priority) |
exten => name,priority,application() |
exten=>50001,1,Answer() #編號爲1的priority,執行接聽電話 exten=>50001,2,Hangup() #編號爲2的priority,而後掛電話 |
exten => 601,1,Dial(Zap/1&SIP/50000&IAX/60000) |
exten => 601,1,Dial(SIP/50000,30,Ttwr) |
exten => 601,1,Dial() exten => 602,1,Dial(Zap/1/5732381) |
exten => 601,1,Dial(SIP/60000,,T) 或 exten => 601,1,Dial(SIP/60000) |
[test] exten => s,1,Answer() exten => s,2,Background(enter-ext-of-person) exten => 601,1,Dial(Zap/1,30,Ttrw) exten => 601,2,Playback(vm-nobodyavail) exten => 601,3,Hangup() exten => 601,102,Playback(tt-allbusy) exten => 601,103,Hangup() exten => 602,1,Dial(SIP/50000,30,Ttrw) exten => 602,2,Playback(vm-nobodyavail) exten => 602,3,Hangup() exten => 602,102,Playback(tt-allbusy) exten => 602,103,Hangup( ) exten => i,1,Playback(pbx-invalid) exten => i,2,Goto(test,s,1) exten => t,1,Playback(vm-goodbye) exten => t,2,Hangup() |
[globals] 80000=Zap/1 或 [internal] exten => 123,1,SetGlobalVar(80000=Zap/1) |
exten => 601,1,Set(80000=Zap/1) |
[globals] PSTN=Zap/1 TEST=SIP/80000 [test] exten => s,1,Answer() exten => s,2,Background(enter-ext-of-person) exten => 101,1,Dial(${PSTN},10) exten => 101,2,Playback(vm-nobodyavail) exten => 101,3,Hangup() exten => 101,102,Playback(tt-allbusy) exten => 101,103,Hangup() exten => 102,1,Dial(${TEST},10) exten => 102,2,Playback(vm-nobodyavail) exten => 102,3,Hangup() exten => 102,102,Playback(tt-allbusy) exten => 102,103,Hangup() exten => i,1,Playback(pbx-invalid) exten => i,2,Goto(incoming,s,1) exten => t,1,Playback(vm-goodbye) exten => t,2,Hangup() [default] exten => 101,1,Dial(${PSTN},,r) exten => 102,1,Dial(${TEST},,r) |
X:匹配 0-9 的任何數字; Z:匹配 1-9 的任何數字; N:匹配 2-9 的任何數字; .(句號)通配符,匹配一個或多個字符; [15-7]:匹配1,5,6,7; |
exten => _9XXXXXXX,1,SayDigits(${EXTEN}) ;SayDigits()應用會把所撥的8位extension讀出來 exten => _9XXXXXXX,1,SayDigits(${EXTEN:1}) ;只讀出來後7位數,其中"1"表示不撥前面1位數 exten => _9XXXXXXX,1,SayDigits(${EXTEN:-1}) ;只讀出來最後1位,其中"1"表示只撥出最後1位數 |
---本地去話撥號--- [outbound-local] ignorepat => 9 exten => _9NXXXXXX,1,Dial(Zap/1/${EXTEN:1}) exten => _9NXXXXXX,2,Congestion() exten => _9NXXXXXX,102,Congestion() ---再加入緊急電話撥號--- exten => 9119,1,Dial(Zap/1/119) exten => 119,1,Dial(Zap/1/119) exten => 9110,1,Dial(Zap/1/110) exten => 110,1,Dial(Zap/1/110) ---長途電話撥號--- [outbound-long] exten => _90NXXNXXXXXX,1,Dial(Zap/1/${EXTEN:1}) exten => _90NXXNXXXXXX,2,Congestion() exten => _90NXXNXXXXXX,102,Congestion() |
[internal] include => outbound-local include => outbound-long exten => _80XXX,1,Dial(SIP/${EXTEN},30,r) exten => _80XXX,2,Playback(vm-nobodyavail) exten => _80XXX,3,Hangup() exten => _80XXX,102,Playback(tt-allbusy) exten => _80XXX,103,Hangup() |
$[expression] $[${COUNT} + 1] $[${COUNT} / 2] ;引用變量,必須把這個變量名用花括號"{}"括起來,並且在前面加上美圓符號"$" 標示出來 |
${FUNCTION_NAME(argument)} |
${FUNCTION_NAME(${FUNCTION_NAME(argument)})} |
exten=>123,1,set(TEST=example) ;賦值example變量給TEST exten=>123,2,saynumber(${LEN(${TEST})}) ;計算出變量TEST長度,並讀出長度數 結果是:7 |
exten=>s,1,set(TIMEOUT(digit)=30) |