====== Пример настроек 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|Обратно к инструкции...]]\\