К списку статей

Автоматический перевод звонка на ответственного менеджера

Для автоматического направления входящего звонка на менеджера, ответственного за сущность (контакт\компания\лид) в CRM необходимо, чтобы:

  1. В Asterisk был включен CURL. Проверить так: $ asterisk -rx 'core show function CURL' В результате должны получить описание функции curl. Если функция CURL отсутствует, то ее нужно устанавливать на сервер asterisk.
  2. В диалплане АТС нужно создать контекст, на который звонок будет приходить ДО голосового приветствия.

Настройка астериск

В файле /etc/asterisk/extensions_custom.conf прописываем контекст. Пример контекста (обратите внимание на код, его нужно изменить):

[bx24transfer]
exten => 1,1,Set(CURLOPT(httptimeout)=5)
exten => 1,n,Set(CURLOPT(conntimeout)=5)
exten => 1,n,Set(TOEXT=${CURL(http://localhost:8077/forward?phone=${CALLERID(num)},,5)})
exten => 1,n,GotoIf($[${TOEXT}]?from-internal,${TOEXT},1:ivr-1,s,1)

В данном примере:

localhost:8077 - ip адрес и порт сервера, на котором установлен модуль,
ivr-1,s,1 - Контекст с IVR куда уходит вызов в том случае, если не удалось найти номер в CRM,
CURLOPT(conntimeout)=5 - таймаут 5 сек для выполнения запроса, если данные не будут получены, то звонок уйдет дальше.
Логика работы следующая:

  1. В переменную передается номер звонящего.
  2. Проверяется существование значения этой переменной (в переменной должен быть внутренний номер ответственного за лид/контакт/компанию).
    Если номер получен - осуществляется перевод звонка на ответственного (from-internal,${TOEXT},1 - в контексте "from-internal" создается звонок на номер TOEXT).
    Если ответа нет (или пустой) - звонок попадает на голосовое приветствие (в данном примере это ivr-1,s,1).

Пример диалплана, при котором вместе с номером ответственного, передаётся имя сущности в CALLERID. Это имя отобразится на аппарате:

[bx24transfer]
exten => 1,1,Set(CURLOPT(hashcompat)=yes)
exten => 1,n,Set(CURLOPT(httptimeout)=5)
exten => 1,n,Set(CURLOPT(conntimeout)=5)
exten => 1,n,Set(HASH(forwardHash)=${CURL(http://localhost:8077/extendedForward?phone=${CALLERID(num)})})
exten => 1,n,Set(CALLERID(name)=${HASH(forwardHash,name)})
exten => 1,n,GotoIf($[${HASH(forwardHash,number)}]?from-internal,${HASH(forwardHash,number)},1:ivr-1,s,1)

Настройка FreePBX

Необходимо включить наш кастомный контекст в диалплан FreePBX. Для этого воспользуемся модулем Custom Destinations. Подробнее о Custom Destinations.

  • Переходим по пути Admin (Администратор) → Custom Destinations (Дополнительные назначения) и нажимаем Add Destination: Image В поле Target указываем bx24transfer,1,1 Нажимаем Submit и Apply Config. Контекст добавлен.
  • Переходим в Connectivity (Подключения) → Inbound Routes (Входящая маршрутизация) выбираем входящий маршрут, для которого настраивается автораспределение, и в блоке Set Destination указываем Custom Destinations (Дополнительные назначения), выбираем bx24asterisk. Image
  • Если необходимо изменить направление вызова (ivr-1,s,1 не подходит), тогда нужно узнать контекст, в который необходимо направить звонок, и указать его в файле /etc/asterisk/extensions_custom.conf.
    • Для групп получим ext-group,N,1, где N - это номер группы. Номер группы можно узнать в Applications (Приложения) → Ring Groups (Группы вызова).
    • Маршрут для дополнительных назначений (custom destinations) можно узнать в Admin (Администратор) → Custom Destinations (Дополнительные назначения), в поле Target.
    • Для всех остальных случаев существует такой способ.
      • Переходим в Inbound Routes;
      • Выбираем маршрут;
      • Щёлкаем правой кнопкой мыши по полю с названием маршрута и выбираем "Исследовать элемент". Image
      • В окне с исходным кодом страницы находим значение выбранного элемента. Image
        В нашем случае это ext-group,3,1 . Данный маршрут указываем в контексте bx24transfer вместо ivr-1,s,1.