
日本語化 その1:数字や日付をちゃんとしゃべらせるには
![]()
STEP1. Asteriskは多言語に対応しちょるよ
その1. Asteriskのソースをmakeしたフォルダのsoundsという
フォルダに、Asteriskが利用するメッセージファイルが入っていますので、
そのフォルダへ移動してください。
その2. ここに「jp」という名前のフォルダを作って、soundsに入っている全ての
gsmファイルを日本語化したものをそこへ格納します。
soundsフォルダの下には、digits、letters、phonetic
というフォルダがありますので、これらの下にも「jp」フォルダを作って
日本語化したgsmファイルを入れておきます。
その3. 次に、sip.confを編集して各ユーザーのセクションの始まりのところに
「language=jp」
という行を追加します。
その4. これでシステムがしゃべるメッセージはほぼすべて日本語化できるわけですが、
数字をしゃべらせるときに不具合が生じます。
100などの場合、英語の文法ですと、one hundred というように1を発音
してしまいますので、ファイルを単に日本語しただけではイチ・ヒャクのように
おかしな発声をしてしまいます。
その5. そこで、FRITZはちゃんと日本語の文法で数字をしゃべらせるように
Asteriskのプログラムを修正してパッチを作ってみました。
日本語化パッチ(1.0.9版用)
日本語化パッチ(最新バージョン用)
まず、Asteriskが停止していることを確認します。
次に、Asteriskのソースが入っているフォルダの1つ上のフォルダに
上記のパッチを保存してから、Asteriskのソースフォルダへ移動します。
そして、以下のコマンドを投入します。
patch -p1 < ../asterisk-saynumber_jpn-1.0.patch
make
make install
これでOKです。
その6. では、試してみましょう。
Asteriskを起動して、extensions.conf ファイルを編集して以下ような感じで
エントリを追加して、その番号をSIPフォンからダイヤルします。
exten => 1000, SayNumber(12345,m)
上に戻る
ManagerAPIを試す
![]()
概要
Asterisk Manager API は、Asteriskサーバに対してリモートマシンから コマンドを送ってAsteriskの動作を制御したいときに便利です。
Fritzは、SIPの端末番号が別の端末ですでにRegisterされていないかを 確認する際にこのManagerAPIを利用したりしています。
ManagerAPIの準備
AsteriskManagerAPIは、テキスト文字列をやりとりすることによって情報の伝達を行います。
AsteriskManagerAPIを利用するには、/etc/asterisk/manager.confを適宜変更する必要があります。
[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
displayconnects = yes
debug=on
[astmgr]
secret = pass_astmgr
read = system,call,log,verbose,command,agent,user
write = system,call,log,verbose,command,agent,user
deny=0.0.0.0/0.0.0.0
permit=192.168.100.10/255.255.255.0
permit=127.0.0.1/255.255.255.0
port AsteriskManagerAPIの受付ポート番号です permit クライアントのIPを指定します [astmgr] クライアントのユーザーIDを指定します secret クライアントのパスワードを指定します
まずはじめに
AsteriskManagerAPIを利用するには、まずログインコマンドを送信して、AsteriskManagerAPIのサーバに自分を登録します。
Action:Login\r\nUsername: astmgr\r\nSecret: pass_astmgr\r\n\r\n
ログインコマンドを送信すると、それに対する応答がAsteriskサーバから返ってきます。
Asterisk Call Manager/1.0\r\nResponse: Success\r\nMessage: Authentication accepted\r\n\r\n
次にAsterisk側からイベントを受け取るかどうかを指定します。
Action: Events\r\nEventmask: On\r\n\r\n
イベントマスクコマンドには、応答メッセージが返ってきません。
最後に、AsteriskManagerAPIを終了するには、接続していたソケットを切断します。
Asterisk Manager API一覧
詳細は(http://www.voip-info.org/wiki/view/Asterisk+manager+API)にて 確認してください。
様々なコマンドが用意されています。
さんぷるぷろぐらむ
上に戻る
自作アプリケーションを試す
![]()
自作!?
STEP 1. 概要
Asteriskのextensions.confに自分で勝手に作ったコマンドを登録して
実行してみようという試みです・・・。
拡張機能の一種だと思えばいいのかな・・・
STEP 2. ソース置き場
作成したソースは、Asteriskのソースフォルダのappsの下に入れます。
Asterisk1.2シリーズ用サンプルソースはこの章の末尾にあります。
STEP 3. コンパイル方法(準備)
asteriskが起動していないことを確認してください。
コンパイル準備は、appsフォルダ下のMakefileの『APPS=』に自分の
アプリケーションのファイルを追加するだけです。
STEP 4. コンパイル方法(コンパイル)
asteriskフォルダに戻って、make
STEP 5. インストール
asteriskフォルダでmake install
サンプルソース
STEP 1. 概要
変数名とその内容を指定すると、指定された名前の変数に
指定された内容を書き込み、
更に『FUNCTIONSTATUS』という名前の変数に『OK』と
書き込むというアプリケーションです。
STEP 2. 利用例
こんな感じで使います。
上記の例では、自作した『myappsample1』に『TVAL』という名前の変数に『TDATA』という文字列を書き込むように[macro-IVR-05-TESTAPP] exten => s,1,NoOp("macro-IVR-05-TESTAPP") exten => s,n,myappsample1(TVAL,TDATA) exten => s,n,NoOp(${TVAL}) exten => s,n,NoOp(${FUNCTIONSTATUS}) exten => s,n,HangUp
パラメータ設定しています。
同処理実行後に、変数『TVAL』と変数『FUNCTIONSTATUS』を表示させています。
STEP 3. 実行結果
上記のサンプルを実行すると以下のようになります。
== Spawn extension (macro-IVR-05-TESTAPP, s, 5) exited non-zero on 'SIP/5004-2 -- Executing Macro("SIP/5004-294d", "IVR-05-TESTAPP") in new stack -- Executing NoOp("SIP/5004-294d", ""macro-IVR-05-TESTAPP"") in new stack -- Executing myappsample1("SIP/5004-294d", "TVAL|TDATA") in new stack -- Executing NoOp("SIP/5004-294d", "TDATA") in new stack -- Executing NoOp("SIP/5004-294d", "OK") in new stack -- Executing Hangup("SIP/5004-294d", "") in new stack == Spawn extension (macro-IVR-05-TESTAPP, s, 5) exited non-zero on 'SIP/5004-2
STEP 4. ダウンロード
サンプルソースのダウンロードはここ→
C言語で書かれています。
パラメータのアクセスなどに専用のマクロが用意されており、それらを利用しています。
上に戻る