5. extensions.conf の移行

modules.conf の変更

Asterisk が MySQL へ 設定情報を格納するために必要なモジュールをロードするように /etc/asterisk/modules.conf を変更します。

[modules]
autoload=yes

autoload を yes か、明示的にロードするモジュールを指示
※ sip.conf の移行で設定してあれば必要ありません。

load => res_config_mysql.so
load => app_realtime.so
load => func_realtime.so
load => pbx_realtime.so

extconfig.conf の変更

extensions.conf のリアルタイム構成を実現するために、リアルタイム構成のグループとデータベースドライバー、データベース、テーブルの対応付けを行います。

/etc/asterisk/extconfig.conf の [settings] コンテキストに例がありますので、それを参考にすると:

group => driver,database,table

という構文なのがわかります。

;
; Static and realtime external configuration
; engine configuration
;
; Please read doc/extconfig.txt for basic table
; formatting information.
;
... (省略) ...

[settings]
... (省略) ...
;----------------------------------------
; MySQL Realtime settings
;----------------------------------------
extensions => mysql,Asterisk,extensions

extensions グループ を MySQL ドライバー、”Asterisk” データベースの “extensions” テーブルへ対応付けをするため、extconfig.conf に上記1行を追加します。

res_mysql.conf の変更

res_mysql.conf に、Asterisk がデータベースにアクセスのための情報を設定します。

/etc/asterisk/res_mysql.conf の [general] コンテキストに以下の情報を追加します。

[general]
dbhost = 127.0.0.1 ; データベースの IPアドレス
dbname = Asterisk ; データベース名
dbuser = Asterisk ; ユーザー名
dbpass = Asterisk ; パスワード
;dbport = 3306 ; ポートはデフォルト
;dbsock = /var/run/mysqld/mysqld.sock ; ソケットファイルはデフォルト
;dbcharset = latin1 ; charset はデフォルト

※ sip.conf の移行で設定してあれば必要ありません。

Asterisk の再起動

ここで、一度 Asterisk を再起動して、動作確認をしてみます。

# service asterisk restart
Stopping safe_asterisk: [ OK ]
Shutting down asterisk: [ OK ]
Starting asterisk: [ OK ]

そして、CLIを接続します。 コマンドラインに “-rvvvvvvvvvvvvvvvvvvvvv” と “v” を多く付加してみてください。

# /usr/sbin/asterisk -rvvvvvvvvvvvvvvvvvv
# /usr/sbin/asterisk -rvvvvvvvvvvvvvvvvvvvvvvvv
Asterisk 1.4.42, Copyright (C) 1999 - 2010 Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
== Parsing '/etc/asterisk/asterisk.conf': Found
== Parsing '/etc/asterisk/extconfig.conf': Found
== Binding sipusers to mysql/asterisk/sip_buddies
== Binding sippeers to mysql/asterisk/sip_buddies
== Binding extensions to mysql/asterisk/extensions
Connected to Asterisk 1.4.42 currently running on localhost (pid = 4815)
Verbosity is at least 24
localhost*CLI>

上記のように、extensions が mysql/asterisk/extensions へバインドされたメッセージが出れば成功です。

extensions.conf の設定を MySQL へ移行

次に、extensions.conf で設定したダイヤルプランをテーブルへ移します。

/etc/asterisk/extensions.conf ファイルの以下の設定をすべてコメントアウトします。 そして、赤字の switch 文を追加します。

[internal]
; exten => name,priority,application
; ex. exten => 123,1,Answer()
;exten => 1000,1,Answer()
;exten => 1000,2,Playback(hello-world)
;exten => 1000,3,Hangup()
switch => Realtime/internal@extensions

ファイルを保存したら、X-Lite を接続している場合は、終了して、サービスを再起動します。

# service asterisk restart

次に、extensions テーブルへ、上記のダイアルプランを挿入します。

# mysql -u Asterisk -p
Enter password:
mysql> use Asterisk;
mysql> INSERT INTO extensions (context, exten, priority, app, appdata) VALUES ('internal', '1000', '1', 'Answer', '');
mysql> INSERT INTO extensions (context, exten, priority, app, appdata) VALUES ('internal', '1000', '2', 'Playback', 'hello-world');
mysql> INSERT INTO extensions (context, exten, priority, app, appdata) VALUES ('internal', '1000', '3', 'Hangup', '');

挿入結果を確認します。

mysql> SELECT * FROM extensions;
+----+----------+-------+----------+----------+-------------+
| id | context  | exten | priority | app      | appdata     |
+----+----------+-------+----------+----------+-------------+
| 1  | internal | 1000  | 1        | Answer   |             |
| 2  | internal | 1000  | 2        | Playback | hello-world |
| 3  | internal | 1000  | 3        | Hangup   |             |
+----+----------+-------+----------+----------+-------------+
3 rows in set (0.01 sec)

このように表示されます。

次に、X-Lite を起動して接続を確認します。 起動が完了したら、1000 をダイアルして “Hello world.” を確認してください。

以上です。