Asterisk インストール その3 (real time用データベース作成編)

ここからAsteriskとMariaDBをつないで real time 仕様に設定します

1.MariaDBにAsterisk用のデータベースを作成する

→データベース名はとりあえずasteriskdbとして設定、データベース名と同じ名前のユーザーも設定する

mysql -uroot -p
CREATE DATABASE asteriskdb;
GRANT ALL PRIVILEGES ON asteriskdb.* TO asteriskdb@localhost IDENTIFIED BY '(パスワード)' WITH GRANT OPTION;
FLUSH PRIVILEGES;
USE asteriskdb;
exit
2.作成したasteriskdbに各種テーブルを作成する
2.1.AsteriskでSQLが用意されているものは用意されているものを使用して作成する
mysql -uroot -Dasteriskdb -p < /usr/src/asterisk-15.*/contrib/realtime/mysql/mysql_config.sql
mysql -uroot -Dasteriskdb -p -e "drop table alembic_version;"
mysql -uroot -Dasteriskdb -p < /usr/src/asterisk-15.*/contrib/realtime/mysql/mysql_cdr.sql
mysql -uroot -Dasteriskdb -p -e "drop table alembic_version;"
mysql -uroot -Dasteriskdb -p < /usr/src/asterisk-15.*/contrib/realtime/mysql/mysql_voicemail.sql
2.2.AsteriskでSQLが用意されていないテーブルを作成する
2.2.1.CEL(Channel Event Logging)用テーブルの作成
mysql -uroot -Dasteriskdb -p
CREATE TABLE IF NOT EXISTS cel (
  id int(11) NOT NULL auto_increment,
  eventtype varchar(30),
  eventtime datetime,
  cid_name varchar(80),
  cid_num varchar(80),
  cid_ani varchar(80),
  cid_rdnis varchar(80),
  cid_dnid varchar(80),
  exten varchar(80),
  context varchar(80),
  channame varchar(80),
  src varchar(80)
  dst varchar(80),
  channel varchar(80),
  dstchannel varchar(80),
  appname varchar(80),
  appdata varchar(80),
  amaflags int(11),
  accountcode varchar(20),
  uniqueid varchar(32),
  userfield varchar(255),
  linkedid varchar(32),
  peer varchar(80),
  userdeftype varchar(255),
  eventextra varchar(255),
  PRIMARY KEY(id),
  KEY uniqueid_index (uniqueid),
  KEY linkedid_index (linkedid)
);
exit
2.2.2.Queue_log(ACDログ)用テーブルの作成
mysql -uroot -Dasteriskdb -p
CREATE TABLE queue_log (
  id bigint(255) unsigned NOT NULL AUTO_INCREMENT,
  time varchar(26),
  callid varchar(40),
  queuename varchar(20),
  agent varchar(20),
  event varchar(20),
  data varchar(100),
  data1 varchar(40),
  data2 varchar(40),
  data3 varchar(40),
  data4 varchar(40),
  data5 varchar(40),
  created timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id),
  KEY queue (queuename),
  KEY event (event)
);
exit
3.作成したasteriskdbに各種ビューを作成する
3.1.sipregs
mysql -uroot -Dasteriskdb -p
CREATE VIEW `sipregs` AS SELECT
   `id`
  ,`name`
  ,`ipaddr`
  ,`port`
  ,`regseconds`
  ,`defaultuser`
  ,`fullcontact`
  ,`regserver`
  ,`useragent`
  ,`lastms`
FROM `sippeers`;
exit
4.CDRテーブルにidカラムを追加して、Primary Ketを設定する
 ※これは必須じゃないよ。なくてもOK。
mysql -uroot -Dasteriskdb -p -e "alter table cdr add id int not null primary key auto_increment first;"
5.ODBC設定を行う
5.1. /etc/odbcinst.iniにMySQLが登録されているか確認する
vi /etc/odbcinst.ini
※以下のような感じで登録されていればOK
[MySQL]
Description=ODBC for MySQL
Driver=/usr/lib/libmyodbc5.so
Setup=/usr/lib/libodbcmyS.so
Driver64=/usr/lib64/libmyodbc5.so
Setup64=/usr/lib64/libodbcmyS.so
FileUsage=1

[MySQL ODBC 5.3 Unicode Driver]
Driver=/usr/lib64/libmyodbc5w.so
UsageCount=1

[MySQL ODBC 5.3 ANSI Driver]
Driver=/usr/lib64/libmyodbc5a.so
UsageCount=1
5.2. /etc/odbc.iniにAsterisk接続用の設定を追記する(odbc.iniがなければ新規作成する)
vi /etc/odbc.ini
※以下のような感じで追記する
[ASTERISK_DB]
Description = ASTERISK_DB
Driver = MySQL ODBC 5.3 Unicode Driver
SERVER = 127.0.0.1
UID = asteriskdb
PWD = パスワード
DATABASE = asteriskdb
Port = 3306
※Driverはodbcinst.iniに登録されているMySQLの名称がそのまま入る
5.3. ODBCで接続可能か確認する
echo 'select now()' |isql ASTERISK_DB
※正常に接続できると以下のような感じで結果が表示される
+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> select now()
+--------------------+
| now()              |
+--------------------+
| 2017-05-20 12:12:17|
+--------------------+
SQLRowCount returns 1
1 rows fetched
SQL>

これでデータベースの設定はできたので、次はAsteriskのコンフィグレーション。