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

Не могу изменить поля сущности AMO crm, в чем может быть дело?

Добрый день!
Документацию уже вычитала до дыр, меняю в сущности Контакт имя и одно из полей, в ответе приходит все ок, по факту - изменений нет.
Модель Контакта с учетом изменений (имя и одно из полей) выглядит так:
(
	[0] => Array
		(
			[name] => Контакт1
			[custom_fields_values] => Array
				(
					[0] => Array
						(
							[field_id] => 764147
							[values] => Array
								(
									[0] => Array
										(
											[value] => Арабика
											[enum_id] => 1011877
										)

								)

						)

				)

			[id] => 22130181
		)

)


Выполняю запрос
$endpoint = https://домен.amocrm.ru/api/v4/contacts/22130181?USER_LOGIN=домен&USER_HASH=


Заголовки ($headers):
Array(
    [0] => Connection: keep-alive
    [1] => Content-Type: application/json
    [2] => Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIs.....)


Передаю в Post данные($fields):
[[{"name":"\u041a\u043e\u043d\u0442\u0430\u043a\u04421","custom_fields_values":[{"field_id":764147,"values":[{"value":"\u0410\u0440\u0430\u0431\u0438\u043a\u0430","enum_id":"1011877"}]}],"id":"22130181"}]]


Curl запрос такой:
$ch = $this->curlHandle->open();

	curl_setopt($ch, CURLOPT_URL, $endpoint);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
	curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
	curl_setopt($ch, CURLOPT_ENCODING, '');

	curl_setopt($ch, CURLINFO_HEADER_OUT, true);

	if ($this->parameters->hasPost()) {
		$fields = json_encode([$params]);           
		curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PATCH');
		curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);            
	}        

	$result = curl_exec($ch);
	$info = curl_getinfo($ch);
	$error = curl_error($ch);
	$errno = curl_errno($ch);
	$this->curlHandle->close();


В ответе получаю
{
    "id": 22130181,
    "name": "Контакт51", (ТО ЕСТЬ НИЧЕГО НЕ ИЗМЕНИЛОСЬ)
    "updated_at": 1636620601,
    "is_deleted": false,
    "is_unsorted": false,
    "_links": {
        "self": {
            "href": "https://домен.amocrm.ru/api/v4/contacts/22130181"
        }
    }
}

В массиве $info:
Array
( 
    [content_type] => application/hal+json
    [http_code] => 200 ...)


В панели разработчика в ответе запроса
ok-array (
  'amocrm_name' => 'Контакт1',
  'amocrm_764147' => '1011877',
)array (
  'amocrm_650863' => 
  array (
    'code' => 'amocrm_650863',
    'name' => 'AMOCRM Тест',
    'value' => NULL,
    'type' => 'string',
    'type_data' => '',
    'data' => 
    array (
      'id' => '650863',
      'values' => 
      array (
        0 => 
        array (
          'value' => NULL,
          'enum' => NULL,
        ),
      ),
    ),
  ),..... далее продолжение массива с полями и др данными


Что я делаю не так? Почему не изменяются данные в сущности?
  • Вопрос задан
  • 319 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
094ikis09
@094ikis09
Medium Rare
Вы используете метод одиночного редактирования сущности PATCH /api/v4/{entity_type}/{entity_id}
В тело надо положить JSON в котором один объект описываемый нужные изменения. Вы же передаете массив таких объектов. То есть вместо
[[{"name":"\u041a\u043e\u043d\u0442\u0430\u043a\u04421","custom_fields_values":[{"field_id":764147,"values":[{"value":"\u0410\u0440\u0430\u0431\u0438\u043a\u0430","enum_id":"1011877"}]}],"id":"22130181"}]]
должно быть
{"name":"\u041a\u043e\u043d\u0442\u0430\u043a\u04421","custom_fields_values":[{"field_id":764147,"values":[{"value":"\u0410\u0440\u0430\u0431\u0438\u043a\u0430","enum_id":"1011877"}]}]}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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