AsteriskでIVR(自動音声案内)を行う

最近Asteriskばっかりいじっているので、今日はIVR(自動音声案内)を作成するにはどうしたらいいか、というのをやってみたいと思います。
なお、http://voip-info.jpを参考にしました。

{extensions.conf}

[mainmenu]
exten => s,1,SetVar(CNT=1)
exten => s,2,Ringing
exten => s,3,Wait,1
exten => s,4,Answer
exten => s,5,Wait,1
exten => s,6,Background(vm-enter-num-to-call)
exten => s,7,WaitExten(10)
exten => s,8,GotoIf($[${CNT} >= 3]?11:9)
exten => s,9,SetVar(CNT=$[${CNT} + 1])
exten => s,10,Goto(s,6)
exten => s,11,playback(tt-monkeysintro)
exten => s,12,Hangup
exten => s,13,Congestion

include => inner

exten => i,1,Wait(1)
exten => i,2,GotoIf($[${CNT} >= 3]?6:3)
exten => i,3,SetVar(CNT=$[${CNT} + 1])
exten => i,4,Playback(pbx-invalid)
exten => i,5,Goto(s,7)
exten => i,6,playback(tt-monkeysintro)
exten => i,7.Hangup
exten => i,8,Congestion

外線から来た電話を上記のs,1に飛ばせばメニューとして機能します。
ひかり電話と050番号をまとめるページの通りにあるextensions.confに入れるならば、以下のような感じ。

[fromiptel] exten => ${IPTEL},1,Goto(mainmenu,s,1)

こうすることで、050番号にかかってきた電話はIVRに接続され「内線番号を入力して下さい。」といった案内を流します。

さらに、内線番号を間違えたり、指定した時間内に内線番号の入力がない、といったことが3回あると、回線が自動的に切られます。
(CNTをカウンタ変数として利用し、3以上になったら切断処理に入ります。)