お問い合わせ

ブログ

これまでに経験してきたプロジェクトで気になる技術の情報を紹介していきます。

Asterisk 「extensions.conf」の設定をリアルタイムデータベースで設定

okuda Okuda 2 years

Asterisk 「extensions.conf」の設定をリアルタイムデータベースで設定していきます。

環境設定

  • CentOS 7.8.2003

  • Asterisk 16.13.0

  • MySQL 8.0.22

  • unixODBC 2.31

「extensions.conf」で設定する場合

extensions.conf

[default]
exten => _1XX,1,Dial(PJSIP/${EXTEN},60,tT)

コンフィグで設定する場合は上記のように記述します。 今回はこれをデータベースで設定します。

リアルタイムDBは有効になっている前提です。

Alembicで自動的に作られるextensionsテーブルを確認

Asteriskの解凍ディレクトリの中にある contrib/realtime/mysql/mysql_config.sqlにテーブル定義があります。 Alembicはこれでテーブルを作成します。

mysql_config.sql

CREATE TABLE extensions (
   id bigint NOT NULL auto_increment,
   context varchar(40) NOT NULL,
   exten varchar(40) NOT NULL,
   priority integer NOT NULL default "0",
   app varchar(40) NOT NULL,
   appdata varchar(256) NOT NULL default "",
   PRIMARY KEY (id),
   UNIQUE (context,exten,priority),
   UNIQUE (id)
); 

context, exten, priority の3カラムでのユニーク が元々付いています。

データベースの「extensions」テーブルに登録

以下のように定義してあるものをテーブルの絡むごとに見ていきます。

[default] #コンテクスト定義部
exten => _1XX,1,Dial(PJSIP/${EXTEN},60,tT) #エクステンション定義部
  • 「context」カラムにはコンテクスト定義部に設定した文字列が入ります。 今回の例ではdefaultになります。

  • 「exten」カラムにはエクステンション定義部のエクステンション名(内線番号)が入ります。 今回の例では_1XXが入ります。

  • 「priority」カラムにはエクステンション定義部のプライオリティが入ります。 integer NOT NULL なので n が使えません。 今回の例では1にしておきます。

  • 「app 」カラムにはエクステンション定義部のアプリケーション関数が入ります。 今回の例では頭の部分Dialが入ります。

  • 「appdata」カラムにはエクステンション定義部のアプリケーション引数が入ります。 今回の例ではカッコ内のPJSIP/${EXTEN},60,tTが入ります。 ※context,extenが同じだと、priorityを変えないとユニーク制限によってエラーとなります。

インサート文を使う場合

INSERT INTO extensions
(context, exten, priority, app, appdata)
VALUES 
('mycontext', '_1XX', 1,'Dial', 'PJSIP/${EXTEN},60,tT');

「extensions.conf」の編集

設定をデータベースから取得するため以下のように編集します。

extensions.conf

[default]
switch => Realtime/[mycontext]@[myextensions]

「mycontext」の部分はextensionsテーブルのcontext カラムに設定した文字列になります。 「myextensions」の部分はテーブル名になります。

今回の例では以下のようになります。 extensions.conf

[default]
switch => Realtime/default@extensions

「extconfig.conf」を編集

コメントアウトしてある行の;を外してリアルタイムデータベースを有効化します。

extensions => odbc,asterisk

再起動して反映

service asterisk restart

参考は以下

Asterisk Realtime Extensions with MySQL

以上になります。

Asterisk 「extensions.conf」の設定をリアルタイムデータベースで設定 2021-08-23 14:03:49

コメントはありません。

4002

お気軽に
お問い合わせください。

お問い合わせ
gomibako@aska-ltd.jp