Екатерина
25.07.2019
312

Как связать Asterisk с Mysql через коннектор ODBC

Введение Установка драйвера ODBC Настройка конфигурации ODBC Установка Asterisk c модулями ODBC Конфигурирование Asterisk для работы с Mysql Заключение Введение В рабочей практике приходится сталкиваться с различными задачами, где необходимо во время вызова обращаться к базам данных из диалплана. Стандартная команда MYSQL не совсем удобна. Плюс ко всему необходимо хранить историю вызовов, а также событий […]

  1. Введение
  2. Установка драйвера ODBC
  3. Настройка конфигурации ODBC
  4. Установка Asterisk c модулями ODBC
  5. Конфигурирование Asterisk для работы с Mysql
  6. Заключение

Введение

В рабочей практике приходится сталкиваться с различными задачами, где необходимо во время вызова обращаться к базам данных из диалплана. Стандартная команда MYSQL не совсем удобна. Плюс ко всему необходимо хранить историю вызовов, а также событий звонков астериска. Для этого используются таблицы cdr и cel соответственно. Для всего этого используется драйвер ODBC.

ODBC – программный интерфейс для работы с БД. Разработан был компанией Microsoft и Simba Technologies. Этот интерфейс позволяет подключать сторонние программные продукты к БД.

В данной статье будет рассмотрена установка и конфигурирование драйверов ODBC на систему Centos 6.9. А также установка Asterisk c модулями odbc и настройка asterisk для работы с mysql.

Далее все действия описаны для системы CentOS 6.9.

Установка драйвера ODBC

Если у вас установлена система FreePBX вам стоит смотреть раздел 5.

В данном разделе будет рассмотрен порядок действий для установки драйвера ODBC, а также настройка параметров для корректной работы драйвера.

Для работы драйвера необходимо установить ряд пакетов из репозиториев:

  • libtool
  • libtool-ltdl
  • libtool-ltdl-devel
  • mysql-connector-odbc
  • libiodbc
  • libiodbc-devel
yum install libtool libtool-ltdl libtool-ltdl-devel mysql-connector-odbc libiodbc libiodbc-devel

Если вы не знаете установлены эти пакеты у вас или нет. Можете воспользоваться следующей командой:

yum list installed | egrep 'odbc|libtool|mysql'

Она выводит список всех установленных пакетов. В названии которых встречаются слова  odbc или libtool или mysql.

Установленные пакеты (pic1.png)

Настройка конфигурации ODBC

В данном разделе будет описана пошаговая настройка системы для работы драйвера ODBC. Расскажем, какие файлы нужно редактировать для внесения настроек, как проверить правильность внесенных данных, а также какие пункты нужно менять в  изменяемых файлах.

После установки драйвера необходимо указать в конфигурационном файле   /etc/odbcinst.ini пути к файлам драйверов. Для этого необходимо найти установленные файлы:

  • libmyodbc5.so
  • libodbcmyS.so
  • libmyodbc8w.so — файл драйвера кодировки unicode
  • libmyodbc8a.so – файл драйвера кодировки ANSI

Для того, чтобы найти эти файлы воспользуемся консольной утилитой find.

# locate libmyodbc5.so
# locate libodbcmyS.so
# locate libmyodbc8w.so
# locate libmyodbc8a.so

Перепишем указанные директории в файл настроек ODBC. Для этого откроем его любым текстовым редактором, в данном случае это vim

# vim /etc/odbcinst.ini

Теперь надо указать пути к файлам. За это отвечают параметры Driver, Driver64, Setup, Setup64. Названия соответствуют разрядности системы i686 и x86_64. В итоге должно пучиться как на примере ниже:

