Документация для разработчиков
Темная тема

Добавление повторного лида

Пример разместит на странице сайта форму CRM. По заполнении формы в Битрикс24 будет создаваться новый лид как повторный с привязкой к нему контакта или компании из старых лидов.

Внимание! Для использования примера необходимо настроить работу класса CRest и подключить файл crest.php в файлах, где используется данный класс. Подробнее.

  1. Создаём форму на нужной странице:
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script>
    $(document).ready(function() {
    	$('#form_to_crm').on( 'submit', function(el) {//event submit form
    		el.preventDefault();//the default action of the event will not be triggered
    		var formData = $(this).serialize();
    		$.ajax({
    			'method': 'POST',
    			'dataType': 'json',
    			'url': 'form.php',
    			'data':  formData,
    			success: function(data){//success callback
    				alert(data.message);
    			}
    		});
    	});
    });
    </script>
    	
    <form id="form_to_crm">
    	<input type="text" name="NAME" placeholder="Name" required>
    	<input type="text" name="LAST_NAME" placeholder="Last name">
    	<input type="text" name="PHONE" placeholder="Phone">
    	<input type="text" name="EMAIL" placeholder="E-mail">
    	<input type="submit" value="Submit">
    </form>
    
  2. Создаём файл form.php, для сохранения заполненных форм:
    
    <?
    $sName = htmlspecialchars($_POST["NAME"]);	
    $sLastName = htmlspecialchars($_POST["LAST_NAME"]);
    $sPhone = htmlspecialchars($_POST["PHONE"]);
    $sEmail = htmlspecialchars($_POST["EMAIL"]);
    		
    $arFields = [
    	'TITLE'         => 'From the site: ' . implode(' ', [$sName, $sLastName]),
    	'NAME'          => (!empty($sName)) ? $sName : 'Empty name',//if simple mode crm NAME or LAST_NAME required for converting to contact
    	'LAST_NAME'   => $sLastName,
    	'PHONE'         => (!empty($sPhone)) ? array(array('VALUE' => $sPhone, 'VALUE_TYPE' => 'HOME')) : array(),
    	'EMAIL'         => (!empty($sEmail)) ? array(array('VALUE' => $sEmail, 'VALUE_TYPE' => 'HOME')) : array()
    ];
    	
    $arLeadDuplicate = [];
    if(!empty($sPhone)){//search duplicate by phone
    	$arResultDuplicate = CRest::call('crm.duplicate.findbycomm',[
    		"entity_type" => "LEAD",
    		"type" => "PHONE",
    		"values" => array($sPhone)
    	]);
    	if(!empty($arResultDuplicate['result']['LEAD'])){
    		$arLeadDuplicate = array_merge ($arLeadDuplicate,$arResultDuplicate['result']['LEAD']);
    	}
    }
    	
    if(!empty($sEmail)) {//search duplicate by email
    	$arResultDuplicate = CRest::call('crm.duplicate.findbycomm', [
    		"entity_type" => "LEAD",
    		"type" => "EMAIL",
    		"values" => [$sEmail]
    	]);
    	if(!empty($arResultDuplicate[ 'result' ][ 'LEAD' ])) {
    		$arLeadDuplicate = array_merge($arLeadDuplicate, $arResultDuplicate[ 'result' ][ 'LEAD' ]);
    	}
    }
    	
    if(!empty($arLeadDuplicate)){//get converted duplicate lead and filling $arFields COMPANY_ID or CONTACT_ID
    	$arDuplicateLead = CRest::call('crm.lead.list',[
    		"filter" => [
    			'=ID' => $arLeadDuplicate,
    			'STATUS_ID' => 'CONVERTED',
    		],
    		'select' => [
    			'ID', 'COMPANY_ID', 'CONTACT_ID'
    		]
    	]);
    		
    	if(!empty($arDuplicateLead['result'])){
    		$sCompany = reset(array_diff(array_column($arDuplicateLead['result'],'COMPANY_ID','ID'),['']));
    		$sContact = reset(array_diff(array_column($arDuplicateLead['result'],'CONTACT_ID','ID'),['']));
    		if($sCompany > 0)
    			$arFields['COMPANY_ID'] = $sCompany;
    		if($sContact > 0)
    			$arFields['CONTACT_ID'] = $sContact;
    	}
    }
    	
    $result = CRest::call('crm.lead.add',
    	[
    		'fields'    =>  $arFields
    	]
    );
    if(!empty($result['result'])){
    	echo json_encode(['message' => 'Lead add']);
    }elseif(!empty($result['error_description'])){
    	echo json_encode(['message' => 'Lead not added: '.$result['error_description']]);
    }else{
    	echo json_encode(['message' => 'Lead not added']);
    }
    ?>


© «Битрикс», 2001-2024, «1С-Битрикс», 2024