Обучаю битриксу программистов, интеграторов. Подробнee ⇒

Rest api bitrix24: создать лид через вебхук (php + js)



Задача:
создавать лид в Битрикс24  через rest api с заполненными полями, файлом при заполнении формы

Полезная информация:
js
$(document).on('click','#sendProekt',function(e){
        e.preventDefault();
        if(CheckErrors('proekt')){ //проверка заполненности     

            //чтобы отправить файл, работаем через FormData     
            var formData = new FormData();

            //заполняем поля                      
            formData.append('name',$('#orgName').val());
            formData.append('address',$('#orgAddress').val());
            formData.append('phone',$('#orgPhone').val());
            formData.append('email',$('#orgEmail').val());            
            formData.append('comment',$('#comment').val());

            //прикрепляем файл (поле не множественное)
            $.each($('#fileProekt')[0].files, function(i, file) {                 
               formData.append('file_proekt', file);                                
            });
                       
            $.ajax({
                type: "POST",
                url: "ajax.php",
                data: formData,
                processData: false,
                contentType: false
            })
            .done(function( response ) {
                console.log(response);
            });
        }
    });
php
где взять $queryUrl с кодом вебхука, написано в конце статьи
//делает curl запросы к Битрикс24
function CurlBitrix24($method, $arData=array()){
   $queryUrl = "https://nikaverro.bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/".$method;   
   $curl = curl_init();
   curl_setopt_array($curl, array(
      CURLOPT_URL => $queryUrl,
      CURLOPT_SSL_VERIFYPEER => 0,
      CURLOPT_POST => 1,
      CURLOPT_HEADER => 0,
      CURLOPT_RETURNTRANSFER => 1,      
   ));
   if(!empty($arData)){
      curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($arData));
   }
   $result = curl_exec($curl);         
   curl_close($curl);
   return json_decode($result,true);
}

$arFields = array(
    "TITLE" => "Название лида",
    "ADDRESS" => "Адрес",
    "PHONE" => array(array("VALUE"=>$_REQUEST["phone"], "VALUE_TYPE"=>"WORK" )),
    "EMAIL" => array(array("VALUE"=>$_REQUEST["email"], "VALUE_TYPE"=>"WORK" )),
    "COMMENTS" => $_REQUEST["comment"],
    "COMPANY_TITLE" => $_REQUEST["name"]
);

//добавляем поле типа файл (у меня немножественное)
if(!empty($_FILES['file_proekt'])){
    $file = $_FILES['file_proekt'];
    $fileData = file_get_contents($file['tmp_name']);
    $arFields["UF_CRM_1605432620233"] = array('fileData'=>array(0=>$file['name'],1=>base64_encode($fileData)));
}

//выполняем запрос
$result = CurlBitrix24('crm.lead.add.json', array(
   'fields' => $arFields, 
   'params' => array("REGISTER_SONET_EVENT" => "Y")
));   

$leadId = (is_array($result) && !empty($result["result"])) ? $result["result"]: false;   
echo json_encode($leadId);
die();


Как создать входящий вебхук
разработчикам > готовые сценарии > другое

  • укажем название (чтобы потом было удобно найти в списке)
  • нужно указать модули, к которым вебхук будет иметь доступ
ВАЖНО!
Без разницы какой метод указать в генераторе запросов, вебхук будет иметь доступ ко всем методам модуля
Нам будет нужен адрес вебхука



Как узнать ID пользовательского поля?
  • перейти в раздел CRM → Настройки → Настройки форм и отчетов → Пользовательские поля → Лид (Список полей)
  • найти нужное поле и перейти в него
  • будет поисковая строка вида https://ваш-домен.bitrix24.ru/crm/configs/fields/CRM_LEAD/edit/UF_CRM_XXXXXXXXXX/
  • в конце поисковой строки UF_CRM_XXXXXXXXXX — это и есть ID поля
Если блог был полезным, можете угостить меня "чашечкой кофе" :)

Сбер по номеру телефона +7 (953) 585-13-09 Вероника.
Спасибо!