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

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

В файле /etc/asterisk/extensions_custom.conf прописываем контекст. Пример контекста (обратите внимание на код, его нужно изменить):
1
[bx24transfer]
2
exten => 1,1,Set(CURLOPT(httptimeout)=5)
3
exten => 1,n,Set(CURLOPT(conntimeout)=5)
4
exten => 1,n,Set(TOEXT=${CURL(http://localhost:8077/forward?phone=${CALLERID(num)},,5)})
5
exten => 1,n,GotoIf($[${TOEXT}]?from-internal,${TOEXT},1:ivr-1,s,1)
Copied!
где localhost:8077 – ip-адрес и порт сервера, на котором установлен модуль; ivr-1,s,1 – контекст с IVR, куда уходит вызов в том случае, если не удалось найти номер в CRM; CURLOPT(conntimeout)=5 – таймаут 5 сек для выполнения запроса (если на запрос не будут получен ответ, то звонок уйдет дальше по стандартному маршруту).
Логика работы следующая:
  1. 1.
    Через модуль выполняется запрос в Битрикс24 с поиском ответственного за сущность по полученному номеруhttp://localhost:8077/forward?phone=${CALLERID(num)}
  2. 2.
    Внутренний номер ответственного записывается в переменную{TOEXT}.
  3. 3.
    Если внутренний номер найден – звонок переведется на ответственного (GotoIf).
  4. 4.
    Если номер не найден – звонок пойдет по второму пути (в данном примере ivr-1,s,1).
Есть нужно показать имя сущности на аппарате, то настраиваем контекст следующим образом:
1
[bx24transfer]
2
exten => 1,1,Set(CURLOPT(hashcompat)=yes)
3
exten => 1,n,Set(CURLOPT(httptimeout)=5)
4
exten => 1,n,Set(CURLOPT(conntimeout)=5)
5
exten => 1,n,Set(HASH(forwardHash)=${CURL(http://localhost:8077/extendedForward?phone=${CALLERID(num)})})
6
exten => 1,n,Set(CALLERID(name)=${HASH(forwardHash,name)})
7
exten => 1,n,GotoIf($[${HASH(forwardHash,number)}]?from-internal,${HASH(forwardHash,numb
Copied!