У вас неверная трактовка работы с результатами.
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;