除了前面提到的變數外,還會見到一些符號,通稱為樣式比對(否則就是錯誤輸入了)。
樣式比對通常需要很大的篇幅,這邊直接從範例來介紹:
exten => _NXX,1,Playback(silence/1&auth-thankyou)
- _ 開頭告訴 Asterisk 這段字串是樣式比對
- N 表示 2...9。就像前面的提到的 same => n ... 這段說的 n
- X 表示 0..9
- Z 表示 1..9
接下來說明「list」符號 []. 如果您對 Shell, Perl. 甚至 C, Java 等有了解的話,可以視為 array.....意思就是 [] 括住的『其中之一』.舉例來說 - [123] 就代表 1, 2, 3 其中之一都符合樣式
- [1-9] 則代表 1..9 這九個數字都符合樣式
- [15-7] 則代表 1, 5, 6, 7 這四個數字符合樣式
- . 沒錯,就是一個點 '.' 代表萬用字元,包括英文字也都符合樣式,有些語言的樣式比對用的是 ?
- ! 是的,驚嘆號 '!' 代表零個以上。有些語言的樣式比對用的是 *
_[N]extNXZ 這樣的話,會比對到 Next999 這種字串。
另外,在北美19個國家中,共用一個 NANP 電話號碼表示法如下:
1-NPA-NXX-XXXX, 第一碼的 1 是給北美國家使用的。
exten => _XXX,1,Answer()
same => n,SayDigits(${EXTEN})
對於變數處理,知道 shell script 的人應該知道一種表示法,這邊先說一下,Asterisk 變數表達字串時,最前面的字元所處的索引值是 0, 跟 C 語言的陣列一樣。先來看看實例,如果 ${EXTEN} 值為 123456789 的話.....
${EXTEN:2} 其值為 3456789 表示索引值第 2 以後,所以傳回值是從 3 開始
${EXTEN:3:4} 其值為 4567 表示從索引值 3 開始,長度4個
${EXTEN:-4:2} 其值為 67,表示從後面數來第4個,長度 2個。這邊要知道的是從頭數是 0, 倒數則從 1 開始。
${EXTEN:1:-3} 其值為 23456,表示從索引值 1 開始,去掉後面3個
如果能了解上面幾項的話,應該會發現還算是夠強大了吧?
最後補充在這邊的是,include,沒錯,相當於把另一個 Context 載入到此的意思,語法如下:
include => Context
例如以這幾篇食譜來說,可以自訂一個 Context 如下:
[Custom]
include => TestMenu
還有一個類似的用法是載入檔案,用法如下:
#include "......" <-- c="" p="">
-->
說到這邊不得不提到另一項跟變數+樣式比對相關的問題:
如何在引用時引用『現在的分機號碼』?例如:
exten => _XXX,1,Answer()
same => n,SayDigits(??????)
是的,這個問題能夠解決的話就能夠做出更彈性的設定。
答案是...${EXTEN} 代表目前的分機號
exten => _XXX,1,Answer()
same => n,SayDigits(${EXTEN})
對於變數處理,知道 shell script 的人應該知道一種表示法,這邊先說一下,Asterisk 變數表達字串時,最前面的字元所處的索引值是 0, 跟 C 語言的陣列一樣。先來看看實例,如果 ${EXTEN} 值為 123456789 的話.....
${EXTEN:2} 其值為 3456789 表示索引值第 2 以後,所以傳回值是從 3 開始
${EXTEN:3:4} 其值為 4567 表示從索引值 3 開始,長度4個
${EXTEN:-4:2} 其值為 67,表示從後面數來第4個,長度 2個。這邊要知道的是從頭數是 0, 倒數則從 1 開始。
${EXTEN:1:-3} 其值為 23456,表示從索引值 1 開始,去掉後面3個
如果能了解上面幾項的話,應該會發現還算是夠強大了吧?
最後補充在這邊的是,include,沒錯,相當於把另一個 Context 載入到此的意思,語法如下:
include => Context
例如以這幾篇食譜來說,可以自訂一個 Context 如下:
[Custom]
include => TestMenu
還有一個類似的用法是載入檔案,用法如下:
#include "......" <-- c="" p="">
-->
0 意見:
張貼留言