====== Пример настроек MySQL ODBC ====== [[astpanel:ats:asterisk_v6|Обратно к инструкции...]]\\ ===== Таблицы базы данных ===== Допустим MySQL уже установлен на ПК c Asterisk.\\ MySQL содержит учетную запись: * user - **asteriskuser** * pass - **admin** 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) ===== Настройка ODBC ===== Для работы логирования 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 * "**-v**" - выводить отладку * "**MySQL-asteriskcdrdb**" - имя конектора из **/etc/odbc.ini** * "**asteriskuser**" - имя пользователя MySQL * "**admin**" - пароль пользователя MySQL ===== Настройка конфигурации Asterisk ===== Опишем ресурс доступа к базе данных: **/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 [[doc:1cajam:astcastomize_v6|Обратно к инструкции...]]\\ ===== Контроль ===== Выполнить в консоли астериск:\\ **Статус 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 таблицы не должны быть пустыми. \\ [[astpanel:ats:asterisk_v6|Обратно к инструкции...]]\\