@michnic

Как пользоваться REST API Битрикс24 в друпале?

У клиента сайт на друпале/уберкарте. Из интернет-магазина нужно отправлять запросы к API Битрикс24.

Я пользуюсь битриксовским методом crm.duplicate.findbycomm, в который из обязательных нужно передавать 1 строковый параметр type и 1 массив values. Что интересно, если первым в запросе идет type, то API Битрикс24 возвращает ошибку "не передан values", и наоборот, если первым в запросе идет массив values, то Битрикс24 ругается, что не передан type.

При этом вручную запросы проходят отлично, и мой код нормально работает с другого, к примеру, сайта.

Игрался с опциями curl прямо внутри скрипта, не помогло. Есть идеи? Код ниже:

Код запроса
<?php

executeRest(array('type' => 'PHONE', 'values' => array('55-58-88'), 'entity_type' => 'LEAD'));

function executeRest($params) {
  $queryUrl = 'https://XXX.bitrix24.ru/rest/161/XXX/crm.duplicate.findbycomm.json';
   $queryData = http_build_query($params);

  $curl = curl_init();
  curl_setopt_array($curl, array(
     CURLOPT_SSL_VERIFYPEER => 0,
     CURLOPT_POST => 1,
     CURLOPT_HEADER => 0,
     CURLOPT_RETURNTRANSFER => 1,
     CURLOPT_URL => $queryUrl,
     CURLOPT_POSTFIELDS => $queryData,
  ));

  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  curl_setopt($curl, CURLOPT_SSL_VERIFYSTATUS, false);

  $result = curl_exec($curl);
  $info = curl_getinfo($curl);

  curl_close($curl);
  
   print_r($info);
   print_r($result);
   print_r(json_decode($result, true));
}
?>

А вот что вижу на выходе
Array
(
    [url] => https://XXX.bitrix24.ru/rest/161/XXX/crm.duplicate.findbycomm.json
    [content_type] => application/json; charset=utf-8
    [http_code] => 400
    [header_size] => 932
    [request_size] => 239
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 0.229066
    [namelookup_time] => 0.0726
    [connect_time] => 0.074227
    [pretransfer_time] => 0.093496
    [size_upload] => 58
    [size_download] => 71
    [speed_download] => 309
    [speed_upload] => 253
    [download_content_length] => -1
    [upload_content_length] => 58
    [starttransfer_time] => 0.229016
    [redirect_time] => 0
)
{"error":"","error_description":"Communication values is not defined."}Array
(
    [error] => 
    [error_description] => Communication values is not defined.
)

  • Вопрос задан
  • 1177 просмотров
Пригласить эксперта
Ответы на вопрос 1
Вам необходимо передать

$params = array('entity_type' => 'LEAD', 'type' => 'PHONE', 'values' => array('55-58-88'))


И адрес должен быть https://XXX.bitrix24.ru/rest/161/XXX/crm.duplicate... т.е. без .json

Не забыть создать вебхуку на стороне Битрикс24 с доступом к CRM
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы