Запросы в amoCRM из кастомизации
При обновлении (в т.ч. на 2.6.0) кастомизатор не изменяется, чтобы не нарушить настроенную клиентом работу интеграции. Поэтому, потребуется обновить кастомизатор вручную.
Из пользовательской кастомизации можно делать запросы в amoCRM (например, создать задачу или сделку) в тех случаях, когда стандартная логика обработки звонка не охватывает специфические случаи.
Для этого в API кастомизатора реализован класс
Amo
с соответствующими методами. Методы, их аргументы и возвращаемые значения подробно описаны в файле**/opt/itgrix_amo/customizer/README
**.Для работы HTTP-запросов в кастомизаторе нужно, чтобы в системе был установлен модуль php-curl (опционально, без php-curl кастомизатор будет выполнять всё кроме HTTP-запросов).
Проверить можно, выполнив в терминале команду:
php -r 'echo curl_version()["version"];'
Пример ответа:7.47.0
В кастомизациях доступен метод
Amo::createTask
, которая делает запрос в amoCRM на создание задачи.
Описание полей задачи в документации API amoCRM.Добавим вызов функции
Amo::createTask
в кастомизацию process_call_params
(настраивается в файле /opt/itgrix_amo/customizer/actions/process_call_params.php
).Логика модуля Itgrix по умолчанию предполагает создание задачи при регистрации пропущенного звонка. В данном примере будет создана новая задача для любого входящего звонка (в т.ч. отвеченного). Таким образом для пропущенных будет создано две задачи, если не отключить создание задачи по пропущенному в настройках модуля.
if ($params['call']['type'] === 2) { // 2 - входящий; 3 - исходящий
$phone = $params['call']['from'];
// Сделаем одного и того же постановщика и ответственного для задачи
$responsibleUserId = 5755858;
$createdByUserId = 5755858;
// Установим срок выполнения - 1 час после окончания звонка
$deadLine = date_create($params['call']['end_time']);
$deadLine->add(new DateInterval('PT1H'));
// Пример срока в 1 день:
//$deadLine->add(new DateInterval('P1D'));
$deadLine = intval($deadLine->format('U'));
$response = Amo::createTask(array(
'text' => 'Обработать звонок от '.$phone,
'complete_till' => $deadLine,
'created_by' => $createdByUserId,
'responsible_user_id' => $responsibleUserId,
));
if ($response === false) {
return array(
'state' => 'error',
'data' => 'Не удалось создать задачу',
);
}
// // Для отладки можно вывести ответ amoCRM в лог модуля Itgrix:
// $this->logDebug('response: ' . json_encode($response, JSON_UNESCAPED_UNICODE));
}
return array(
'state' => 'success',
'data' => $params,
);
В кастомизациях доступна функция
Amo::createLead
, которая делает запрос в amoCRM на создание сделки.
Подробное описание полей сделки в документации API amoCRM.Добавим вызов функции
Amo::createLead
в кастомизацию process_call_params
(настраивается в файле /opt/itgrix_amo/customizer/actions/process_call_params.php
).В таком случае будет создана новая сделка (ещё одна), даже если сделка уже создана при регистрации звонка модулем Itgrix.
if ($params['call']['type'] === 2) { // 2 - входящий; 3 - исходящий
$phone = $params['call']['from'];
// Сделаем одного и того же постановщика и ответственного для задачи
$responsibleUserId = 5755858;
$createdByUserId = 5755858;
// Установим дату-время окончания звонка как дату-время создания сделки
$callEndTime = date_create($params['call']['end_time']);
$callEndTime = intval($callEndTime->format('U'));
$response = Amo::createLead(array(
'name' => 'Сделка с клиентом '.$phone,
'created_by' => $createdByUserId,
'responsible_user_id' => $responsibleUserId,
'created_at' => $callEndTime,
));
if ($response === false) {
return array(
'state' => 'error',
'data' => 'Не удалось создать сделку',
);
}
// // Для отладки можно вывести ответ amoCRM в лог модуля Itgrix:
// $this->logDebug('response: ' . json_encode($response, JSON_UNESCAPED_UNICODE));
}
return array(
'state' => 'success',
'data' => $params,
);