Автораспределение в версии до 3.0.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(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. Через модуль выполняется запрос в Битрикс24 с поиском ответственного за сущность по полученному номеруhttp://localhost:8077/forward?phone=${CALLERID(num)}

  2. Внутренний номер ответственного записывается в переменную{TOEXT}.

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

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

Есть нужно показать имя сущности на аппарате, то настраиваем контекст следующим образом:

[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,numb

Last updated