より現実的なダイヤルプランの実装
外線発信 |
|
これまでは、Asteriskをインストールした後にちょっとテストするのに使う程度の設定を
紹介してきましたが、ここでもう少し現実に近い感じの設定例を示しておきます。
[general] | |
static=yes | |
writeprotect=no | |
clearglobalvars=no | |
| |
[globals] | |
EXTTRUNK1=Zap/g1 | ←内線トランクグループ1 |
EXTTRUNK2=Zap/g2 | ←内線トランクグループ2 |
OUTTRUNK1=Zap/g3 | ←外線トランクグループ1 |
OUTTRUNK2=Zap/g4 | ←外線トランクグループ2 |
SIPTRUNK=SIP | ←SIPトランク |
| |
[macro-ROUTE-OUTDIAL] | ←外線発信用マクロ |
; ARG1 = TRUNK TYPE
| ←パラメータ1=トランク種別 |
exten => s,1,NoOp("route OUTDIAL") | |
exten => s,n,SetMusicOnHold(native) | ←保留音再生方法選択 |
exten => s,n,Dial(${ARG1}/${MACRO_EXTEN:1},,tT) | ←(※1)ダイヤル |
exten => s,n,Playtones(busy) | ←ビジー音再生 |
exten => s,n,Wait(2) | ←待ち2秒 |
exten => s,n,StopPlaytones() | ←ビジー音停止 |
exten => s,n,Hangup | ←切断 |
| |
[macro-ROUTE-INVALID] | ←無効番号用マクロ |
exten => s,1,NoOp("route INVALID") | |
exten => s,n,Answer() | |
exten => s,n,Playtones(busy) | |
exten => s,n,Wait(2) | |
exten => s,n,StopPlaytones() | |
exten => s,n,Hangup | |
| |
[office-A] | ←(※2) |
exten => _0.,1,Macro(ROUTE-OUTDIAL,${OUTTRUNK1}) | ←外線発信(0+電話番号) |
exten => _1!,1,Macro(ROUTE-INVALID) | ←無効番号 |
exten => _2!,1,Macro(ROUTE-INVALID) | ←無効番号 |
exten => _3!,1,Macro(ROUTE-INVALID) | ←無効番号 |
exten => _4!,1,Macro(ROUTE-INVALID) | ←無効番号 |
exten => _5.,1,Macro(ROUTE-OUTDIAL,${EXTTRUNK1}) | ←内線発信(5+内線番号) |
exten => _6!,1,Macro(ROUTE-INVALID) | ←無効番号 |
exten => _7!,1,Macro(ROUTE-INVALID) | ←無効番号 |
exten => _8!,1,Macro(ROUTE-INVALID) | ←無効番号 |
exten => _9!,1,Macro(ROUTE-INVALID) | ←無効番号 |
|
|
※1 | ${MACRO_EXTEN:1}は電話番号の左1文字を削除 |
※2 | このセクションで0発信から9発信までの動作を定義する |
|
受電の考慮 |
|
今度は、外線からの着信を考慮します。
まだまだ複雑なことはできませんが、
動作イメージとしては、着信したらメッセージを再生して、その後、番号のダイヤル待ちになって
ダイヤルされた番号によって処理を分けるという感じでしょうか。
よく言う「IVR(自動音声応答)」の機能です。
[general] | |
static=yes | |
writeprotect=no | |
clearglobalvars=no | |
| |
[globals] | |
EXTTRUNK1=Zap/g1 | |
EXTTRUNK2=Zap/g2 | |
OUTTRUNK1=Zap/g3 | |
OUTTRUNK2=Zap/g4 | |
SIPTRUNK=SIP | |
| |
[macro-ROUTE-OUTDIAL] | |
; ARG1 = TRUNK TYPE
| |
exten => s,1,NoOp("route OUTDIAL") | |
exten => s,n,SetMusicOnHold(native) | |
exten => s,n,Dial(${ARG1}/${MACRO_EXTEN:1},,tT) | |
exten => s,n,Playtones(busy) | |
exten => s,n,Wait(2) | |
exten => s,n,StopPlaytones() | |
exten => s,n,Hangup | |
| |
[macro-ROUTE-INVALID] | |
exten => s,1,NoOp("route INVALID") | |
exten => s,n,Answer() | |
exten => s,n,Playtones(busy) | |
exten => s,n,Wait(2) | |
exten => s,n,StopPlaytones() | |
exten => s,n,Hangup | |
| |
[IVR-MAIN] | |
exten => s,1,NoOp("route INBOUND") | |
exten => s,n,Background("番号をダイヤルしてください") | ←音声を用意してください |
exten => s,n,WaitExten(20) | |
exten => s,n,Hangup | |
exten => 1,1,NoOp("1 dialed:play message") | ←1がダイヤルされたときの動作 |
exten => 1,n,BackGround(demo-congrats) | ←メッセージ再生 |
exten => 1,n,Hangup | |
exten => 2,1,NoOp("2 dialed:all call") | ←2がダイヤルされたときの動作 |
exten => 2,n,Dial(${EXTTRUNK1}&${EXTTRUNK2},,tT) | ←番号を&でつなぐことで一斉コール |
exten => 2,n,Hangup | |
| |
[office-A] | |
exten => s,1,NoOp("Inbound Call") | ←着信時、ここから実行される |
exten => s,n,goto,IVR-MAIN|s|1 | ←別のコンテキストへジャンプ |
exten => s,n,Hangup
| |
exten => _0.,1,Macro(ROUTE-OUTDIAL,${OUTTRUNK1}) | |
exten => _1!,1,Macro(ROUTE-INVALID) | |
exten => _2!,1,Macro(ROUTE-INVALID) | |
exten => _3!,1,Macro(ROUTE-INVALID) | |
exten => _4!,1,Macro(ROUTE-INVALID) | |
exten => _5.,1,Macro(ROUTE-OUTDIAL,${EXTTRUNK1}) | |
exten => _6!,1,Macro(ROUTE-INVALID) | |
exten => _7!,1,Macro(ROUTE-INVALID) | |
exten => _8!,1,Macro(ROUTE-INVALID) | |
exten => _9!,1,Macro(ROUTE-INVALID) | |
|
|
|
営業時間 |
|
日付や時間によって動作を変えたいときのサンプルです。
営業時間外は受け付けたくないようなときに便利です。
exten => s-TCONOK,1,NoOp("Time Control") | |
exten => s-TCONOK,n,GotoIfTime(9:00-18:00|mon-fri|*|*?s-OPENOK,1) ←ここで時間チェック | |
exten => s-TCONOK,n,BackGround(月曜から金曜日の午前9時から午後5時の間におかけ直しください) | |
exten => s-TCONOK,n,HangUp | |
; | |
exten => s-OPENOK,1,NoOp("LABEL-OPENOK") | |
exten => s-OPENOK,n,BackGround(XXXにお電話ありがとうございます) | |
|
|
|
|