[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc5.so
Setup = /usr/lib/libodbcmyS.so
Driver64 = /usr/lib64/libmyodbc5.so
Setup64 = /usr/lib64/libodbcmyS.so
FileUsage = 1

[MySQL ODBC 8.0 Unicode Driver]
Driver = /usr/lib64/libmyodbc8w.so
UsageCount = 1

[MySQL ODBC 8.0 ANSI Driver]
Driver = /usr/lib64/libmyodbc8a.so
UsageCount = 1
Odbcinst.ini (pic2.png)

После сохранения данных проверим, область видимости драйвера командой

# odbcinst -q -d

В итоге должно отобразиться следующее:

# odbcinst -q -d
[MySQL]
[MySQL ODBC 8.0 Unicode Driver]
[MySQL ODBC 8.0 ANSI Driver]

Если после выполнения данной команды у вас в консоле отобразились данные строки, то вы всё верно настроили. Теперь надо редактировать файл, где будет указан идентификатор подключения к БД – /etc/odbc.ini. Важные поля:

  • [<DSN_name>] – DSN имя для подключения к mysql (в дальнейшем будет использоваться в конфигурациях Asterisk)
  • driver – указывается название драйвера для связи с Mysql (прописывается имя указанной в файле /etc/odbcinst.ini)
  • server – адрес хоста mysql сервера
  • database – База данных для подключения
  • Port – порт подключения к mysql
  • Socket – файл сокета подключения к mysql
  • Charset –указывается кодировка записей
Параметр Description указывается по желанию. Оно нужно для понимания для чего используется это подключения. Считается как однострочный комментарий.

После редактирования должно получиться следующее:

[MySQL-asteriskcdrdb]
Description=MySQL connection to 'asteriskcdrdb' database
driver=MySQL ODBC 8.0 ANSI Driver
server=localhost
database=asteriskcdrdb
Port=3306
Socket=/var/lib/mysql/mysql.sock
option=3
Charset=utf8
odbc.ini (pic3.png)

Проверим подключение к Mysql через указанный [<DSN_name>], который был прописал в файл odbc.ini. Проверить подключени можно следующей командой:

# echo "select 1" | isql -v <DSN_name> <USERNAME> <PASSWORD>

Должно вывести следующее как на скриншоте ниже

dsn_name test (pic4.png)

Установка Asterisk c модулями ODBC

Не всегда администраторы, поддерживающие asterisk, собирают его с модулями необходимыми для работы с odbc. Поэтому в данном пункте будет показано, как пересобрать астериск с нужными модулями.

Для того, чтобы пересобрать asterisk, нужно перейти в директорию исходных файлов Asterisk. В данном случае — это /usr/src/asterisk-13.21.0/.

Поскольку астериск уже установлен, поэтому заново выполнять команду ./configure не нужно. Поэтому перейдем к следующему шагу make menuselect.

make menuselect (pic5.png)

Теперь необходимо выбрать все модули, в которых в названии есть odbc.

Ниже приведена таблица с названием раздела и именем модуля.

 Call Detail Recording cdr_odbc cdr_adaptive_odbc
 Channel Event Logging cel_odbc
 Resource Modules res_odbc res_odbc_transaction
Call Detail Recording (pic9.png)
Channel Event Logging (pic10.png)
Resource Modules (pic11.png)

Далее, как и при обычной установке астериска выполняем Save & Qiut, make, make install.

После выпонения make install ни в коем случае не выполняйте команду make samples. Текущие конфигурации вашего Астериска будут перезатерты.

Конфигурирование Asterisk для работы с Mysql

Для того, чтобы Asterisk писал в БД события и историю вызовов необходимо его сконфигурировать. Для этого надо указать настройки в нескольких файлах, которые находятся в директории /etc/asterisk. В данном разделе будет описано в какие файлы необходимо внести изменения, какие данные необходимо внести в них, а также возможность проверки правильности настроек.

Далее все команды, имена файлов и т.д. перечисляются относительно директории /etc/asterisk

Первым отредактируем файл res_odbc.conf. Если вы используете FreePBX, вам необходимо редактировать файл res_odbc_additional.conf.

В этом файле указывается:

  • новый [<DSN_name>], который в дальнейшем будет использоваться в другом конфигурационном файле астериска
  • enabled – включение/отключение доступности текущего подключения к Mysql
  • dsn – DSN_name драйвера ODBC используемое для подключения к Mysql (указывается dsn имя, прописанное в файле /etc/odbc.ini)
  • preconnect возможность подключения при старте Астериска
  • username – пользователь mysql. (Если используется FreePBX, имя пользователя можно взять в файле /etc/freepbx.conf)
  • password – пароль пользователя mysql (Если используется FreePBX его можновзять в файле /etc/freepbx.conf)
  • database – имя базы данных, к которой астериск будет подключаться

В итоге должно получиться следующее:

[asteriskcdrdb]
enabled=>yes
dsn=>MySQL-asteriskcdrdb
pre-connect=>yes
username=><MYSQL_USERNAME>
password=><MYSQL_PASSWORD
database=>asteriskcdrdb
res_odbc.conf (pic6.png)

Сохраняете изменения в этом файле, далее нужно вносить изменения в файл cdr_odbc.conf (если установлен FreePBX – cdr_adaptive_odbc.conf).

  • [<connection_name>] – имя подключения к БД
  • connection – Имя dsn. Которое указывалось в res_odbc.conf
  • loguniqueid – разрешить логирование uniquieid
  • table – таблица для заполнения истории звонков

В итоге должно получиться как на скриншоте ниже:

cdr_odbc.conf (pic7.png)

Далее сохраняются изменения и необходимо их применить. Для этого открывается консоль астериска командой asteriskrvvvv. Из этой консоли выполнить две команды:

  • module reload res_odbc.so — применяет изменения файла res_odbc.conf
  • module reload cdr_odbc.so – применяет изменения файла cdr_odbc.conf
> module reload res_odbc.so
> module reload cdr_odbc.so

Проверить правильность настроек можно командой odbc show из консоли астериска. Если выполнено все правильно то должно получиться как на скриншоте ниже.

odbc.show (pic8.png)

Заключение

После  выполнения указанных выше действий вы сможете просматривать историю вызовов (CDR – call detail records). Также можно выполнять действия с данной таблицей из диалплана обращаясь к ней встроенной функцией астериска CDR()— что позволяет гибко оперировать логикой звонка.

Если включить фантазию и немного подумать, можно прикрутить еще и использование дополнительных таблиц через дополнительный файл  func_odbc.conf. Но это уже другая статья

 
avatar
  Подписаться  
Уведомление о

Остались вопросы?

Я - Виталий Шелест, менеджер компании Voxlink. Хотите уточнить детали или готовы оставить заявку? Укажите номер телефона, я перезвоню в течение 3-х секунд.

VoIP оборудование

ближайшие курсы

ближайшие Вебинары

ONLINE

Why Choose HUGE?

Unlimited pre-designed elements

Each and every design element is designed for retina ready display on all kind of devices

User friendly interface and design

Each and every design element is designed for retina ready display on all kind of devices

100% editable layered PSD files

Each and every design element is designed for retina ready display on all kind of devices

Created using shape layers

Each and every design element is designed for retina ready display on all kind of devices