@SergioMarquinha

Как добавить имя контакта в лид через батч?

Здравствуйте, создал батч который создает контакт и лид. Нужно чтобы в имя лида был вписан имя контакта. Что делаю не так? Как мне получить имя созданного контакта?

<?php


require_once('crest.php');
$result = CRest::call('batch',
    array(
        'halt' => 0,
      'cmd'=> array(
		  'first_contact'=> 'crm.contact.add?fields[NAME]=Test&fields[LAST_NAME]=TEST', // создаю контакт с именем Test
		  'user_by_name'=> 'crm.contact.list?fields[NAME]=Test', // пытаюсь взять этот Test. Не работает. 
		  'user_lead'=> 'crm.lead.add?fields[TITLE]=Test Assigned&fields[NAME]=$result[user_by_name]', //создаю лид, куда в NAME попадает результат из user_by_name
      )
      )
    );
	print_r ($result);
?>
  • Вопрос задан
  • 170 просмотров
Решения вопроса 1
gromdron
@gromdron Куратор тега Битрикс24
Работаю с Bitrix24
У вас неверная трактовка работы с результатами.

1. Метод `crm.contact.add` добавляет контакт, но он не проверяет был ли он уже создан. Т.е. каждый новый запуск - дополнительный контакт. Желательно конечно проверять контакт перед созданием.

2. Метод `crm.contact.list` выполняет поиск контакОВ удовлетворяющих условиям. Т.е. вам возвращается массив массивов, а вы пытаетесь обратиться к нему как к строке.

3. Вы неправильно трактуете как работает $result. Он опирается на результат команды, т.е. $result[] будет ссылаться на корень результата соответствующей операции.

Я предположил что вы хотите:
- Добавить контакт. Вам вернется ID созданного контакта.
- Получить данные созданного контакта.
- Создать лид с данными созданного контакта, а именно - именем контакта и идентификатором контакта.
Поскольку я не использую библиотеку CRest битрикса, я написал запрос на curl в php, чтобы вы могли посмотреть и адаптировать:
$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://_____your___bitrix24___/rest/_____/batch',
  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 =>'{
    "halt": false,
    "cmd": {
        "create_contact": "crm.contact.add?fields[NAME]=Test&fields[LAST_NAME]=TEST",
        "read_contact": "crm.contact.get?id=$result[create_contact][ID]",
        "user_lead": "crm.lead.add?fields[TITLE]=Test Assigned&fields[NAME]=$result[read_contact][NAME]&fields[CONTACT_ID]=$result[create_contact][ID]"
    }
}',
  CURLOPT_HTTPHEADER => array(
    'Content-Type: application/json',
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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