着信後の分岐

着信後の分岐

前回の記事では着信後にサウンドファイルを再生させるダイヤルプランを作成しました。
今回は、着信後のダイヤル操作により再生させるサウンドを変更させるダイヤルプランを作成していきます。



Background()・Goto()アプリケーション

サウンドファイルを再生させるアプリケーションとして前回の記事でPlayback()アプリケーションを紹介しましたが、もうひとつそれに似た働きをするアプリケーションがあります。

まずは「extensions.conf」の下行に以下のように記述してください。

exten => 203,1,Answer()
exten => 203,2,Background(vm-toenternumber)

保存してファイルを閉じたらAsteriskを再起動させます。

/etc/rc.d/init.d/asterisk restart

この状態で「203」に発信すると「vm-toenternumber.gsm」ファイルのサウンドが再生されます。
ここまではPlayback()アプリケーションと変わりありません。

では今度は以下のように記述してください。

exten => 203,1,Answer()
exten => 203,2,Background(vm-toenternumber)
exten => 1,1,Playback(digits/1)
exten => 1,2,Goto(default,203,1)
exten => 2,1,Playback(digits/2)
exten => 2,2,Goto(default,203,1)
exten => 3,1,Playback(digits/3)
exten => 3,2,Goto(default,203,1)

Asteriskを再起動させ、「203」に発信すると同じようにサウンドが再生されます。
そのサウンドが再生されている際に、「1」をダイヤルしてください。

すると、「ワン」という音声が聞こえます。
その後、もう一度、初めのサウンドが再生されます。
その際、次は「3」をダイヤルしてください。
今度は「スリー」と読み上げられます。
そしてもう一度、初めのサウンドが再生されます。

ここまでで、着信後にダイヤルする番号によって動作が分岐していることがわかると思います。

この動作はBackground()とGoto()アプリケーションによって実現しています。

Background()
サウンドファイルを再生する。再生中にダイヤル操作を受け付ける。

Goto()
呼を他のコンテクスト、エクステンション、プライオリティに送る。
複数の引数を取り、引数の数によって下記のような意味を持つ。
引数1つ:現在のエクステンション内の行き先プライオリティを指定。
引数2つ:現在のコンテクスト内の行き先エクステンションとプライオリティを指定。
引数3つ:行き先のコンテクスト、エクステンション、プライオリティを指定。

補足:上記のダイヤルプランで「2」をダイヤルしたときに「1」や「3」をダイヤルしたときと比べ、サウンド再生までの反応が遅くなっていると思います。
これは2から始まるエクステンション(202や203)が他に存在するため、続けてダイヤルされるかどうかを待っているからです。

タグ