Добавление повторного лида
Пример разместит на странице сайта форму CRM. По заполнении формы в Битрикс24 будет создаваться новый лид как повторный с привязкой к нему контакта или компании из старых лидов.
Внимание! Для использования примера необходимо настроить работу класса CRest и подключить файл crest.php в файлах, где используется данный класс. Подробнее.
- Создаём форму на нужной странице:
<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>
- Создаём файл 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