Интеграция с Asterisk

Интеграция с Asterisk через Asterisk AMI

Интеграция системы vsDesk с платформой IP-телефонии Astersik позволяет отображать информацию о звонящем заказчике во всплывающем окне, быстро создать нового пользователя системы и его компанию (если номера заказчика нет в локальной БД), а затем создать заявку от имени заказчика. Для заказчика занесенного в БД во всплывающем окне отобразится информация о имени, номере телефона и компании заказчика, а также позволит создать новую заявку от имени определенного заказчика или перейти в карточку звонка. Система сравнивает номер звонящего с двумя полями Телефон и Внутренний телефон в справочнике Пользователи, поэтому необходимо привести все номера в БД к формату +7XXXXXXXXXX, если это мобильный или городской номер (без скобок и тире). Система передает данные о звонке в интерфейс исполнителя, на внутренний номер которого поступил звонок

Для включения интеграции, со стороны Asterisk (в файле manager.conf) необходимо создать отдельную учетную запись или использовать имеющуюся для доступа к Asterisk AMI с набором прав, указанным ниже (рекомендованный набор прав может быть изменен в целях повышения безопасности):

[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
[amimanager]
secret = mysecret
deny=0.0.0.0/0.0.0.0
permit=0.0.0.0/0.0.0.0
read = system,call,log,verbose,agent,user,config,dtmf,reporting,cdr,dialplan
write = system,call,agent,log,verbose,user,config,command,reporting,originate
writetimeout = 5000

где в поле secret, укажите секретную фразу, а в поле permit, укажите IP-адрес сервера vsDesk для получения доступа к AMI.

Для получения записи звонков из Asterisk необходимо включить HTTP сервер в настройках, во FreePBX например включен по умолчанию.

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

cd /var/www/html

ln -s /var/spool/asterisk/monitor records

Теперь ваши записи должны быть доступны через веб по адресу сервера http(s)://asterisk_ip/records/

Для усиления безопасности рекомендуем в папке /var/spool/asterisk/monitor создать файл .htaccess со следующим содержимым:

Options -Indexes

Отредактируйте файл в папке дистрибутива /lib/ami.php где укажите следующие значения:

AC_DB_CS - строка подключения к БД CDR Asterisk, где необходимо указать хост, порт и имя БД;

AC_DB_UNAME - имя пользователя имеющего доступ к БД;

AC_DB_PASS - пароль пользователя имеющего доступ к БД;

AC_RECORD_PATH - путь к веб каталогу с записями, который мы создали на предыдущих шагах;

define('AC_DB_CS', 'mysql:host=localhost;port=3306;dbname=asteriskcdrdb');
define('AC_DB_UNAME', 'freepbxuser');
define('AC_DB_UPASS', 'freepbxpassword');
define('AC_RECORD_PATH', 'https://asterisk_ip/records/%Y/%m/%d/#');

Скопируйте из папки дистрибутива файл /lib/ami.php в веб директорию сервера Asterisk, в примере /var/www/html/

После внесения изменений в manager.conf необходимо в консоли Asterisk выполнить команду:

# asterisk -rx "module reload manager"

Настройки интеграции в vsDesk

Для интеграции со стороны vsDesk необходимо настроить несколько параметров:

  • В меню Настройки - Основные настройки, должен быть включен параметр "Использовать всплывающие уведомления" или же при использовании Push-уведомлений Google этот параметр можно не включать;

  • В меню Настройки - Управление ролями для роли Администратор должны быть включены доступы к настройкам интеграции с Asterisk в категории Настройки;

  • В меню Настройки - Управление ролями для роли Администратор должны быть включены доступы на чтение/просмотр/ удаление в категории Звонки;

  • В меню Настройки - Управление ролями для роли Исполнитель должны быть включены доступы на чтение/просмотр/ в категории Звонки (исполнитель будет видеть только звонки направленные на его внутренний номер);

  • В меню Настройки - Управление ролями для роли Исполнитель должны быть включены доступы на создание в категории Пользователи (для добавления нового пользователя из формы звонка);

Хост подключения Asterisk management API- укажите IP-адрес или DNS-имя сервера Asterisk; Asterisk management API port- порт для подключения к AMI, по умолчанию 5038; Схема подключения к Asterisk management API (tcp:// рекомендуемая)- схема подключения может принимать значение tcp:// или udp:// (tcp:// рекомендуемая); Пользователь Asterisk management API- имя пользователя, которое мы указывали в файле manager.conf Asterisk (в нашем примере amimanager); Секрет Asterisk management API- секретная фраза, которую мы указывали в фале manager.conf Asterisk; Таймаут подключения Asterisk management API- таймаут (в миллисекундах) для подключения к сокету AMI, по умолчанию 10000; Таймаут чтения Asterisk management API- таймаут (в миллисекундах) для чтения данных из сокета AMI, по умолчанию 10000;

Asterisk context - контекст выполнения исходящего звонка в Asterisk прописанный в Dial plan экстеншена.

Asterisk channel - канал через который осуществляется исходящий вызов в Asterisk.

Путь к записям звонков - путь к файлу ami.php, который мы с вами скопировали на одном из предыдущих шагов, например http(s)://asterisk_ip/ami.php

Настройка планировщика задач

Для пользователей системы vsDesk, получивших обновление необходимо прописать в планировщике задач, задание позволяющее перезапускать через указанный интервал демон подключения к Asterisk AMI. Для Windows пользователей в меню Open-server в меню Настройки - вкладка Планировщик заданий, необходимо добавить задачу со следующими настройками и интервалом раз в 5 минут:

%sprogdir%/modules/php/%phpdriver%/php.exe %sprogdir%/domains/localhost/protected/cron.php pamirun

Для Linux пользователей в меню веб-интерфейса Настройки - Настройка задач планировщика, необходимо добавить задачу со следующими настройками

Интервал перезапуска влияет на бесперебойную работу демона, при стабильном соединении и небольшом количестве отказов получения информации о входящем звонке, можно увеличить интервал перезапуска до 30 минут или уменьшить до 1 минуты. Во время перезапуска могут быть недоступны данные о входящих звонках в течение 10-15 секунд.