В первую очередь необходимо установить сам модуль. Найдите подходящую версию и скачайте модуль.
Затем установите модуль через Администратор>Управление модулями. После установки необходимо создать пользователя для подключения модуля к базе данных. Заходим на IP-АТС по SSH и под учетной записью root подключаемся к mysql командой
mysql -u root -h localhost.
Просмотреть базы можно командой SHOW DATABASES. Появится таблица наподобие приведенной ниже.
+-------------------------+
| Database |
+-------------------------+
| information_schema |
| asterisk |
| asteriskcdrdb
| mysql |
| performance_schema |
±--------------------------+
Нас интересует база asteriskcdrdb. Подключаемся к ней командой:
USE asteriskcdrdb. Далее создадим нового пользователя (В нашем случае UserName с паролем UserPassword).
CREATE USER 'UserName'@'localhost' IDENTIFIED BY 'UserPassword';
Зададим ему права доступа:
GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO 'UserName'@'localhost';
quit;
Пробуем подключиться в mysql под созданным пользователем командой:
mysql -u UserName -p -h localhost
Теперь можно переходить к настройкам маршрута. Заходим через web-интерфейс FreePBX, открываем Приложения>Dynamic Route и добавляем новый динамический маршрут.
Чтобы переадресация FreePBX работала корректно, в поле Dynamic Route Name задаете произвольное имя для своего маршрута.
В Source Type выберите MySQL и введите:
MySQL hostname — 127.0.0.1,
MySQL database - MySQL database,
MySQL username — имя пользователя в mqsql,
MySQL password — пароль пользователя.
Важный момент при настройке перевода звонка в FreePBX - MySQL query, запрос в базу, на основании которого модуль будет решать куда направить звонок. В нашем случае запрос выглядит так:
SELECT SUBSTRING(dstchannel,5,3) AS Initial FROM `cdr` WHERE `src`='${CALLERID(num)}' AND `disposition`='ANSWERED' AND `lastapp`='DIAL' AND `billsec` > 20 AND TIMESTAMPDIFF(MINUTE,calldate,NOW()) < 60 ORDER BY `calldate` DESC LIMIT 1
Из-за того, что входящие звонки поступают в группу в поле `dst` попадает номер группы, а не внутреннего абонента. При повторном звонке клиент всё равно позвонил бы на очередь. Поэтому внутренний номер приходится вырезать из имени канала командой SUBSTRING из столбца dstchannel (берем 3 символа, начиная с 5-ого). Командой TIMESTAMPDIFF(MINUTE,calldate,NOW()) < 60 проверяем прошло ли 60 минут с момента последнего звонка.
Настройка переадресации в FreePBX
В секции Dynamic Route Entries нужно заполнить назначение для каждого возможного результата sql запроса, то есть для каждого внутреннего номера. Для переадресации FreePBX добавляем Default Destination, направление если запрос ничего не вернет. Теперь осталось настроить входящий маршрут на модуль Dynamic Routes.Готово! Перевод звонка через FreePBX настроен. Теперь при повторных звонках клиента, будет автоматическая переадресация FreePBX на менеджера, с которым он общался ранее.