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

Для версии после 3.0

Для автоматического направления входящего звонка на менеджера, ответственного за сущность (контакт\компания\лид) в CRM необходимо, чтобы в Asterisk был включен CURL. Проверить так: $ asterisk -rx 'core show function CURL' В результате должны получить описание функции curl. Если функция CURL отсутствует, то ее нужно устанавливать на сервер asterisk.

Далее в диалплане нужно создать контекст, на который звонок будет приходить ДО голосового приветствия.

Настройка контекста в Asterisk

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

[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/forward?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)

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

Логика работы следующая:

  1. Через модуль выполняется запрос в Битрикс24 с поиском ответственно за сущность по полученному номеруhttp://localhost:8077/forward?phone=${CALLERID(num)}. В ответ приходит внутренний номер и имя сущности.

  2. HASH(forwardHash) - разделяет ответ на два параметра name, number.

  3. Если внутренной номер найдет - звонок переведется на ответственного (GotoIf).

  4. Если номер не найден - звонок пойдет по второму пути (в данном примере ivr-1,s,1).

Настройка во FreePBX

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

  1. Переходим по пути Admin (Администратор) → Custom Destinations (Дополнительные назначения) и нажимаем Add Destination:

Создание дополнительного контекста

В поле Target указываем bx24transfer,1,1 Нажимаем Submit и Apply Config. Контекст добавлен.

2. Переходим в Connectivity (Подключения) → Inbound Routes (Входящая маршрутизация) выбираем входящий маршрут, для которого настраивается автораспределение, и в блоке Set Destination указываем Custom Destinations (Дополнительные назначения), выбираем bx24asterisk.

Назначение кастомного контекста во входящем маршруте

Как найти нужный дефолтный контекст

Если ответственный не будет найдет, то звонок должен уйти в контекст по умолчанию. В нашем примере это было 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;

    • Выбираем маршрут;

    • Щёлкаем правой кнопкой мыши по полю с названием маршрута

    • Выбираем "Исследовать элемент (Inspect element)". (см рисунок)

Поиск названия контекста для перенаправлеия звонка
  • В правом окне с исходным кодом страницы находим значение выбранного элемента. В нашем случае это ext-group,3,1 .

Поиск названия контекстак для перенаправления звонка
  • Данный маршрут указываем в контексте [bx24transfer] вместо ivr-1,s,1. exten => 1,n,GotoIf($[${TOEXT}]?from-internal,${TOEXT},ext-group,3,1)

В итоге, если ответственный не будет найдет, входящий звонок уйдет на группу ext-group,3