Настройка подключения Asterisk 16 к MySQL через драйвер ODBC на Debian 9.

 Рассмотрим как подключить Asterisk 16 к MySQL посредством ODBC (Open Database Connectivity) для ведения записей CDR (Call Detail Records) и CEL (Channel Event Logging).

 

До версии Asterisk 13, для хранения CDR и CEL в MySQL использовал драйвер cdr_mysql.so и cel_mysql.so. Начиная с Asterisk 13 эти модули Deprecated (Устарели) и не рекомендованы к использованию. Разработчики рекомендуют использовать технологию ODBC.

 

Исходные данные:

  • Debian 9
  • Asterisk 16 
  • MySQL (5.5.60)

 

Подготовка системы

Перед началом установки обновляем систему до актуального состояния:

Устанавливаем необходимые зависимости:

 

Настройка драйвера ODBC

Приводим файл конфигурации (/etc/odbcinst.ini) к виду:

 

Проверим связность ODBC и MySQL:

Результат должен быть следующим:

 

Редактируем файл(/etc/odbc.ini), приводим в соответствие:

Этот файл служит для создания идентификатора для Asterisk 16. Asterisk будет ссылаться на название, указанное в этом файле.

 

Проверим использование утилиты ISQL

Вывод:

 

Настройка MySQL

Для корректного отображения «Кириллицы» в таблицах, необходимо выполнить настройку MySQL на использование кодировки UTF-8.

 

Создадим базу данных и пользователя:

 

Подключаемся к созданной базе данных и создаем необходимые таблицы (CDR и CEL):

 

Если планируется использовать доработанный (Asterisk CDR Viewer Mod), то необходимо так же добавить триггер, для корректного отображения вызываемого номера (вводить последовательно):

 

Настройка Asterisk

Для работы связки с ODBC драйвером, необходимо наличие установленного в Asterisk модуля res_config_mysql.so. Если Asterisk был собран без данного модуля, то необходимо его пересобрать с модулем и выполнить установку.

Переходим в каталог с дистрибутивом Asterisk, вызываем меню, отмечаем необходимый модуль и нажимаем Save & Exit:


1
make menuselect

Выполняем установку:

 

Редактируем файл (/etc/asterisk/res_odbc.conf), вписываем в конец файла:

Параметр DSN отвечает за подключение Asterisk к БД, указанной в файле /etc/odbc.ini. Этот параметр говорит Asterisk, что необходимо открыть и поддерживать соединение с базой данных при загрузке модуля res_odbc.so.

 

Настройка сбора логов CDR

Редактируем файл (/etc/asterisk/cdr_adaptive_odbc.conf), вписываем в конец файла:

Использование мной файла конфигурации cdr_adaptive_odbc.conf, вместо cdr_odbc.conf, обусловлено тем что мне необходимо использование custom полей, для занесения каких то своих данных в таблицу CDR

 

Настройка сбора логов CEL

Включаем генерацию CEL данных в Asterisk.

В файле конфигурации (/etc/asterisk/cel.conf), в секции [general] приписываем:

 

Редактируем файл (/etc/asterisk/cel_odbc.conf), вписываем в конец файла:

Где cel – название таблицы в MySQL, asteriskcdrdb – название соединения ODBC из файла /etc/asterisk/res_odbc.conf

 

Перезапускаем Asterisk:

 

Через CLI Asterisk проверим подключение к БД через драйвер ODBC:

 

Связь с базой данных MySQL настроена. Теперь данные CDR и CEL будут записываться в соответствующие таблицы. Для удобного просмотра информации из базы данных, рекомендую использовать  Asterisk CDR Viewer Mod. На данный момент как мне кажется это лучший просмотрщик CDR из бесплатных. Установка его очень очень подробно изложена в README файле, находящегося в дистрибутиве.