Задать вопрос
@fedor576

Передача лидов с сайта в CRM BITRIX 24. Почему передается только один параметр fields?

<?php
$queryUrl = 'https://bitrix24..../crm.lead.add.json';
$queryData = http_build_query(array(
'fields' => array(
// "TITLE" => "lid 1",
"NAME" => "name name",
'PHONE' => array(
array(
"VALUE" => "654654",
"VALUE_TYPE" => "WORK"
)
)
),
'params' => array("REGISTER_SONET_EVENT" => "Y")
));
...

может подскажите, почему передается только один первый параметр в битрикс.
в данном примере передается только NAME, если открыть TITLE то передоваться будет только он.
не понимаю в чем причина.
  • Вопрос задан
  • 217 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
gromdron
@gromdron Куратор тега Битрикс24
Работаю с Bitrix24
Да дело в общем-то не в Битрикс24, а в механизме работы интернета и функции http_build_query которая не умеет нормально работать с многомерными массивами.
Можно мучаться, пытаться делать двойное кодирование через http_build_query и т.п. а можно просто отправлять json и жить нормальной жизнью.

$queryData = [
	'fields' => [
		"TITLE" => "lid 1",
		"NAME" => "name name",
		'PHONE' => [
			[
				"VALUE" => "654654",
				"VALUE_TYPE" => "WORK"
			]
		]
	],
	'params' => ["REGISTER_SONET_EVENT" => "Y"]
];

echo sendToBitrix('crm.lead.add', $queryData);

function sendToBitrix( $method, $data )
{
	$curl = curl_init();

	curl_setopt_array($curl, array(
	  CURLOPT_URL => 'https://**********/'.$method,
	  CURLOPT_RETURNTRANSFER => true,
	  CURLOPT_ENCODING => '',
	  CURLOPT_MAXREDIRS => 10,
	  CURLOPT_TIMEOUT => 0,
	  CURLOPT_FOLLOWLOCATION => true,
	  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
	  CURLOPT_CUSTOMREQUEST => 'POST',
	  CURLOPT_POSTFIELDS =>json_encode($data),
	  CURLOPT_HTTPHEADER => array(
	    'Content-Type: application/json',
	  ),
	));

	$response = curl_exec($curl);

	curl_close($curl);
	return $response;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@den730
Попробуй так:
$data = array(
    'fields' => array(
        'TITLE' => 'lid 1',
        'NAME' => 'name name',
        'PHONE' => array(
            array(
                'VALUE' => 654654,
                'VALUE_TYPE' => 'WORK',
            ),
        ),
    ),
    'params' => array('REGISTER_SONET_EVENT' => 'Y'),
);

sendingDataToBitrix('crm.lead.add', $data);



function sendingDataToBitrix($method, $data)
{
    $queryUrl = 'https://bitrix24..../' . $method;
    $queryData = http_build_query($data);

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

    $result = curl_exec($curl);
    curl_close($curl);
    return json_decode($result, 1);
}
Ответ написан
@fedor576 Автор вопроса
может это что-то на стороне битрикса? не знаете
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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