この記事では,Asterisk を利用したIP電話交換機にNTT互換の時報機能を組み込むことができる新たな方法を紹介します。
動機
- 無料でかけられる時報をつくりたい
- Asterisk 標準の時報は物足りない
- NTT 互換の信号を生成して自動時刻合わせに利用したい
方法
- Asterisk の Music On Hold (MOH) 機能で外部のアプリケーションを鳴らせる機能を利用
- これは低遅延で音源を再生できる
- 高速な Rust で書かれたバイナリアプリケーションを使用
- リアルタイムで現在の時報の音源を垂れ流すコマンドを作成
やってみよう
必要なもの: Cargo (rustup で入れましょう)
my117 ソフトウェアのライセンスは Apache-2.0 OR MPL-2.0
です。
インストール
git clone https://github.com/metastable-void/my117
cd my117
cargo build --release
sudo cp target/release/my117 /usr/local/bin/
とりあえず聞いてみる
デスクトップ環境でこれをインストールすると,そのまま音声を聞くことができます。
GNU/Linux or macOS の場合:
my117 | ffplay -f mulaw -ac 1 -ar 8000 -sync ext -probesize 200 -fflags nobuffer -i -
Asterisk の設定
/etc/asterisk/musiconhold.conf
[my117]
mode=custom
application=/usr/local/bin/my117
format=ulaw
/etc/asterisk/extensions.conf
[users] ; 例
; ...
; 117 にかけると我々の時報が流れる設定
exten => _117,1,Answer
same => n,MusicOnHold(my117)
same => n,Hangup
; ...
その他
- 時報サーバのタイムゾーンは時報を聞きたいタイムゾーンに設定しましょう。日本なら
Asia/Tokyo
です。- Debian/Ubuntu:
sudo dpkg-reconfigure tzdata
- Debian/Ubuntu:
動作例
029-828-4147 (生活情報基盤研究機構) の電話にかけて,自動アナウンスが鳴っている間に #30117
をダイヤルすると,この時報を聞くことができます。
最後に
my117 ソフトウェアにバグや改善するべき点などありましたら,イシューを立てるか,プルリクエストを送っていただけると幸いです。
なお,時報関連の特許を NTTグループ が持っていますので,商用利用する前には念入りな確認を推奨します。