Как подключиться к mysql freepbx
Freepbx с подключением к внешней базе данных
Устанавливаю астериск+freepbx на centos 7, базы данных использую только для freepbx (астериск без них живет), всегда на локалхосте (mariaDB 5.5). Понадобилось базы держать на отдельном сервере mysql (он в локалке на нестандартном порте).
При установке freepbx:
Как правильно указать freepbx сервер с его базами данных?
Вроде как коннектор в центоси в extras лежал. Это новая станция или старую переделываешь? А то ему пофиг должно быть где база
Это новая станция или старую переделываешь
Ставлю всё по новой,
Вроде как коннектор в центоси в extras лежал
По запросу «extras» нашла:
1. В /var/lib/yum/repos/x86_64/7/extras пусто.
2. В /var/cache/yum/x86_64/7/extras
Оба файла odbc.ini и odbcinst.ini находятся в /etc/
сорри, не extras. пакет называется asterisk-addons. раньше коннектор в нем был
Так все сорри протупился. Астер вообще не в кассу. У тебя драйвера php-mysql нету
Пакет из yum’а с php-mysql установлен. Кроме него, установлены:
так получилось что он думал что это драйвер у тебя называется 192.168.1.110:33061
При инсталляции freepbx:
Из сети нестандартный порт mysql-сервера открыт (несколько других серверов на него «запитаны»). Перепроверила
Чуть хитрее. Взгляни внимательно на строку вызова PDO и на примеры. Сама строка:
Если такая боль, может, проще iptables’ом или ssh форвард порта на реальный сервер сделать?
Как связать Asterisk с Mysql через коннектор ODBC
В рабочей практике приходится сталкиваться с различными задачами, где необходимо во время вызова обращаться к базам данных из диалплана. Стандартная команда MYSQL не совсем удобна. Плюс ко всему необходимо хранить историю вызовов, а также событий звонков астериска. Для этого используются таблицы cdr и cel соответственно. Для всего этого используется драйвер ODBC. ODBC – программный интерфейс […]
В рабочей практике приходится сталкиваться с различными задачами, где необходимо во время вызова обращаться к базам данных из диалплана. Стандартная команда MYSQL не совсем удобна. Плюс ко всему необходимо хранить историю вызовов, а также событий звонков астериска. Для этого используются таблицы cdr и cel соответственно. Для всего этого используется драйвер ODBC.
ODBC – программный интерфейс для работы с БД. Разработан был компанией Microsoft и Simba Technologies. Этот интерфейс позволяет подключать сторонние программные продукты к БД.
В данной статье будет рассмотрена установка и конфигурирование драйверов ODBC на систему Centos 6.9. А также установка Asterisk c модулями odbc и настройка asterisk для работы с mysql.
В данном разделе будет рассмотрен порядок действий для установки драйвера ODBC, а также настройка параметров для корректной работы драйвера.
Для работы драйвера необходимо установить ряд пакетов из репозиториев:
Если вы не знаете установлены эти пакеты у вас или нет. Можете воспользоваться следующей командой:
Она выводит список всех установленных пакетов. В названии которых встречаются слова odbc или libtool или mysql.
В данном разделе будет описана пошаговая настройка системы для работы драйвера ODBC. Расскажем, какие файлы нужно редактировать для внесения настроек, как проверить правильность внесенных данных, а также какие пункты нужно менять в изменяемых файлах.
После установки драйвера необходимо указать в конфигурационном файле /etc/odbcinst.ini пути к файлам драйверов. Для этого необходимо найти установленные файлы:
Для того, чтобы найти эти файлы воспользуемся консольной утилитой find.
Перепишем указанные директории в файл настроек ODBC. Для этого откроем его любым текстовым редактором, в данном случае это vim
Теперь надо указать пути к файлам. За это отвечают параметры Driver, Driver64, Setup, Setup64. Названия соответствуют разрядности системы i686 и x86_64. В итоге должно пучиться как на примере ниже:
После сохранения данных проверим, область видимости драйвера командой
В итоге должно отобразиться следующее:
Если после выполнения данной команды у вас в консоле отобразились данные строки, то вы всё верно настроили. Теперь надо редактировать файл, где будет указан идентификатор подключения к БД — /etc/odbc.ini. Важные поля:
После редактирования должно получиться следующее:
Проверим подключение к Mysql через указанный [ ], который был прописал в файл odbc.ini. Проверить подключени можно следующей командой:
Должно вывести следующее как на скриншоте ниже
Не всегда администраторы, поддерживающие asterisk, собирают его с модулями необходимыми для работы с odbc. Поэтому в данном пункте будет показано, как пересобрать астериск с нужными модулями.
Для того, чтобы пересобрать asterisk, нужно перейти в директорию исходных файлов Asterisk. В данном случае — это /usr/src/asterisk-13.21.0/.
Поскольку астериск уже установлен, поэтому заново выполнять команду ./configure не нужно. Поэтому перейдем к следующему шагу make menuselect.
Теперь необходимо выбрать все модули, в которых в названии есть odbc.
Ниже приведена таблица с названием раздела и именем модуля.
| Call Detail Recording | cdr_odbc cdr_adaptive_odbc |
| Channel Event Logging | cel_odbc |
| Resource Modules | res_odbc res_odbc_transaction |
Далее, как и при обычной установке астериска выполняем Save & Qiut, make, make install.
Для того, чтобы Asterisk писал в БД события и историю вызовов необходимо его сконфигурировать. Для этого надо указать настройки в нескольких файлах, которые находятся в директории /etc/asterisk. В данном разделе будет описано в какие файлы необходимо внести изменения, какие данные необходимо внести в них, а также возможность проверки правильности настроек.
Первым отредактируем файл res_odbc.conf. Если вы используете FreePBX, вам необходимо редактировать файл res_odbc_additional.conf.
В этом файле указывается:
В итоге должно получиться следующее:
Сохраняете изменения в этом файле, далее нужно вносить изменения в файл cdr_odbc.conf (если установлен FreePBX – cdr_adaptive_odbc.conf).
В итоге должно получиться как на скриншоте ниже:
Далее сохраняются изменения и необходимо их применить. Для этого открывается консоль астериска командой asterisk —rvvvv. Из этой консоли выполнить две команды:
Проверить правильность настроек можно командой odbc show из консоли астериска. Если выполнено все правильно то должно получиться как на скриншоте ниже.
После выполнения указанных выше действий вы сможете просматривать историю вызовов (CDR – call detail records). Также можно выполнять действия с данной таблицей из диалплана обращаясь к ней встроенной функцией астериска CDR()— что позволяет гибко оперировать логикой звонка.
Если включить фантазию и немного подумать, можно прикрутить еще и использование дополнительных таблиц через дополнительный файл func_odbc.conf. Но это уже другая статья
Хранение конфига Asterisk в СУБД MySQL / MariaDB
Asterisk PBX поддерживает возможность хранения конфигурации в различных СУБД. В нашей инструкции рассмотрим связку с MariaDB (MySQL) на Linux Ubuntu. Мы будем использовать ODBC коннектор и метод обработки RealTime или в реальном времени (после изменения конфигурации в базе, нам не нужно будет перезапускать сервер телефонии, чтобы применить настройки).
Процесс установки и базовой настройки Asterisk подробнее рассмотрен в статье Установка Asterisk на Linux.
Установка СУБД
apt-get install mariadb-server
Разрешаем автозапуск сервиса и запускаем его:
systemctl enable mysql
systemctl start mysql
Ставим пароль для суперпользователя СУБД:
Сборка Asterisk
Если Asterisk уже установлен и изначально не собирался с учетом MySQL, необходимо выполнить сборку снова. Сначала смотрим версию установленного Asterisk:
Переходим по ссылке https://downloads.asterisk.org/pub/telephony/asterisk и копируем ссылку на нашу версию продукта. После скачиваем ее, например:
Распаковываем архив и переходим в каталог с распакованным содержимым:
* где . — опции + with-mysqlclient, который отвечает для работу с MySQL.
Открываем окно дополнительных настроек:
В разделе Add-ons ставим все опции, связанные с mysql:
Выбираем Save & Exit.
Собираем исходник и устанавливаем его:
Настройка
Подключаемся к MariaDB:
Создаем базу данных и пользователя:
> CREATE DATABASE asterisk DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
> GRANT ALL PRIVILEGES ON asterisk.* TO ‘asteruser’@’localhost’ IDENTIFIED BY ‘asterpassword123’;
* данными командами мы создали базу данных asterisk и предоставили к ней доступ пользователю asteruser с паролем asterpassword123.
Загружаем данные в базу:
* где /usr/src/asterisk-15.1.2 — путь до распакованного исходника.
ODBC коннектор
Переходим по ссылке https://dev.mysql.com/downloads/connector/odbc и выбираем нашу версию операционной системы:
Кликаем по Download и копируем ссылку на скачивание файла:
В командной строке скачиваем файл, воспользовавшись ссылкой:
Распаковываем архив и переходим в него:
cp lib/libmyodbc5* /usr/lib64
Устанавливаем odbc драйвер:
Для подключения астериска к базе, создаем DSN:
* где MySQL — имя драйвера, который мы создали на предыдущем шаге; asterisk, asteruser, asterpassword123 — соответственно, имя базы данных, имя пользователя и пароль для подключения к СУБД.
* в случае необходимости, отредактировать DSN можно в файле /etc/odbc.ini.
Делаем тестовое подключение:
Asterisk
Открываем конфигурационный файл с настройкой модулей:
Добавляем в него следующие строки:
preload => res_odbc.so
preload => res_config_odbc.so
Настраиваем подключение к базе через DSN:
[asterisk-conf]
enabled => yes
dsn => Asterisk
username => asteruser
password => asterpassword123
pre-connect => yes
max_connections => 100
sanitysql => select 1
systemctl restart asterisk
Подключаемся к его консоли:
Проверяем, что астер увидел odbc:
Добавление настроек в базу
На текущем шаге, Asterisk будет использовать конфигурационные файлы. Рассмотрим процесс настройки использования СУБД с добавлением настроек в базу.
Создание extensions
Редактируем файл extconfig.conf:
[settings]
sipusers => odbc,asterisk-conf,sippeers
sippeers => odbc,asterisk-conf,sippeers
* мы добавили две строчки в раздел settings, которые говорят астериску искать пиры через odbc, настройку asterisk-conf.
systemctl restart asterisk
В дальнейшем, все номера, которые мы будем добавлять в базу данных начнут использоваться в режиме реального времени (без необходимости перезапускать телефонную станцию).
Подключаемся к базе данных:
Добавим 4-е коротких номера:
> INSERT INTO asterisk.sippeers
(`name`, `defaultuser`, `host`, `type`, `context`, `secret`, `nat`, `callgroup`, `language`, `disallow`, `allow`, `regexten`, `call-limit`)
VALUES
(‘1001’, ‘1001’, ‘dynamic’, ‘friend’, ‘outcalling’, ‘1234’, ‘no’, ‘1’, ‘ru’, ‘all’, ‘alaw,ulaw’, ‘1001’, ‘4’),
(‘1002’, ‘1002’, ‘dynamic’, ‘friend’, ‘outcalling’, ‘1234’, ‘no’, ‘1’, ‘ru’, ‘all’, ‘alaw,ulaw’, ‘1002’, ‘4’),
(‘1003’, ‘1003’, ‘dynamic’, ‘friend’, ‘outcalling’, ‘1234’, ‘no’, ‘1’, ‘ru’, ‘all’, ‘alaw,ulaw’, ‘1003’, ‘4’),
(‘1004’, ‘1004’, ‘dynamic’, ‘friend’, ‘outcalling’, ‘1234’, ‘no’, ‘1’, ‘ru’, ‘all’, ‘alaw,ulaw’, ‘1004’, ‘4’);
* в данном примере мы создаем 4 номера 1001, 1002, 1003, 1004 с правилом обработки вызова в диалплане outcalling и паролем 1234.
Обновить запись можно командой UPDATE, например:
> UPDATE asterisk.sippeers SET `secret`=’password’ WHERE `name`=’1001′;
Проверить состояние абонентов и транков SIP можно подключившись к консоли Asterisk:
*CLI> sip show peers
Правила вызова (контекст)
Открываем следующий файл:
Добавляем в раздел [settings]:
[settings]
.
extensions => odbc,asterisk-conf,extensions
Открываем файл extensions.conf:
Создаем диалплан (группу правил):
[outcalling]
switch => Realtime/outcalling@extensions
systemctl restart asterisk
Подключаемся к базе и добавляем правило в диалплан outcalling:
> INSERT INTO asterisk.extensions VALUES (NULL, ‘outcalling’, ‘_XXXX’, ‘1’, ‘DIAL’, ‘SIP/$
Call Detail Record (CDR)
Теперь настроем хранение журнала вызовов в базе данных.
Открываем следующий файл:
Добавляем в самый низ:
[cdr]
connection=asterisk-conf
table=cdr
alias src => source
alias channel => source_channel
alias dst => dest
alias dstchannel => dest_channel
systemctl restart asterisk
Пробуем позвонить через наш астериск и после звонка смотрим записи в базе:
Получим примерно следующее:
| accountcode | src | dst | dcontext | clid | channel | dstchannel | lastapp | lastdata | start | answer | end | duration | billsec | disposition | amaflags | userfield | uniqueid | linkedid | peeraccount | sequence |
+————-+——+——+————+—————+——————-+——————-+———+————-+———————+———+———————+———-+———+————-+—————+————+—————+—————+————-+———-+
| NULL | 1001 | 1004 | outcaling | «1001» | SIP/1001-00000000 | SIP/1004-00000001 | Dial | SIP/1004,,m | 2017-12-07 16:11:24 | NULL | 2017-12-07 16:11:32 | 7 | 0 | NO ANSWER | DOCUMENTATION | NULL | 1512652284.0 | 1512652284.0 | NULL | 0 |
Или в более читаемом виде:
Также существуют продукты, позволяющие в графическом интерфейсе смотреть CDR. Например, веб-приложение Asterisk CDR Viewer Mod.
ИТ База знаний
Полезно
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
CDR в FreePBX на внешний сервер
В том случае, если на вашем предприятии организован мощный отдел продаж и ежедневно вы обрабатываете большое количество вызовов, то база данных, в которую складываются записи CDR (Call Detail Record) начинается переполняться и наращивать объем. Со временем, это может негативно сказаться на производительности сервера, приводя к замедлению обработки процессов резервного копирования и обновления системы.
Базовый курс по Asterisk
Мы собрали концентрат всех must have знаний в одном месте, которые позволят тебе сделать шаг вперед на пути к экспертному владению Asterisk
Если вы не хотите удалять старые записи в базе данных, то элегантным решением данной проблемы будет перемещение базы данных для CDR на отдельный сервер. О том, как это осуществить мы расскажем в этой статье.
Рабочие условия
Предположим, что в нашем корпоративном контуре имеются следующие виртуальные машины:
Поддерживаемые типы баз данных это MySQL (MariaDB) и PostgreSQL;
Предварительно, настройте разрешения на подключения с IP – адреса АТС (файл pg_hba.conf в PostgreSQL и командно через консоль в случае MySQL) и создайте пользователя freepbxuser. Произведем тест на связность. Дадим команду с консоли сервера Asterisk:
Введите пароль для подключения. Если все ОК, переходим к настройке FreePBX.
Настройка FreePBX
Переходим в раздел Settings → Advanced Settings. Убеждаемся, что параметры Display Readonly Settings и Override Readonly Settings установлены в значение Yes.
Применяем конфигурацию нажатием Submit и Apply Config. Теперь находим сегмент настройки под названием Remote CDR Database и вносим следующие настройки:
Более подробно почитать про базу данных asteriskcdrdb вы можете почитать в этой статье;
Сохраняем изменения и переходим в консоль сервер АТС. Останавливаем FreePBX:
Сохраняем изменения в файле и запускаем FreePBX:
Теперь остается только проверить функционал. Сделайте пару тестовых звонков и проверьте их наличие в БД на удаленном хосте.
Базовый курс по Asterisk
Мы собрали концентрат всех must have знаний в одном месте, которые позволят тебе сделать шаг вперед на пути к экспертному владению Asterisk
Работа с модулями FreePBX – часть 2: работа с базой, импорт и экспорт
Описание: в предыдущей статье мы научились создавать собственные модули в системе администрирования FreePBX, и пользоваться ими для вывода информации из БД. Теперь рассмотрим возможность редактирования базы, а именно удаление и добавление записей. В заключение будет дана информация по импорту и экспорту готового модуля в другие интерфейсы на базе FreePBX. Все эксперементы продолжим на модуле из […]
Описание: в предыдущей статье мы научились создавать собственные модули в системе администрирования FreePBX, и пользоваться ими для вывода информации из БД. Теперь рассмотрим возможность редактирования базы, а именно удаление и добавление записей. В заключение будет дана информация по импорту и экспорту готового модуля в другие интерфейсы на базе FreePBX.
Все эксперементы продолжим на модуле из предыдущей статьи.
Открываем для редактирования главную страницу:
И приводим к следующему виду
Что приведёт к следующим визуальным изменениям:
Как видим, в сравнении с прошлой формой у нас появились иконки действий: удаление и добавление. Но пока что они не работают, поскольку нет обработчика. Добавим и его. Нам понадобится следующий файл:
Внутри нужно найти функцию выполняемую при открытии страницы, а именно: doConfigPageInit и добавляем обработчик двух событий
Проще и эффективнее всего для этого завести Switch в следующем виде.
Теперь нужно добавить два соответствующих метода класса, которые и будет вызывать с передачей параметров обработчик выше.
Дописывать в самый конец класса, перед последней фигурной скобкой.
Последний шаг перед тестированием. Ввиду особенностей FreePBX возможности добавления требуется ещё один момент, а именно правка js-скрипта. На этот раз открываем файл:
Здесь мы добавим обработчик нажатия на «плюсик», а так же настроим «защиту от дурака». Данные не будут отправляться на сервер если одно или несколько обязательных полей не будут заполнены. Скрипт примет вид:
После сохранения изменений и перезагрузки страницы с очисткой КЭШа можно проверить работоспособность модуля по удалению и добавлению элементов. На стенде это выглядит следующим образом:
Итак. На этот момент мы научились создавать свой модуль, добавлять ему функции чтения, удаления, записи – т.е. все возможности редактирования и просмотра. Осталось только рассмотреть возможность переноса модуля из одного интерфейса FreePBX в другой, а это возможно посредством импорта и экспорта модулей. Давайте продемонстрируем на примере нашего нового модуля.
Вспомним, какие приготовления в MySQL мы произвели перед началом работы с интерфейсом?
Все дальнейшие операции использовали именно этот ресурс, поэтому при установке модуля нам так же понадобится произвести создание новой таблицы. Для операций подготовки при установке модуля существует скрипт:
По умолчанию он пуст, но мы его изменим следующим образом:
Как вы можете заметить единственная и основная задача скрипта создать новую таблицу и проследить корректность этого процесса. Теперь займёмся обратным действием: удалением. Для этого редактируем скрипт-близнец «install.php»:
Его содержимое призвано вычистить все следы модуля и, при необходимости, выполнить перезапуск FreePBX. Реализуем удаление созданной таблицы.
Как видно на скриншоте выше: была допущена ошибка в команде удаления таблицы и исправлена на корректную строку.
Мы позаботились об автоматических действиях, выполняемых при установке и удалении, теперь перейдём к выполнению экспорта и установки на другом сервере. Для этого подключаемся по SSH и переходим в директорию модуля.
И выполняем архивацию средствами встроенного архиватора TAR.
Полученный архив мы можем установить на другой сервер через интерфейс FreePBX.
Для этого переходим по ссылке, как указано на скриншоте:
Нажимаем вверху на загрузку модулей.
Выбираем загрузку с жёсткого диска, и загружаем файл модуля на АТС.
После этого шага нам нужно вернуться на страницу работы с модулями и раскрыть появившийся пункт с названием нашего модуля. После чего выбрать пункт «install»
После чего листаем в самый конец страницы и нажимаем на «process»
Предпоследний шаг перед установкой модуля. Нужно ознакомиться со списком операций и дать подтверждение: нажать «confirm». После чего начнётся процесс установки модуля.
Последним шагом, как и всегда, применяем изменения нажатием «apply config».
На этом установка нового модуля завершена, можно открыть по ссылке в интерфейсе и приступать к эксплуатации. Переходим по ссылке.
И если все действия были произведены правильно, попадаем на главную страницу нового модуля.
Осталось рассмотреть лишь удаление. Но внимательные пользователи уже могли заметить, как это сделать. Достаточно вернуться на страницу администрирования и в раскрытом списке модуля выбрать один из вариантов действий.
Итого: по завершению этих двух статей мы научились







