Powered By GitBook
Автораспределение звонка на ответственного менеджера
Для версии после 3.0
Модуль может определять ответственного за клиента сотрудника и переводить звонок на него. Для автоматического направления входящего звонка на менеджера, ответственного за сущность (контакт\компания\лид) в CRM, нужно настроить дополнительный контекст, куда направить все звонки на входящем маршруте. Либо можно включить этот контектс в любую точку вашей логики входящего звонка, например после выбора определенного маршрута на ivr.

Порядок работы

1. Входящий звонок в Астериск поступает на специальный контекст, в котором вызывается запрос ответственного через модуль. 2. Имея номер телефона клиента, модуль обращается в CRM (Битрикс24 либо amoCRM), CRM возвращает название компании, и внутренний номер ответственного сотрудника. Если не нашел, то ответ будет пустой. 3. Контекст в Астериске задает имя клиента и перевод на полученный внутренний номер. Если придет пустота, то уведетзвонок по стандратному маршруту. в Астериск внутренний номер сотрудника ответственного за контакт звонящего клиента, указанный в карточке CRM, для того чтобы АТС отправила вызов на этот внутренний номер.
Чтобы запрос сработал, в Asterisk должен быть включен CURL. Проверить так: $ asterisk -rx 'core show function CURL' В результате должны получить описание функции curl. Если функция CURL отсутствует, то ее нужно установить на сервер Asterisk.
Далее в диалплане создаем кастомный контекст, на который звонок будет приходить ДО голосового приветствия (подходящий кейс – распределить звонок до того, как клиент услышит ivr).

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

В файле /etc/asterisk/extensions_custom.conf прописываем контекст. Пример контекста (обратите внимание на код – его нужно изменить):
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/forward?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,number)},1:ivr-1,s,1)
Copied!
где localhost:8077 – ip-адрес и порт сервера, на котором установлен модуль, 8077 – дефолтное значение порта, на котором слушает модуль. ivr-1,s,1 – контекст с IVR, куда уходит вызов в том случае если не удалось найти ответственного в CRM. Как найти нужный контекст. CURLOPT(conntimeout)=5 – таймаут 5 сек для выполнения запроса. Если на запрос не будут получен ответ, то звонок уйдет дальше по стандартному маршруту.
Логика работы:
    1.
    Через модуль выполняется запрос в CRM с поиском ответственного за сущность по полученному номеру: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.
Автораспределение настроено можно перейти к тестированию работы.
Last modified 2mo ago