星期一, 5月 28, 2007

Asterisk extensions.conf (二)

extensions.conf

設計撥號規則 (二)
-----------------------------------------------------------------
通常我們會將 extensions.conf 切分成好幾個檔,
然後再 include 進來 , 這樣比較好做規劃

例如: 將從 FXO 進線的撥號規則存入 fxo_incoming.conf ,
從 SIP 進線的撥號規則存入 sip_incoming.conf

在 extensions.conf 中 , 就可以用
;;; For fxo incoming
#include fxo_incoming.conf
;;; For sip incoming
#include sip_incoming.conf
將其檔案 include 進來 , 另外要注意的是有另一種 include ,
是 include context , 而非 include 檔案

例如在 extensions.conf 中

[test_context]
exten => 1234,1,Answer
.....
.....
;;; include context : test2_context
include test2_context

[test2_context]
exten => 2345,1,Answer
....
....

即表示 context [test_context] , 包括 [tests_context] 這個 context 內容
亦即 context [test_context] 設定為
exten => 1234,1,Answer
.....
.....
exten => 2345,1,Answer
....
....

--------------------------------------------------------------------------------
Asterisk 使用以下特殊用途 extension 名稱:

* i : 使用者按下沒有定義的 extension 號碼
* s : Start extension in context
* h : Hangup extension
* t : Timeout extension
* T : AbsolutTimeout() extension
* o : Operator extension, used for operator exit by pressing zero in voicemail
--------------------------------------------------------------------------------
Macro (巨集)
範例:
Using a macro to create extensions
[globals]
PHONE1=Zap/1
PHONE2=SIP/6002

;;; Macro(oneline,${PHONE1},${PHONE2},${PHONE3}....)
;;; ${ARG1} 就等於 ${PHONE1} , ${ARG2} 就等於 ${PHONE3} 依此類推 ...
[macro-oneline]
exten => s,1,Dial(${ARG1},20,t)
exten => s,2,Voicemail(u${MACRO_EXTEN})
exten => s,3,Hangup
exten => s,102,Voicemail(b${MACRO_EXTEN})
exten => s,103,Hangup

[local]
exten => 6601,1,Macro(oneline,${PHONE1})
exten => 6602,1,Macro(oneline,${PHONE2})

星期三, 5月 23, 2007

Asterisk extensions.conf (一)

Asterisk 可說是目前當紅的 open source IP PBX
詳細說明可至 http://www.voip-info.org/wiki/view/Asterisk 查看

接下來將會以我所知來說明 Asterisk 的設定與運用

extensions.conf

設計撥號規則

內容如下:

;;;撥號規則的環境變數
[general]
;;;預設為 no
static=yes
;;;預設為 no , 如果 writeprotect=no 且 static=yes , 則當在 CLI command 模式中, 執行 save dialplan,
;;;將會儲存目前的撥號規則設定
writeprotect=yes
;;;如果設定為 yes , 則系統將會依據其判斷猜測其為 BUSY,CONGENSTION或HANGUP而終止通話斷線,強烈建議設定為yes
autofallthrough=yes
;;;若設定為 yes, 則執行 extensions reload 時 , 將會清除通用變數的資料
clearglobalvars=no
;;;
priorityjumping=no

;;;撥號規則的通用變數
[globals]
;;; 設定 INCOMING 變數等於 Zap/3&Zap/4
;;; 於撥號規則內可用 ${INCOMING} 來運用 (變數名稱不分大小寫 , 也就是 ${INCOMING} 相當於 ${incoming})
INCOMING => Zap/3&Zap/4
;;; 撥號規則是由一推的 contexts 所組成 , 每一個 context 由一推的 extensions 組成
;;; 例如以下: [sip_outgoing] 即是一個 context
[sip_outgoing]
;;; exten = extension,priority,Command(parameters) (使用 = 或 => 都可以)
extension => 123,1,Answer
extension => 123,2,Dial(SIP/456,30)
extension => 123,3,Hangup
;;; Pattern , 在 extension 中第一個字為 _ 時 , pattern 才有作用
;;; X 表示 0 至 9
;;; Z 表示 1 至 9
;;; N 表示 2 至 9
;;; [1237-9] 表示 1,2,3,7,8,9
;;; . 表示一個或多個任意字
;;; ! 表示 0 個或多個任意數
;;; 例如以下表示所有 4 位數字的都符合
extension => _XXXX,1,Answer
extension => _XXXX,2,Dial(SIP/567,30)
extension => _XXXX,3,Hangup