Автораспределение звонка на ответственного менеджера
Для версии после 3.0
Модуль может определять ответственно го за клиента сотрудника и переводить звонок на него.
Для автоматического направления входящего звонка на менеджера, ответственного за сущность (контакт/компания/лид) в CRM, нужно настроить дополнительный контекст, куда направить все звонки на входящем маршруте. Либо можно включить этот контекст в любую точку вашей логики входящего звонка, например после выбора определенного маршрута на IVR.
- 1.Входящий звонок в Asterisk поступает на специальный контекст, в котором вызывается запрос ответственного через модуль.
- 2.Имея номер телефона клиента, модуль обращается в CRM (Битрикс24 либо amoCRM), CRM возвращает название компании, и внутренний номер ответственного сотрудника. Если не нашел, то ответ будет пустой.
- 3.Контекст в Asterisk задает имя клиента и перевод на полученный внутренний номер. Если придет пустое значение, то уведет звонок по стандартному маршруту.
Чтобы запрос сработал, в Asterisk должен быть включен CURL.
Проверить можно так:
$ asterisk -rx 'core show function CURL'
В результате должны получить описание функции CURL
. Если функция CURL
отсутствует, то ее нужно установить на сервер Asterisk.Далее в диалплане создаем кастомный контекст, на который звонок будет приходить ДО голосового приветствия (подходящий кейс – распределить звонок до того, как клиент услышит IVR).
В файле /etc/asterisk/extensions_custom.conf прописываем контекст.
Пример контекста (обратите внимание на код – его нужно изменить):
[itgrix-transfer]
exten => _.,1,Noop(Itgrix transfer)
same => n,Set(CURLOPT(hashcompat)=yes)
same => n,Set(CURLOPT(httptimeout)=5)
same => n,Set(CURLOPT(conntimeout)=5)
same => n,Set(HASH(forwardHash)=${CURL(http://localhost:8077/forward?phone=${CALLERID(num)}&trunk=${EXTEN}&callid=${CHANNEL(linkedid)})})
same => n,Set(CALLERID(name)=${HASH(forwardHash,name)})
same => n,GotoIf($[${HASH(forwardHash,number)}]?from-internal,${HASH(forwardHash,number)},1:ivr-1,s,1)
где
localhost:8077
– IP-адрес и порт сервера, на котором установлен модуль, 8077 – дефолтное значение порта, на котором слушает модуль.
ivr-1,s,1
– контекст с IVR, куда уходит вызов в том случае если не удалос ь найти ответственного в CRM. Как найти нужный контекст.
CURLOPT(conntimeout)=5
– таймаут 5 сек для выполнения запроса. Если на запрос не будут получен ответ, то звонок уйдет дальше по стандартному маршруту.Логика работы:
- 1.Через модуль выполняется запрос в CRM с поиском ответственного за сущность по полученному номеру:
http://localhost:8077/forward?phone=${CALLERID(num)}&trunk=${EXTEN}&callid=${CHANNEL(linkedid)}
. В ответ приходит внутренний номер и имя сущности. - 2.
HASH(forwardHash)
– разделяет ответ на два параметра –name
иnumber
. - 3.Если внутренний номер найдет – звонок переведется на ответственного
GotoIf
. - 4.Если номер не найден – звонок пойдет по второму пути (в данном примере
ivr-1,s,1
).
В запрос
/forward
также передаются параметры trunk
и callid
, которые могут понадобиться для кастомизации автораспределения.Чтобы все заработало, необходимо включить наш кастомный контекст в диалплан FreePBX.
Для этого воспользуемся модулем Custom Destinations. Подробнее о Custom Destinations.
- 1.Переходим по пути Admin (Администратор) → Custom Destinations (Дополнительные назначения) и нажимаем Add Destination:

В поле Target указываем
itgrix-transfer,${EXTEN},1
. Нажимаем Submit и Apply Config.
Контекст добавлен.Важно передать в контекст
${EXTEN}
, чтобы в дальнейшем можно было в запрос /forward
передать транк (параметр trunk=${EXTEN}
).2. Переходим в Connectivity (Подключения) → Inbound Routes (Входящая маршрутизация) выбираем входящий маршрут, для которого настраивается автораспределение, и в блоке Set Destination указываем Custom Destinations (Дополнительные назначения), выбираем
itgrix-transfer
. 
Last modified 1mo ago