Допустим MySQL уже установлен на ПК c Asterisk.
MySQL содержит учетную запись:
MySQL уже содержит базу данных asteriskcdrdb
CREATE DATABASE asteriskcdrdb;
Сервер на базе CentOS 6 (32 bit)
Подключимся к СУБД mysql к базе данных asteriskcdrdb:
mysql -u'asteriskuser' -p'admin' asteriskcdrdb
создадим таблицу для хранения CEL записей:
CREATE TABLE IF NOT EXISTS `asteriskcdrdb`.`cel` ( `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, `eventtype` VARCHAR(30) COLLATE utf8_unicode_ci NOT NULL, `eventtime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `userdeftype` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL, `cid_name` VARCHAR(80) COLLATE utf8_unicode_ci NOT NULL, `cid_num` VARCHAR(80) COLLATE utf8_unicode_ci NOT NULL, `cid_ani` VARCHAR(80) COLLATE utf8_unicode_ci NOT NULL, `cid_rdnis` VARCHAR(80) COLLATE utf8_unicode_ci NOT NULL, `cid_dnid` VARCHAR(80) COLLATE utf8_unicode_ci NOT NULL, `exten` VARCHAR(80) COLLATE utf8_unicode_ci NOT NULL, `context` VARCHAR(80) COLLATE utf8_unicode_ci NOT NULL, `channame` VARCHAR(80) COLLATE utf8_unicode_ci NOT NULL, `appname` VARCHAR(80) COLLATE utf8_unicode_ci NOT NULL, `appdata` VARCHAR(80) COLLATE utf8_unicode_ci NOT NULL, `amaflags` INT(11) NOT NULL, `accountcode` VARCHAR(20) COLLATE utf8_unicode_ci NOT NULL, `peeraccount` VARCHAR(20) COLLATE utf8_unicode_ci NOT NULL, `uniqueid` VARCHAR(150) COLLATE utf8_unicode_ci NOT NULL, `linkedid` VARCHAR(150) COLLATE utf8_unicode_ci NOT NULL, `userfield` VARCHAR(255) COLLATE utf8_unicode_ci NOT NULL, `peer` VARCHAR(80) COLLATE utf8_unicode_ci NOT NULL, UNIQUE KEY `id` (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
создадим таблицу для хранения CDR записей (в данном примере имя таблицы PT1C_cdr)
CREATE TABLE IF NOT EXISTS `asteriskcdrdb`.`PT1C_cdr` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `calldate` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `clid` VARCHAR(80) NOT NULL DEFAULT '', `src` VARCHAR(80) NOT NULL DEFAULT '', `dst` VARCHAR(80) NOT NULL DEFAULT '', `dcontext` VARCHAR(80) NOT NULL DEFAULT '', `lastapp` VARCHAR(200) NOT NULL DEFAULT '', `lastdata` VARCHAR(200) NOT NULL DEFAULT '', `duration` FLOAT UNSIGNED NULL DEFAULT NULL, `billsec` FLOAT UNSIGNED NULL DEFAULT NULL, `disposition` ENUM('ANSWERED','BUSY','FAILED','NO ANSWER','CONGESTION') NULL DEFAULT NULL, `channel` VARCHAR(50) NULL DEFAULT NULL, `dstchannel` VARCHAR(50) NULL DEFAULT NULL, `amaflags` VARCHAR(50) NULL DEFAULT NULL, `accountcode` VARCHAR(20) NULL DEFAULT NULL, `uniqueid` VARCHAR(32) NOT NULL DEFAULT '', `userfield` VARCHAR(200) NOT NULL DEFAULT '', `did` VARCHAR(200) NOT NULL DEFAULT '', `answer` DATETIME NOT NULL, `end` DATETIME NOT NULL, `recordingfile` varchar(255) NOT NULL default '', `peeraccount` varchar(20) NOT NULL default '', `linkedid` varchar(32) NOT NULL default '', `sequence` int(11) NOT NULL default '0', PRIMARY KEY (`id`), INDEX `calldate` (`calldate`), INDEX `dst` (`dst`), INDEX `src` (`src`), INDEX `dcontext` (`dcontext`), INDEX `clid` (`clid`) )ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
В базе данных должны существовать две таблицы:
> USE asteriskcdrdb; > SHOW TABLES; +-------------------------+ | Tables_in_asteriskcdrdb | +-------------------------+ | PT1C_cdr | | cel | +-------------------------+ 2 rows in set (0.00 sec)
Для работы логирования CEL записей необходима библиотека:
ls -l /usr/lib/libmyodbc3_r.so
Если библиотеки нет, ее следует установить
yum install mysql-connector-odbc
Параметры доступа к драйверам описываются в файле:
/etc/odbcinst.ini
; настройка драйвера [MySQL] Description = ODBC for MySQL Driver = /usr/lib/libmyodbc3_r.so ; имя драйвера и местоположение могут отличаться для разных ОС Setup = /usr/lib/libodbcmyS.so Driver64 = /usr/lib64/libmyodbc5.so ; имя драйвера и местоположение могут отличаться для разных ОС Setup64 = /usr/lib64/libodbcmyS.so FileUsage = 1 UsageCount = 5
Все возможные соединения («коннекторы») описываются в файле:
/etc/odbc.ini
; настройка соединения [MySQL-asteriskcdrdb] Driver = MySQL Description = MySQL connection to 'asteriskcdrdb' database Server = localhost Port = 3306 Database = asteriskcdrdb Option = 3
Проверить настройки ODBC возможно утилитой isql
isql -v MySQL-asteriskcdrdb asteriskuser admin
Опишем ресурс доступа к базе данных: /etc/asterisk/res_odbc.conf
; настройка соединения [PT1C_asteriskcdrdb] enabled=>yes dsn=>MySQL-asteriskcdrdb pooling=>no limit=>1 pre-connect=>yes username=>asteriskuser; имя пользователя базы данных password=>admin ; пароль пользователя базы данных
Опишем правило логированиря CEL записей:
/etc/asterisk/cel_odbc.conf
[PT1C_cel] connection=PT1C_asteriskcdrdb loguniqueid=yes table=cel
Опишем правило логированиря CDR записей:
/etc/asterisk/cdr_adaptive_odbc.conf
[PT1C_Global] connection=PT1C_asteriskcdrdb table=PT1C_cdr alias recordingfile=>recordingfile alias start=>calldate
Далее следует перезагрузить asterisk:
CLI> core restart now
Выполнить в консоли астериск:
Статус CDR
CLI> cdr show status Call Detail Record (CDR) settings ---------------------------------- Logging: Enabled Mode: Simple Log unanswered calls: No Log congestion: No * Registered Backends ------------------- Adaptive ODBC
Статус CEL
CLI> cel show status CEL Logging: Enabled CEL Tracking Event: ALL CEL Tracking Event: CHAN_START CEL Tracking Event: CHAN_END CEL Tracking Event: HANGUP CEL Tracking Event: ANSWER CEL Tracking Event: APP_START CEL Tracking Event: APP_END CEL Tracking Event: BRIDGE_START CEL Tracking Event: BRIDGE_END CEL Tracking Event: CONF_START CEL Tracking Event: CONF_END CEL Tracking Event: PARK_START CEL Tracking Event: PARK_END CEL Tracking Event: BLINDTRANSFER CEL Tracking Event: ATTENDEDTRANSFER CEL Tracking Event: TRANSFER CEL Tracking Event: HOOKFLASH CEL Tracking Event: 3WAY_START CEL Tracking Event: 3WAY_END CEL Tracking Event: CONF_ENTER CEL Tracking Event: CONF_EXIT CEL Tracking Event: USER_DEFINED CEL Tracking Event: LINKEDID_END CEL Tracking Event: BRIDGE_UPDATE CEL Tracking Event: PICKUP CEL Tracking Event: FORWARD CEL Tracking Application: ALL CEL Event Subscriber: ODBC CEL backend CEL Event Subscriber: CEL Custom CSV Logging CEL Event Subscriber: CEL PGSQL backend CEL Event Subscriber: CEL Radius Logging
Должны быть подгружены модули:
module show like odbc Module Description Use Count cdr_adaptive_odbc.so Adaptive ODBC CDR backend 0 cel_odbc.so ODBC CEL backend 0 func_odbc.so ODBC lookups 0 res_config_odbc.so Realtime ODBC configuration 0 res_odbc.so ODBC resource 0
статус ODBC
pbx*CLI> odbc show ODBC DSN Settings ----------------- Name: PT1C_asteriskcdrdb DSN: MySQL-asteriskcdrdb Last connection attempt: 1969-12-31 19:00:00 Pooled: No Connected: Yes
Окончательная проверка
Совершите пару звонков и выполните команды:
mysql -sse "SELECT * FROM cel" -u'asteriskuser' -p'admin' asteriskcdrdb
mysql -sse "SELECT * FROM PT1C_cdr" -u'asteriskuser' -p'admin' asteriskcdrdb
таблицы не должны быть пустыми.
Обратно к инструкции...