Настроек MySQL ODBC (запись информации о звонках)

Выбор, установка, конфигурирование и эксплуатация офисных АТС и телефонии
Аватара пользователя
main
Администратор
Администратор
Сообщения: 84
Зарегистрирован: Сб дек 03, 2016 11:48 pm
Поблагодарили: 1 раз

Настроек MySQL ODBC (запись информации о звонках)

#1

Сообщение main » Чт авг 26, 2021 4:05 pm

Создадим MySQL базу данных asteriskcdrdb

Код: Выделить всё

CREATE DATABASE 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 записей (в данном примере имя таблицы cdr)

Код: Выделить всё

CREATE TABLE IF NOT EXISTS 'asteriskcdrdb'.'cdr' (
   `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
   `calldate` DATETIME NOT NULL DEFAULT '2000-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 |
+-------------------------+
| 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

Код: Выделить всё

; настройка соединения
[asteriskcdrdb]
enabled=>yes
dsn=>MySQL-asteriskcdrdb
pooling=>no
limit=>1
pre-connect=>yes
username=>asteriskuser; имя пользователя базы данных
password=>admin ; пароль пользователя базы данных


Опишем правило логированиря CEL записей:
/etc/asterisk/cel_odbc.conf

Код: Выделить всё

[cel]
connection=asteriskcdrdb
loguniqueid=yes
table=cel


Опишем правило логированиря CDR записей:
/etc/asterisk/cdr_adaptive_odbc.conf

Код: Выделить всё

[Global]
connection=asteriskcdrdb
table=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:   asteriskcdrdb
  DSN:    MySQL-asteriskcdrdb
    Last connection attempt: 1969-12-31 19:00:00
  Pooled: No
  Connected: Yes
В сети



Реклама


Реклама


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя