Asterisk Realtime

2024年11月26日 (火) 15:07時点におけるTakahashi (トーク | 投稿記録)による版 (DBの作成)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)

Asterisk Realtime Architecture(ARA)

Asteriskの内部処理をリアルタイム化するものではないので注意してください。Realtime Linux等とは意味が異なります。
Asterisk Realtimeは各種設定ファイルやデータをAsteriskがリアルタイム処理する機能のことで、Asterisk 1.2から正式に実装されました。

このリアルタイムを簡単に説明すると次のようになります。
例えば通常はpjsip.confのようにAsteriskの設定ファイルとしてSIPエンドポイントの情報を記述し、これを有効にするためにはAsteriskのreload等のコマンドを実行する必要があります。設定は設定ファイルに記述しただけでは反映されず、明示的にコマンドで再読み込みを行う必要があります。
Asterisk Realtimeでは設定ファイルの内容を外部リソースを使うことで、設定を即時に反映させます。例えばよく使われる方法は、MySQLをデータベース・エンジンとし、SIPエンドポイントのデータベースを持たせることで、Asteriskはエンドポイント情報をDBから取得し、これを使って認証等の処理を行います。設定情報はDBにPUTされた時点で反映されるため、モジュールのリロード等の処理は必要ありません。

DBの作成

MariaDB(MySQL)を例にとって進めます。まずDBを'asterisk'という名前で作っておきます。

mysql -u root -p
MariaDB [(none)]> create database asterisk;

ユーザ、asteriskをパスワードastpassでつくりasterisk DBに対して全権限を与えます。

MariaDB [(none)]> CREATE USER 'asterisk'@'localhost' IDENTIFIED BY 'astpass';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON asterisk.* TO 'asterisk'@'localhost';

テーブルの作成

手動で作成する場合には、contrib/realtime の下にDBテーブル用のSQLがあるので、これを使って作成します。例えばMySQLの設定類であれば mysql/mysql_config.sql が相当します。もし一部のテーブルしか使用しないというのであれば、このSQLから必要な個所だけを抜き出して使用すると良いでしょう。

alembic

alembicを使用してDBテーブルを作成することもできます。Debian(bookworm)の場合、以下のようにalembicをインストールして使用します。

apt install pip (実体はpython3-pip)
apt install python3-alembic
apt install alembic

contrib/ast-db-manage に移動します。config.ini.samle を config.ini にコピーし、以下の個所を修正して自分のDBにあわせます。

#sqlalchemy.url = mysql://user:pass@localhost/asterisk
sqlalchemy.url = mysql://root:password@localhost/asterisk

alembicでテーブルを作成します

alembic -c config.ini upgrade head