Это старая версия документа!
Допустим MySQL уже установлен на ПК c Asterisk.
MySQL содержит учетную запись:
MySQL уже содержит базу данных asteriskcdrdb
CREATE DATABASE asteriskcdrdb;
Сервер на базе CentOS 6 (32 bit)
Подключимся к mysql:
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
таблицы не должны быть пустыми.
Обратно к инструкции...