Comment on page
Запросы в Битрикс из кастомизации
При обновлении (в т.ч. на 3.4.0) кастомизатор не изменяется, чтобы не нарушить настроенную клиентом работу интеграции. Поэтому, потребуется обновить кастомизатор вручную.
Из пользовательской кастомизации можно делать запросы в Битрикс24 (например, создать задачу или лид) в тех случаях, когда стандартная логика обработки звонка не охватывает специфические случаи.
Для этого в API кастомизатора реализован класс
Bitrix
с соответствующими методами. Методы, их аргументы и возвращаемые значения подробно описаны в файле**/opt/itgrix_bx/customizer/README
**.Для работы HTTP-запросов в кастомизаторе нужно, чтобы в системе был установлен модуль php-curl (опционально, без php-curl кастомизатор будет выполнять всё кроме HTTP-запросов).
Проверить можно, выполнив в терминале команду:
php -r 'echo curl_version()["version"];'
Пример ответа:7.47.0
В кастомизациях доступен метод
Bitrix::createTask
, которая делает запрос в Битрикс24 на создание задачи, используя REST-метод tasks.task.add.
Описание полей задачи в документации REST API Битрикс24.Добавим вызов функции
Bitrix::createTask
в кастомизацию process_final_params
(настраивается в файле /opt/itgrix_bx/customizer/actions/process_final_params.php
).Логика модуля Itgrix по умолчанию предполагает создание задачи при регистрации пропущенного звонка (тоже можно кастомизировать). В данном примере будет создана новая задача для любого входящего звонка (в т.ч. отвеченного). Таким образом для пропущенных будет создано две задачи, если не отключить создание задачи по пропущенному в настройках модуля.
if ($params['call']['type'] === 2) { // 2 - входящий; 3 - исходящий
$phone = $params['call']['from'];
// Сделаем одного и того же постановщика и ответственного для задачи
$responsibleUserId = 49;
$createdByUserId = 49;
// Установим срок выполнения - 1 час после окончания звонка
$deadLine = date_create($params['call']['end_time']);
$deadLine->add(new DateInterval('PT1H'));
// Пример срока в 1 день:
//$deadLine->add(new DateInterval('P1D'));
$deadLine = $deadLine->format('c');
$response = Bitrix::createTask(array(
'TITLE' => 'Обработать звонок от '.$phone,
'CREATED_BY' => $createdByUserId,
'RESPONSIBLE_ID' => $responsibleUserId,
'DEADLINE' => $deadLine,
));
if ($response === false) {
return array(
'state' => 'error',
'data' => 'Не удалось создать задачу для номера '.$phone,
);
}
// // Для отладки можно вывести ответ Битрикса в лог модуля Itgrix:
// $this->logDebug('response: '.json_encode($response, JSON_UNESCAPED_UNICODE));
}
return array(
'state' => 'success',
'data' => $params,
);
В кастомизациях доступна функция
Bitrix::createLead
, которая делает запрос в Битрикс24 на создание лида, используя метод crm.lead.add.
Подробное описание полей лида в документации REST API Битрикс24.Функция
Bitrix::createLead
поддерживается начиная с версии 3.4.2.Добавим вызов функции
Bitrix::createLead
в кастомизацию process_final_params
(настраивается в файле /opt/itgrix_bx/customizer/actions/process_final_params.php
).В таком случае будет создан новый лид (ещё один), даже если Битрикс создаст лид при регистрации звонка модулем Itgrix.
if ($params['call']['type'] === 2) { // 2 - входящий; 3 - исходящий
$phone = $params['call']['from'];
$trunk = $params['call']['trunk'];
$fields = array(
'TITLE' => $phone.' - входящий звонок',
'STATUS_ID' => 'NEW',
'OPENED' => 'Y',
// 'ASSIGNED_BY_ID' => 49,
'SOURCE_ID' => 'CALL',
'SOURCE_DESCRIPTION' => 'Звонок на внешний номер: '.$trunk.
' Создан кастомизацией Asterisk-коннектора Itgrix',
'PHONE' => array(
array(
'VALUE' => $phone,
'VALUE_TYPE' => 'WORK',
),
),
);
// Если сущность - это контакт или компания, то привяжем лид к ней.
$entityType = $params['entity_type'];
$entityId = $params['entity_id'];
if ($entityType === 'contact') {
$fields['CONTACT_ID'] = $entityId;
} else if ($entityType === 'company') {
$fields['COMPANY_ID'] = $entityId;
}
$response = Bitrix::createLead(
$fields,
array(
'REGISTER_SONET_EVENT' => 'N',
)
);
if ($response === false) {
return array(
'state' => 'error',
'data' => 'Не удалось создать лид для '.$phone,
);
}
// // Для отладки можно вывести ответ Битрикса в лог модуля Itgrix:
// $this->logDebug('response: '.json_encode($response, JSON_UNESCAPED_UNICODE));
}
return array(
'state' => 'success',
'data' => $params,
);
Last modified 1yr ago