Интеграция с ROISTAT

Для начала работы на Астериске уже должна быть настроена интеграция с Роистатом. Звонок на подменный номер роистат должен поступать по sip-каналу в Астерикс, для этого роистат подключается как sip-транк.

http://help.roistat.com/pages/viewpage.action?pageId=5472422

Схема получения данных из Ройстата:

1) Данные поступают на Астериск в определённый контекст.

2) В диалплане выполняется запрос к модулю для передачи данных из ройстата.

3) Модуль запоминает эти данные и ждёт завершения звонка (с call_id с шага [2]).

4) При завершении звонка, вызывается метод кастомизатора 'get_updated_entity_fields' (в версиях ДО 2.15.0 метод 'get_updated_lead_fields') (если это новый лид/контакт и если метод включен в конфиге), в который передаются звонок и данные Ройстата. Кастомизатор возвращает массив "ИМЯ_ПОЛЯ" => "ЗНАЧЕНИЕ".

5) Обновляются поля лида, полученные на шаге [4].

Запрос:

http://<host>:<port>/events/set_roistat_data

Ожидаем данные:

call_id=1517576391.958 x-roistat-phone=79111234567 x-roistat-marker=direct_search_1234567 x-roistat=123456

В Астериске:

"1?System(wget -rO - --tries=1 --timeout=10 'http://127.0.0.1:8077/events/set_roistat_data/?call_id=1531317864.18463&x-roistat-phone=77172695962&x-roistat-marker=%5B%D0%B0%D1%81%D1%82%D0%B0%D0%BD%D0%B0%5D2gis")

В кастомизатор, на метод 'get_updated_entity_fields' (в версиях ДО 2.15.0 метод 'get_updated_lead_fields') приходит звонок и массив полей из ройстата в виде:

'roistat': { 'x-roistat': 123456, 'x-roistat-marker': direct_search_1234567, 'x-roistat-phone': 79111234567 }

Если стандартные имена подходят, то выполняем слияние массивов:

$leadFields = array_merge($leadFields, $params['roistat']);

Если необходимо писать данные в поля с другими именами, это можно сделать, например так:

$leadFields = array( 'FIELD_NAME_FOR_ROISTAT_MARKER' => $params['roistat']['x-roistat-marker'] );