Добавление повторного лида
Пример разместит на странице сайта форму 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
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.