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

139
28 ноября 2019, 17:40

У клиента сайт на друпале/уберкарте. Из интернет-магазина нужно отправлять запросы к 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.
)
Answer 1

Сам REST запрос я строил так:

    $queryUrl = 'https://[domain].bitrix24.ru/rest/[id user]/[webhook]/crm.duplicate.findbycomm' ;
    $queryData = http_build_query(array(
                "ENTITY_TYPE" =>"CONTACT",
             "TYPE" => "EMAIL",
              "VALUES" => Array ( "[account:mail]"),
                )
            ); 

У меня работало и еще декодировал JSON

$result = json_decode($result, 1);
READ ALSO
Удаление файлов в Wordpress

Удаление файлов в Wordpress

Всем доброе время суток, есть следующая ситуация - на сайте которые построен на Wordpress вирусный код удаляет все файлы с папок wp-admin и wp-includes,...

123
Почему код не может найти файл?

Почему код не может найти файл?

GetLastError возвращает ERROR_FILE_NOT_FOUND, хотя в папке есть файлы попадающие под маскуВ чем проблема? Буду благодарен за помощь!

135
Обработка символов

Обработка символов

Написал программу для нахождения в строке( массиве символов ) слова наименьшей длины, и замены этого слова на символ '*'Программа работает,...

135
QThreadPool pure virtual method called

QThreadPool pure virtual method called

В конструкторе окна создаю объект Runnable:

126