Инструменты пользователя

Инструменты сайта


configure_freepbx_for_cloud_version

Это старая версия документа.


Инструкция по подключению FreePBX к облачному сервису системы статистики ViStep.RU

Вводная

  • Данная инструкция написана используя FreePBX версии 13.0.191.11 с Asterisk 13.14.0 на борту.
    При возникновении каких-либо сложностей/вопросов с более ранними/поздними версиями системы, просьба написать нам на support@vistep.ru.
  • Для выполнения описанных ниже действий понадобится:
    - умение подключиться к серверу по ssh
    - умение редактировать файлы в текстовом редакторе (nano/vim/emacs/etc)
    - ясная голова и хорошее настроение ;-)

Настройка

В поставке по умолчанию (что называется «из коробки») FreePBX ведет БД asteriskcdrdb, а точнее табличку cdr, не совсем так, как это нужно для правильной работы системы статистики ViStep.RU. Также она совсем не пишет в таблицу queue_log, что является необходимым.
Поэтому нам потребуется выполнить несколько шагов настройки, для достижения нужного поведения FreePBX.

  1. Начнем с таблицы cdr.
    Подключимся к серверу по ssh, а затем к консоли MySQL-сервера
    [root@localhost ~]# mysql asteriskcdrdb 
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 1686
    Server version: 5.1.73 Source distribution
     
    Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
     
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
     
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
  2. Добавим табличке cdr новые поля id и filename и повесим триггер на INSERT для заполнения filename
    ALTER TABLE cdr ADD COLUMN filename VARCHAR(120) DEFAULT 'none';
    UPDATE cdr SET filename=recordingfile;
    ALTER TABLE cdr ADD COLUMN id INT(11) AUTO_INCREMENT PRIMARY KEY;
    DELIMITER $$
    CREATE TRIGGER `before_insert_cdr` BEFORE INSERT ON `cdr` FOR EACH ROW
    BEGIN
    SET NEW.filename=NEW.recordingfile;
    END $$
    DELIMITER ;
     

    При успешном выполнении запросов все должно выглядеть примерно вот так:

  3. Совершим вызов и проверим, что поле filename заполняется
  4. Теперь нам необходимо изменить логику заполнения полей dst и src в таблице cdr так, чтобы в них всегда попадали те номера, на которые/с которых поступил вызов (например, не номер оператора очереди, а наш городской номер, на который пришел вызов извне для dst или не номер транка, а номер внутреннего абонента для src).
    Для этого отредактируем файл cdr_adaptive_odbc.conf (FreePBX не перетрет его после рестарта, поэтому можно смело его редактировать), добавив в самом низу строку
    alias realdst => dst
    alias realsrc => src

    В итоге он примет вид:

  5. Дабы наши действия возымели силу, модулю cdr_adaptive_mysql.so нужно подсказать, что его конфиг изменился. Подключаемся к консоли asterisk и релоадим модуль вот так:
    [root@localhost asterisk]# asterisk -r
    localhost*CLI> module reload cdr_adaptive_odbc.so
    Module 'cdr_adaptive_odbc.so' reloaded successfully.
    localhost*CLI>  
  6. Пришло время последнего, но отнюдь не маловажного шага в разрезе конфигурирования таблицы cdr.
    В web-интерфейсе FreePBX отправимся по пути «Admin→ Config Edit», где в extensions_custom.conf внесем:
    [from-internal]
    exten => _X.,1,GoSub(set_right_src_dst_from-internal,start,1(${EXTEN},${CALLERID(num)}))
     
    [from-pstn-custom]
    exten => _X.,1,GoSub(set_right_src_dst_from-pstn,start,1(${EXTEN},${CALLERID(num)}))
     
    [set_right_src_dst_from-pstn]
    exten => start,1,Set(__FROMPSTNCALL=1)
     same => n,Set(CDR(realdst)=${ARG1})
     same => n,Set(CDR(realsrc)=${ARG2})
     same => n,Return()
     
    [set_right_src_dst_from-internal]
    exten => start,1,ExecIF(${FROMPSTNCALL}?Set(CDR_PROP(disable)=true):Set(CDR(realdst)=${ARG1}))
     same => n,Set(CDR(realsrc)=${ARG2})
     same => n,Return()
     

    А вот и скрин, для наглядности В завершении кликнем Save, затем Apply Config, позвоним на АТС, с АТС вовне и проверим корректность заполнения полей dst и src.

  7. С cdr разобрались, дело за queue_log. Эта таблица нужна нам для того, чтобы понимать какие события происходили в очередях Asterisk. Перво-наперво создадим ее
    CREATE TABLE `queue_log` (
     `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
     `time` TIMESTAMP NULL DEFAULT '0000-00-00 00:00:00',
     `callid` VARCHAR(32) NOT NULL DEFAULT '',
     `queuename` VARCHAR(32) NOT NULL DEFAULT '',
     `agent` VARCHAR(32) NOT NULL DEFAULT '',
     `event` VARCHAR(32) NOT NULL DEFAULT '',
     `data1` VARCHAR(100) NOT NULL DEFAULT '',
     `data2` VARCHAR(100) NOT NULL DEFAULT '',
     `data3` VARCHAR(100) NOT NULL DEFAULT '',
     `data4` VARCHAR(100) NOT NULL DEFAULT '',
     `data5` VARCHAR(100) NOT NULL DEFAULT '',
     PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
  8. Научим FreePBX(читай Asterisk) писать туда все то, что нам нужно.
    Отправляемся в web-интерфейс по знакомой дорожке и создаем новый файл под именем extconfig.conf, кликнув Add New File.
    Внести в него нужно лишь одну строчку
    [settings]
    queue_log => odbc,asteriskcdrdb

    Скрин: *не забываем про Save и Apply Configs
    После выполнения данных действий и совершения звонков в очереди, запрос из консоли mysql

    SELECT * FROM queue_log;

    должен вернуть вам нечто подобное *на запрос в скрине не ориентируйтесь, там я специально добавил условие, чтобы сократить выхлоп

  9. С препарированием нашей АТС по части БД закончили!
    Переходим к настройке синхронизации БД и файлов записей разговоров в облако ViStep.RU. Для этого воспользуйтесь инструкцией - https://wiki.vistep.ru/doku.php?id=cloud_daemon_sync

На этом все настройки завершены.
Если вы все сделали правильно, то через какое-то время (зависит от размера БД) сможете воспользоваться всеми отчетами системы статистики ViStep.RU в своем личном кабинете.
Повторюсь, если у вас остались вопросы и/или есть предложения/замечания, пишите нам на support@vistep.ru.

configure_freepbx_for_cloud_version.1516947145.txt.gz · Последние изменения: 2018/01/26 13:12 — Евгений Романенко