Asterisk 1.4系のマシンの構成が変わった。
知らない間にウィルコムのアダプタが取り外されて、ISDNのTAから来ている2本のアナログ回線に変わっていたのだ。
TDM400Pで外線収容できるのは3本。
4つあるポートのうち、1つはFXS装置で、残り3つがFXOになっているので、空きは1つの状態。
zapata.conf では、今回の2本は同じグループとしての設定を実施。
このISDNは、NTT系ではなくソフトバンク系のお得ラインになっているので、ソフトバンクへの通信が無料になっている。
まずは、この特番を作成だ。
;;6001
exten => 6001,1,Dial(ZAP/g1,30,r)
exten => 6001,2,Answer
exten => 6001,n,Congestion
exten => 6001,n,Hangup
exten => 6001,102,Busy
というようなシンプルな感じ。
これでソフトバンク携帯に電話してみると…問題なしだね。
iPhoneで試してみたいところだけど、ソフトバンクさんからは送付されてきていないそうなので、わたし自身で着信テストができませぬ。
ソフトバンク携帯からの着信は、料金がかかるみたいなんで、ソフトバンク携帯を持っている社長さんとしてはコールバックで会話がしたいらしい。
Asterisk PBXに接続できれば、ひかり電話でも、VoIP経由でも、お得ライン回線からでも発信できるし、内線もできてしまうので楽しいのでしょうな。
それと、GXW4104経由で、VoIPアダプタ経由で海外のVoIPプロバイダ経由で海外に電話するケースでは、料金固定制で電話ができてしまうので、海外の特定地域には電話掛け放題に近いのだ。社長さんのソフトバンク携帯の利用度があがりそうだよね。
コールバックには 単純にスプール方式を使うことにした。
TDM400Pにコールされた電話を話中にすることがうまくできなかったので、1切りに近い状態で切ってくれれば、10秒で空き回線からコールバックをするようにした。
これはAsteriskでは難しいことではない。
exten => s,n,GotoIF($[${CALLERIDNUM:-11}= (携帯電話の電話番号)]?callback,s,1)
のような行を必要なだけ並べ、
[callback]
のセクションの最後に、
exten => h,1,DeadAGI(callback.agi|${CALLERIDNUM})
exten => h,2,Hangup
とか書いてAGIに処理をお願いすればいいだけだね。
callback.agiは、最初Perlで書いてみていたんだけど、拡張性を求められていることでもなかったので、普通にシェルで書いて終わりにした。
#!/bin/sh
ARGV1=$1
/usr/bin/touch /var/asterisk/$ARGV1
/bin/sleep 10
/usr/bin/sed "s/@@@1@@@/$ARGV1/g" /usr/local/etc/asterisk/callback.call > /var/spool/asterisk/outgoing/callback.call.$$
exit
こんなだ。
要するに、callback.call というひな形の、コールバック先に相当する電話番号部分を @@@1@@@ として作成しているものを置いてあるのだ。
これをsedで書き換えて、リダイレクトでぶちこんでいるだけ、という単純なものにしたのだ。
/var/asterisk というディレクトリはおまけとして、最後に処理した電話番号についてのタイムスタンプがみれるようにしただけ。あまり使われていない電話番号の登録はこれを見て削除してしまおうという目的だけだね。
実際に試すとちゃんとうまくいく…のだけれど、ソフトバンク以外の番号にもコールバックしちゃうんだよね。ナンバーポータビリティのおかげで、電話番号だけで識別できないもんなー。発信直後に出るトーン音がこれがまた邪魔で、Asteriskが勘違いしたりするのでやれやれって感じだったけど、利用者が決まっている仕組みなので細かいことはしなかった。
お得ライン経由の通話は、遅れもないし、音質はかなり良好であり実用の範囲だね。
ウィルコムを利用していたユーザからは多少クレームあったらしいけど、どうやらもうウィルコムの回線契約を解除しているらしいし、興味はそっちなのだろうなぁ。
現在のAsteriskマシンは、いろいろな回線に接続できるので便利だけどユーザに対する負荷試験は完了できていないままだ。どこかで試してみたいな。
ところで、昨晩はおまけで、中国人ユーザ用にサウンドをつっこんでみた。
反応は誰からも来ないけど、日本語でも英語でもないエラーサウンドにどういう反応になったかはそのうちのお楽しみだな。(内容が本当に正しいものになっているかは知らない。シェイシェイっていうのだけはわかるけど…)