Найти тему
7,4K подписчиков

CDR в FreePBX на внешний сервер

130 прочитали

В том случае, если на вашем предприятии организован мощный отдел продаж и ежедневно вы обрабатываете большое количество вызовов, то база данных, в которую складываются записи CDR (Call Detail Record) начинается переполняться и наращивать объем. Со временем, это может негативно сказаться на производительности сервера, приводя к замедлению обработки процессов резервного копирования и обновления системы.

Если вы не хотите удалять старые записи в базе данных, то элегантным решением данной проблемы будет перемещение базы данных для CDR на отдельный сервер. О том, как это осуществить мы расскажем в этой статье.

РАБОЧИЕ УСЛОВИЯ

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

  • 192.168.1.2 - сервер IP – АТС Asterisk с графической оболочкой FreePBX;
  • 192.168.1.3 - сервер, на котором развернута база данных MySQL;
Поддерживаемые типы баз данных это MySQL (MariaDB) и PostgreSQL;

Предварительно, настройте разрешения на подключения с IP – адреса АТС (файл pg_hba.conf в PostgreSQL и командно через консоль в случае MySQL) и создайте пользователя freepbxuser. Произведем тест на связность. Дадим команду с консоли сервера Asterisk:

mysql --host=192.168.1.3 -ufreepbxuser -p asteriskcdrdb

Введите пароль для подключения. Если все ОК, переходим к настройке FreePBX.

НАСТРОЙКА FREEPBX

Переходим в раздел SettingsAdvanced Settings. Убеждаемся, что параметры Display Readonly Settings и Override Readonly Settings установлены в значение Yes.

В том случае, если на вашем предприятии организован мощный отдел продаж и ежедневно вы обрабатываете большое количество вызовов, то база данных, в которую складываются записи CDR (Call Detail Record)

Применяем конфигурацию нажатием Submit и Apply Config. Теперь находим сегмент настройки под названием Remote CDR Database и вносим следующие настройки:

В том случае, если на вашем предприятии организован мощный отдел продаж и ежедневно вы обрабатываете большое количество вызовов, то база данных, в которую складываются записи CDR (Call Detail Record)-2
  • Remote CDR DB Host - IP – адрес хоста, на котором развернута база данных. В нашем примере это 192.168.1.3;
  • Remote CDR DB Name - имя базы данных. Укажите здесь asteriskcdrdb;
  • Remote CDR DB Password - пароль для подключения к MySQL от пользователя freepbxuser;
  • Remote CDR DB Port - порт, на котором база данных на удаленном хосте слушает запросы;
  • Remote CDR DB Table - таблица, внутри БД, с которой мы будет работать. Указываем здесь cdr;
  • Remote CDR DB Type - тип базы данных. Мы указываем MySQL;
  • Remote CDR DB User - имя пользователя, под которым мы производим подключение;
Более подробно почитать про базу данных asteriskcdrdb вы можете почитать в этой статье;

Сохраняем изменения и переходим в консоль сервер АТС. Останавливаем FreePBX:

fwconsole stop

Редактируем файл odbc.ini. Там, в параметре server, нам необходимо указать IP – адрес хоста, на котором у нас развернута внешняя БД:

vim /etc/odbc.ini
[MySQL-asteriskcdrdb]
Description=MySQL connection to 'asteriskcdrdb' database
driver=MySQL
server=192.168.1.3 //замену производим вот тут
database=asteriskcdrdb
Port=3306
Socket=/var/lib/mysql/mysql.sock
option=3
Charset=utf8

Сохраняем изменения в файле и запускаем FreePBX:

fwconsole start

Теперь остается только проверить функционал. Сделайте пару тестовых звонков и проверьте их наличие в БД на удаленном хосте.