Bitrix24 лиды с сайта — автоматическое создание лидов


Как добавлять в Bitrix24 лиды с сайта? Данным вопросом начинают задаваться многие, так как с каждым днем CRM Битрикс24 набирает популярность среди вебмастеров и владельцев сайтов. И у многих встает вопрос, как же организовать автоматическое создание лидов с сайта в CRM Битрикс24, если Вы не используете одноименную CMS.
Для этого давайте рассмотрим два способа:

  1. Bitrix24 лиды с сайта через упрощенный Rest API
  2. Вебхуки Bitrix24 — передача лидов с сайта — Рекомендую

См. также публикацию на тему:

Автоматическое создание лидов в Битрикс24 через упрощенный Rest API

Данный способ, команда Битрикс24, разработала специально для всех сторонних источников, не входящие в продукты Битрикс. Заключается он в том, что по адресу [ваше_название].bitrix24.ru/crm/configs/import/lead.php находится специальный компонент lead.rest, который позволяет обрабатывать и добавлять в Bitrix24 лиды с сайта из других источников.

Для того, чтобы организовать автоматическое создание лидов в Битрикс24 Вам необходимо:

  1. Логин и пароль пользователя Вашей CRM
    Важно! Данный пользователь должен быть с ограниченными правами.
  2. PHP скрипт для отправки данных.
  3. Таблица параметров из соответствующих справочников Bitrix24.
  4. И умение перехватывать данные из форм.

Логин и пароль пользователя Вашей CRM

Так как логин и пароль пользователя из-под которого будут создаваться лиды указываются в скрипте, то для безопасности рекомендуется использовать отдельного пользователя с правами только на добавление лида и без доступа куда-либо еще. Данная мера необходима для безопасности Ваших данных, на тот случай, если каким-то образом PHP скрипт для отправки данных в Битрикс 24 окажется у злоумышленников.

PHP скрипт для отправки данных

В Bitrix24 лиды с сайта можно передавать PHP скриптом, который приведен ниже. При этом для автоматического создания лидов, необходимо передать 3 обязательных параметра:

  • LOGIN* — логин пользователя Вашей CRM по управлению лидами.
  • PASSWORD* — пароль пользователя Вашей CRM по управлению лидами.
  • TITLE* — заголовок для лида.

все остальные параметры являются не обязательными и не подлежат обязательной передаче. Однако советую Вам передавать как можно больше данных в лиде: email, телефон, комментарий, utm метки и многое другое (см. все параметры для формирования лидов).

define('CRM_HOST', '[ваше_название].bitrix24.ru'); // Ваш домен CRM системы
define('CRM_PORT', '443'); // Порт сервера CRM. Установлен по умолчанию
define('CRM_PATH', '/crm/configs/import/lead.php'); // Путь к компоненту lead.rest

define('CRM_LOGIN', 'login'); // Логин пользователя Вашей CRM по управлению лидами
define('CRM_PASSWORD', 'password'); // Пароль пользователя Вашей CRM по управлению лидами

   $postData = array(
      'TITLE' => '' // Установить значение
   );

   if (defined('CRM_AUTH'))
   {
      $postData['AUTH'] = CRM_AUTH;
   }
   else
   {
      $postData['LOGIN'] = CRM_LOGIN;
      $postData['PASSWORD'] = CRM_PASSWORD;
   }

   $fp = fsockopen("ssl://".CRM_HOST, CRM_PORT, $errno, $errstr, 30);
   if ($fp)
   {
      $strPostData = '';
      foreach ($postData as $key => $value)
         $strPostData .= ($strPostData == '' ? '' : '&').$key.'='.urlencode($value);

      $str = "POST ".CRM_PATH." HTTP/1.0\r\n";
      $str .= "Host: ".CRM_HOST."\r\n";
      $str .= "Content-Type: application/x-www-form-urlencoded\r\n";
      $str .= "Content-Length: ".strlen($strPostData)."\r\n";
      $str .= "Connection: close\r\n\r\n";

      $str .= $strPostData;

      fwrite($fp, $str);

      $result = '';
      while (!feof($fp))
      {
         $result .= fgets($fp, 128);
      }
      fclose($fp);

      $response = explode("\r\n\r\n", $result);

      $output = '<pre>'.print_r($response[1], 1).'</pre>';
   }
   else
   {
      echo 'Connection Failed! '.$errstr.' ('.$errno.')';
   }

И умение перехватывать данные из форм

В случаи успешной обработки формы, Вам необходимо перехватить и передать нужные Вам значения с помощью вышеприведенного php скрипт в $postData = array().

По умолчанию, обязательным параметром для заполнения является Title, значение которого будет названием для лида в Битрикс24. Все остальные параметры Вы можете передавать на свое усмотрение (см.таблицы с параметрами).

Данные параметры из «Таблица 1: Параметры для лидов», отвечают за передачу данных в стандартные поля Битрикс24. Если у Вас есть поля, которые Вы самостоятельно создали в Битрикс24, и Вам необходимо передавать для них значение с сайта вместе с лидами, то предлагаю Вам ознакомится с данной статьей.

Автоматическое создание лидов в Битрикс24 при помощи входящего вебхука

Комманда Битрикс 24 внедрила очень простой и функциональный способ интеграции с CRM системой. Если ранее интеграция с Битрикс 24 была не простой задачей, требующей отличной квалификации и знаний от вебмастеров и владельцев сайта, то теперь, с внедрением вебхуков, произвести интеграцию своего сайта с CRM системой может практически каждый желающий.

Так что такое вебхуки в Битрикс24? WebHooks Bitrix24 — механизм, который позволяет вам использовать практически весь богатый функционал Rest API Битрикс24, но при минимальных знаниях и трудозатрат.

На мой взгляд, это более безопасный способ передачи информации в CRM систему, чем при помощи упрощенного Rest API.

И так, для организации автоматической передачи лидов при помощи вебхуков необходимо:

  1. Создать входящий вебхук.
  2. Написать короткий код для перехвата и передачи данных.

Создать входящий вубхук

Для того, чтобы передать данные с вашей формы обратной связи в лиды Битрикс 24 необходимо создать входящий вебхук. Для этого следуем по инструкции:

  • Приложения → Вебхуки → Добавить вебхук.
    как создать вебхук в Битрикс 24
  • При добавлении выбрать Входящий вебхук.
  • Ввести название для вебхука → При желании добавить его описание → При выборе права доступа указать CRM.
    добавление вебхука в битрикс24
  • После чего нажимаем на кнопку сохранить.
  • После сохранения появится код для авторизации вебхука и образец URL, который нужно использовать при отправке данных в Битрикс24.
    код для авторизации вебхука
    ,где

    • /rest/ — метод Rest API;
    • /1/ — идентификатор пользователя, пользуясь правами которого будет работать вебхук;
    • /2j2htb348j5y0hgi/ — код вебхука;
    • /profile/ — метод REST, который вы хотите выполнить, обращаясь к вебхуку. При добавлении лида в CRM систему необходимо использовать метод crm.lead.add.json.

Написать короткий код для перехвата и передачи данных

Для завершения организации передачи данных с формы сайта в лиды Битрикс24 при помощи вебхуков необходимо всего лишь написать коротенький код. При написание кода необходимо учесть всего 3 простых шага:

  1. сформировать URL в переменной $queryUrl
    https://[ваш_домен].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.lead.add.json;
  2. сформировать параметры для создания лида в переменной $queryData;
  3. обратиться к Битрикс24 при помощи функции curl_exec.

Пример кода для интеграции Битрикс24 и сайта при помощи вебхуков

// формируем URL в переменной $queryUrl
$queryUrl = 'https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.lead.add.json';

// формируем параметры для создания лида в переменной $queryData
$queryData = http_build_query(array(
  'fields' => array(
    'TITLE' => 'Название лида',
  ),
  'params' => array("REGISTER_SONET_EVENT" => "Y")
));

// обращаемся к Битрикс24 при помощи функции curl_exec
$curl = curl_init();
curl_setopt_array($curl, array(
  CURLOPT_SSL_VERIFYPEER => 0,
  CURLOPT_POST => 1,
  CURLOPT_HEADER => 0,
  CURLOPT_RETURNTRANSFER => 1,
  CURLOPT_URL => $queryUrl,
  CURLOPT_POSTFIELDS => $queryData,
));
$result = curl_exec($curl);
curl_close($curl);
$result = json_decode($result, 1);
if (array_key_exists('error', $result)) echo "Ошибка при сохранении лида: ".$result['error_description']."<br/>";

Учесть особенность для передачи номера телефона, email, мессенджера

Обратите внимание
При выборе интеграции с помощью входящего вебхука (в отличии от упрощенного Rest API), такие параметры как телефон, электронный адрес и мессенджеры имеют множественные значения и другие поля по умолчанию: PHONE, EMAIL, IM. Поэтому для передачи данных значений необходимо передавать их в массиве.

Пример,

'EMAIL' => Array(
    "n0" => Array(
        "VALUE" => "email-1@mail.ru",
        "VALUE_TYPE" => "WORK",
    ),
    "n1" => Array(
        "VALUE" => "email-2@mail.ru",
        "VALUE_TYPE" => "HOME",
    ),
),
'PHONE' => Array(
    "n0" => Array(
        "VALUE" => "+74957778899",
        "VALUE_TYPE" => "WORK",
    ),
    "n1" => Array(
        "VALUE" => "+79151112233",
        "VALUE_TYPE" => "MOBILE",
    ),
),

, где nX — это одно значение (телефона или электронной почты), которое всегда начинается с 0.

Даже если вы передаете всего лишь 1 номер телефона или адрес электронной почты, необходимо указывать его в массиве как n0.

Таким образом, для передачи хотя бы одного телефона и адреса электронной почты, код будет иметь следующий вид:

// формируем URL в переменной $queryUrl
$queryUrl = 'https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.lead.add.json';

// формируем параметры для создания лида в переменной $queryData
$queryData = http_build_query(array(
  'fields' => array(
    'TITLE' => 'Название лида',
    'EMAIL' => Array(
	    "n0" => Array(
	        "VALUE" => "email-1@mail.ru",
	        "VALUE_TYPE" => "WORK",
	    ),
	),
	'PHONE' => Array(
	    "n0" => Array(
	        "VALUE" => "+74957778899",
	        "VALUE_TYPE" => "WORK",
	    ),
	),
  ),
  'params' => array("REGISTER_SONET_EVENT" => "Y")
));

// обращаемся к Битрикс24 при помощи функции curl_exec
$curl = curl_init();
curl_setopt_array($curl, array(
  CURLOPT_SSL_VERIFYPEER => 0,
  CURLOPT_POST => 1,
  CURLOPT_HEADER => 0,
  CURLOPT_RETURNTRANSFER => 1,
  CURLOPT_URL => $queryUrl,
  CURLOPT_POSTFIELDS => $queryData,
));
$result = curl_exec($curl);
curl_close($curl);
$result = json_decode($result, 1);
if (array_key_exists('error', $result)) echo "Ошибка при сохранении лида: ".$result['error_description']."<br/>";

Теперь проверьте свой Битрикс 24 и вы найдете там созданный лид =)

Понравилась статья? Поделись ей =)

Подписаться на email рассылку

Хотите быть в курсе новых инструкций и кейсов для вашей работы?

Подпишись на полезную рассылку об интернет-маркетинге


61 thoughts on “Bitrix24 лиды с сайта — автоматическое создание лидов

  1. Статья отличная. По ней и работаем, спасибо! Все по-русски, просто и понятно!

    А когда примерно можно ожидать :
    «немного другим методом для передачи данных, о котором я расскажу чуть позже и выложу здесь ссылку на статью.» ? 🙂

  2. Тоже интересно «немного другим методом для передачи данных, о котором я расскажу чуть позже и выложу здесь ссылку на статью.»

  3. Владимир, благодарю за очень полезную статью!
    Сделал связку, всё работает отлично!
    Не смог разобраться как связать 2 формы с одного и того же сайта?
    Если добавляю ещё 1 if в тот же код, то так не работает, данные не перехватываются.
    Если добавляю ещё 1 отдельный сниппет, то ругается что функция перехвата уже задействована в первом сниппете:
    Cannot redeclare your_wpcf7_mail_sent_function() (previously declared in

    Подскажите, пожалуйста, как быть?

    • Добрый день, Артем

      для этого используйте конструкцию if..elseif. Пример:

      add_action( 'wpcf7_mail_sent', 'your_wpcf7_mail_sent_function' );
      function your_wpcf7_mail_sent_function( $contact_form ) {
        //подключение к серверу CRM и авторизация
        //перехват данных из Contact Form 7
      
        if('Контактная форма 1' == $title ): {
          //остальной код
        };
      
        elseif('Контактная форма 2' == $title ): {
          //остальной код
        };
        
        endif;
      }
      
      • Владимир, ещё один вопрос:
        а можно ли в CRM передавать прикрепленный к CRM-форме файл? Например, *.doc?
        У меня остаётся пустое поле под файл в карточке клиента, заполняются только текстовые поля.

      • Владимир, извините за настойчивость 🙂 Задам вопрос ещё раз:
        можно ли в CRM передавать прикрепленный к CRM-форме файл? Например, *.doc?

        • Добрый день, Артем

          я никогда не сталкивался с этим, но да, можно. Для этого вам подойдет только скрипт интеграции при помощи входящего вебхука.

          Для начала Вам необходимо:

          1. Создать поле для файлов в Битрикс24 для лидов.
          2. Разрешить прикреплять к контактной форме только те файлы, которые поддерживает Б24.
          3. Убедится, что пользователь, который добавляет лиды через вебхук имеет права на добавление элемента в инфоблок.

          Затем в коде скрипта необходимо:

          1. Получить абсолютную ссылку на файл.
          2. Получить сам файл.
          3. Закодировать файл в строку в формате Base64.
          4. Декодировать любые %## кодированные последовательности в данной строке.

          Пример,

          $url = 'абсолютная ссылка на файл';
          $data = file_get_contents($url);
          $base64 = base64_encode($data);
          $name = urldecode(basename($url));
          

          Потом Вам необходимо отправить данный файл в Б24. Пример,

          'UF_CRM_XXXXXXXXXX' => ['fileData' => [$name, $base64]]
          
          • Владимир, Здравствуйте, настраиваю добавление лидов в CRM но клиент требует создание сделки минуя создание лида. Возможно ли это? Если да не могли бы вы подсказать???

          • Добрый день, Лев

            да, конечно, можно.
            Готового пример нет, но есть отличная документация retst api
            И еще отличный пример от разработчиков.

  4. вопрос: есть сайт, на нем несколько форм с разным кол-вом полей + 1 форма с экспресс опросом (6 вопросов, почле запрашивает контактные данные)
    есть ли возможность получать данные со всех форм и передавать в битрикс24, чтобы в црм было видно с какой формы пришел клиент?

    • Добрый день, Слава

      1. да, возможность передавать данные со всех форм есть. Вы можете посмотреть пример в данном комментарии на примере плагина СF-7 для WordPress.

      2. для того, чтобы понимать из какой формы был оставлен комментарий, вы можете для каждой из них настроить свой уникальный TITLE при передачи значений в Б24. Или же создать свое пользовательское поле и передавать значение для него. Как создать и передавать данные в свое пользовательское поле вы можете здесь.
      Здесь нужно делать так, как Вам удобнее

  5. Добрый день! В CRM также есть поле BIRTHDATE как в него писать?

     $arParams['BIRTHDATE'] = "30.12.2015 12:35"; 
    

    ругается на ошибку.

    • Все стандартные поля, которые можно передавать с помощью данного php скрипта, указаны в «Таблица 1: Параметры»

  6. Добрый день. Работает все хорошо, но есть одна проблема. Когда ввожу другой домен Битрикс24 в скрипт лиды не приходят. На другом домене все работает хорошо. Настройки ролей в обоях случаях одинаковы. В чем проблема?

  7. Отличная статья, спасибо!
    Только не понятно, каким образом указывать значения внутри Что бы все работало для input…

    • Добрый день,

      если у вас landing без CMS, то вставляйте данный код в ваш php файл, который отвечает за успешную/не успешную обработку формы.
      Если у вас CMS, то следуйте его мануалам по обработке форм. К примеру, в данном блоге вы можете ознакомится как это можно сделать для CF7 на WordPress или RSForm на Joomla.

  8. Добрый вечер. Что-то не получается, подскажите, пожалуйста, в чем проблема?

    • Добрый день, Виталий
      речь про какое уведомление идет?
      Если про уведомление в б24, то, к сожалению, crm система его не поддерживает.

  9. Можно ли добавить контроль лидов? Сейчас все Лиды заходят как новый даже если уже был этот телефон и имя.

    • Добрый день, Иван
      Заходите в Битрикс 24:
      CRM → Настройки → Другое → Прочие настройки → Настройки контроля дубликатов

      • Владимир, тоже интересует вопрос как на входе в CRM проводить контроль на дубликаты.
        Указанные вами настройки — это для инструмента «Контроль дубликатов», в каких сущностях включать инструмент. А хочется не устранять дубли через «Контроль дубликатов» (кстати, вручную), а на входе не создавать их.

        Нагуглил функцию crm.duplicate.findbycomm [ссылка заблокирована по решению администрации сайта]
        Но не умею ей пользоваться 🙂

        Можете помочь?

        • Добрый день, Артем
          непонятно для чего вам это и как это обрабатывать.

          К примеру, пользователь отравляет две разные заявки / делает две разные покупки.
          Первая заявка / покупка попадает в CRM, а что со второй? Блокировать создание?

          Здесь уже необходима индивидуальная настройка и изучения ваших потребностей.

          Но в любом случаи, я не рекомендую этого делать. Здесь лучше всего сделать обработку лидов на стороне своего сервера, чтобы к одному контакту/компании/сделки привязывались лиды с одинаковыми контактными данными.

          • Добрый!
            Например, постоянный покупатель делает очередной заказ в интернет-магазине и уже не нужно создавать новый контакт по заявке. Нужна очередная сделка по уже имеющемуся клиенту.

            А скрипт с каждым новым лидом или сделкой создаёт новый контакт.
            В нём не предусмотрена проверка на дубли.

            Делать постоянно проверку на дубли потом — это так себе история, ведь она проводится руками.

          • Добрый день,

            ваша проблема и нужды понятны. Для ее решения:

            1. Перейдите в CRM → Настройки → Другое → Прочие настройки. Поставьте галочку для «Включить автоматическую регистрацию повторных продаж».
            2. Установите в CRM бесплатное приложение «Автоматическая привязка ответственного». Данное приложение не только поможет привязывать лиды к существующим контактам, но и назначать ответственного, который числился за данным клиентом ранее.
            3. На странице лидов произведите настройку списка включив отображение «Повторный лид». Это позволит, не заходя в карточку, увидеть, в самом списке лидов, было ли обращение по данному клиенту ранее.
  10. Здравствуйте. Не получается этим способом передать UTM-метки. Что скажете по этому поводу?

  11. PHONE, PHONE_HOME, PHONE_WORK, EMAIL, EMAIL_WORK, EMAIL_HOME не удается передать через ваш скрипт. Читал, что это многомерный массив. Есть пример реализации здесь [ссылка заблокирована по решению администрации сайта] , но не получилось.

    Как адаптировать передачу этих массивов с телефоном и почтой через ваш скрипт с вебхуками? Заранее спасибо

    • Добрый день, Дмитрий

      1. Для начала получаем необходимые вам занчания. Пример,
        			$leadTitle = 'Поступил новый лид';
        			$eWork = 'email-work@mail.ru';
        			$eHome = 'email-home@mail.ru';
        			$phWork = '+79157778899';
        			$phHome = '+79157779988';
        		
      2. Затем передаем в Битрикс24
        • Пример для скрипта упрощенного Rest API
          					$postData = array(
          					  'TITLE' => $leadTitle,
          					  'EMAIL_WORK' => $eWork,
          					  'EMAIL_HOME' => $eWork,
          					  'PHONE_WORK' => $phWork,
          					  'PHONE_HOME' => $phHome
          					);
          				
        • Пример для входящего вебхука
          					$curl = curl_init();
          					curl_setopt_array($curl, array(
          					  'TITLE' => $leadTitle,
          					  'EMAIL_WORK' => $eWork,
          					  'EMAIL_HOME' => $eWork,
          					  'PHONE_WORK' => $phWork,
          					  'PHONE_HOME' => $phHome
          					));
          				
  12. Не помогло. Не передается почта и телефон.
    array(
    ‘TITLE’ => $leadData[‘TITLE’],
    ‘UF_CRM_1545898394’ => $leadData[‘UF_CRM_1545898394’],
    ‘UF_CRM_1545898353’ => $leadData[‘UF_CRM_1545898353′],
    //’EMAIL’ => isset($leadData[‘EMAIL’]) ? array(array(‘VALUE’ => $leadData[‘VALUE’][‘EMAIL’], ‘VALUE_TYPE’ => ‘WORK’)) : array(),
    // ‘PHONE’ => isset($leadData[‘PHONE’]) ? array(array(‘VALUE’ => $leadData[‘VALUE’][‘PHONE’], ‘VALUE_TYPE’ => ‘WORK’)) : array(),
    ‘UF_CRM_INN’ => $leadData[‘UF_CRM_INN’],
    ‘UF_CRM_1522752123’ => $leadData[‘UF_CRM_1522752123’],
    ‘COMMENTS’ => $leadData[‘COMMENTS’],
    ),
    ‘params’ => array(«REGISTER_SONET_EVENT» => «Y»)
    ));

    // обращаемся к Битрикс24 при помощи функции curl_exec
    $curl = curl_init();
    curl_setopt_array($curl, array(
    CURLOPT_SSL_VERIFYPEER => 0,
    CURLOPT_POST => 1,
    CURLOPT_HEADER => 0,
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_URL => $queryUrl,
    CURLOPT_POSTFIELDS => $queryData,
    // ‘TITLE’ => $leadTitle,
    //’EMAIL_WORK’ => $leadData[‘EMAIL_WORK’],

    // ‘PHONE_WORK’ => $leadData[‘PHONE_WORK’]
    //’PHONE_WORK’ => $phWork,
    // ‘PHONE_HOME’ => $phHome

    ));
    $result = curl_exec($curl);
    curl_close($curl);
    $result = json_decode($result, 1);
    //if (array_key_exists(‘error’, $result)) echo «Ошибка при сохранении лида: «.$result[‘error_description’].»»;

    // HTML form
    }
    else
    {
    $output = »;
    }

    ?>

    Title*:
    Email:
    Phone:
    INN:
    Zakupka link:
    Comments:

      1. Отправляя код в комментариях, его следует обрамлять тегом pre. В противном случаи он не читабелен, что вы сами можете видеть на своем примере выше.
      2. Даже не в читабельном состоянии видно, что код не рабочий.
      3. По ошибкам:
        • сначала необходимо перехватить данные;
        • затем сформировать URL в переменной $queryUrl;
        • массив для передачи данных в Битрикс 24 формируется в $queryData = http_build_query(array(, в котором сопоставляются параметры полей в Битрикс24 с вашими перехваченными данными;
        • в массив curl_setopt_array($curl, array( ничего записывать не нужно, он уже подтягивает данные из $queryUrl и $queryData.

        Пример,

        // Перехватываем данные
        $title = $leadData['TITLE'];
        $message = $leadData['COMMENTS'];
        $eWork = $leadData['PHONE'];
        $phWork = $leadData['EMAIL'];
        
        // Формируем URL в переменной $queryUrl
        $queryUrl = 'https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.lead.add.json';
        
        // Сопоставляем параметры полей в Битрикс24 с перехваченными данными
        $queryData = http_build_query(array(
          'fields' => array(
            'TITLE' => $title,
            'EMAIL_WORK' => $message,
            'EMAIL_WORK' => $eWork,
            'COMMENTS' => $eHome,
          ),
          'params' => array("REGISTER_SONET_EVENT" => "Y")
        ));
        
        // Далее ничего не меняем и не вносим
        $curl = curl_init();
        curl_setopt_array($curl, array(
        	CURLOPT_SSL_VERIFYPEER => 0,
        	CURLOPT_POST => 1,
        	CURLOPT_HEADER => 0,
        	CURLOPT_RETURNTRANSFER => 1,
        	CURLOPT_URL => $queryUrl,
        	CURLOPT_POSTFIELDS => $queryData,
        ));
        $result = curl_exec($curl);
        curl_close($curl);
        $result = json_decode($result, 1);
        if (array_key_exists('error', $result)) echo "Ошибка при сохранении лида: ".$result['error_description']."
        ";

      Я не знаю, что там у вас к чему, но скорее всего ваш полный рабочий код будет выглядеть следующим образом:

      function complete_mail() {
      	// Получаем необработанные POST-данные
      	$leadData = $_POST['DATA'];
      
      	// Обрабатываем необработанные POST-данные, т.е перехватываем данные
      	$title = $leadData['TITLE'];
      	$message = $leadData['COMMENTS'];
      	$eWork = $leadData['PHONE'];
      	$phWork = $leadData['EMAIL'];
      
      	// Формируем URL в переменной $queryUrl
      	$queryUrl = 'https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.lead.add.json';
      
      	// Сопоставляем параметры полей в Битрикс24 с перехваченными данными
      	$queryData = http_build_query(array(
      	  'fields' => array(
      	    'TITLE' => $title,
      	    'EMAIL_WORK' => $message,
      	    'EMAIL_WORK' => $eWork,
      	    'COMMENTS' => $eHome,
      	  ),
      	  'params' => array("REGISTER_SONET_EVENT" => "Y")
      	));
      
      	// Далее ничего не меняем и не вносим
      	$curl = curl_init();
      	curl_setopt_array($curl, array(
      		CURLOPT_SSL_VERIFYPEER => 0,
      		CURLOPT_POST => 1,
      		CURLOPT_HEADER => 0,
      		CURLOPT_RETURNTRANSFER => 1,
      		CURLOPT_URL => $queryUrl,
      		CURLOPT_POSTFIELDS => $queryData,
      	));
      	$result = curl_exec($curl);
      	curl_close($curl);
      	$result = json_decode($result, 1);
      	if (array_key_exists('error', $result)) echo "Ошибка при сохранении лида: ".$result['error_description']."
      "; }
    • Добрый день,

      да, проблема действительно была. Способ ее решения вы можете найти в данном комментарии — ссылка.

  13. Спасибо Автор за очень полезную статью!
    Подскажите будет ли статья как разложить ютм меточки и их значения, попадания данных в срм. На примере кода выше?

    • Добрый день,

      да, в плане стоит написание статьи по данному поводу.
      Постараюсь выложить ее в ближайшее время.

      Спасибо что читаете =)

  14. Спасибо за статью. Как это сделать, если вообще не разбираемся в коде?) Куда что вставить?

  15. Владимир, доброго времени суток. Пытаюсь сделать вебхук по вашей инструкции, но ничего лид по какой-то причине не создается, так же хочу просмотреть что происходит при обращении, пытаюсь писать в лог, но там тоже ничего нет. Сам код — [код заблокирован по решению администрации сайта]

    Если не затруднит, подскажите где я ошибся. И еще может знаете, как можно сделать перенос строки в комментарии при создании лида

  16. Добрый день. Как быть с таким примером.
    Есть имя клиента, телефон, мыло. Если есть клиент с такими параметрами уже, то чтобы его прицеплял? Или делать доп запрос к БД битрикса на поиск клиента?

    • Добрый день,
      да, необходимо делать запрос к битриксу на поиск клиента.
      Если клиент уже существует, лид помечается как повторный и привязывается к существующему контакту.

  17. Добрый день. Есть ли возможность добавить к лиду файлы? И если есть, то как?

    • Добрый день, Владислав
      да, возможность такая есть. Для этого вам необходимо использовать интеграцию при помощи входящего вебхука.

      Работает это следующим образом:

      	$url = 'абсолютная ссылка на файл'; // получаете ссылку на сохраненный файл
      	$data = file_get_contents($url); // получаете сам файл по ссылке
      	$base64 = base64_encode($data); // далее необходимо преобразовать необходимую информацию в строку формата Base64
      	$name = urldecode(basename($url)); // кодируем имя url
      

      А затем передаем в битрикс24

      	UF_CRM_XXXXXXXXXXXX' => ['fileData' => [$name, $base64]],
      

      ,где UF_CRM_XXXXXXXXXXXX — это название произвольного поля, тип которого должен соответствовать файлу. Данное поле вы должны предварительно создать в битрикс24.

      • Добрый день! не подскажете откуда брать ‘абсолютная ссылка на файл’ если у меня просто html форма с типичным input type=»file» ?

        • Добрый день, Andrew71

          html форма просто так не работает, ее должен обрабатывать php файл ((и)или js файл).
          Смотрите в нем, как он формирует временные абсолютные ссылки

          • я имею в виду что файл не сохраняется нигде на сервере при заполнении формы и я не знаю откуда мне брать $url = ‘абсолютная ссылка на файл’ для обработчика, в массиве $_REQUEST никаких данных из этого поля не формируются.

          • Прикрепленные файлы обязательно сохраняются во временном хранилище.
            Как только файл будет прикреплен к письму он будет удален из временного хранилища.
            Где у вас временное хранилище, я не знаю. Ищите у себя на сервере папку /temp/

            Если у себя в php-обработчике формы вы нигде не видите путь, куда сохраняются файлы, то вы можете задать его самостоятельно:

            $uploaddir = '/var/www/uploads/'; // указываете путь куда сохранять файл на вашем сервере
            $uploadfile = $uploaddir . basename($_FILES['name из поля вашей формы']['tmp_name']);
            

            А если вы хотите сохранить файл навсегда, то его необходимо перенести из временного хранилища функцией

            move_uploaded_file($_FILES['name из поля вашей формы']['tmp_name'], "путь до папки куда необходимо сохранять")
            
  18. Здравствуйте! Спасибо за статью. Информация была очень полезна при создании собственной php-библиотеки для работы с битрикс-24 через веб-хуки.
    Библиотека поддерживает весь функционал описанный в документации. Может кому то понадобится — ссылка

  19. Доброго дня
    Если ли возможность передать вложение в лид? у меня такая ситуация на вордпресс плагин CF7. В нем есть поле Файл или в моем случае Мультифайл через надстройку к плагину

    //я перехватываю поле
    $myfile = $posted_data[‘file-961’];
    //передаю в битрикс
    ‘UF_CRM_1560501128’ => $myfile,
    //регистрировал поле в нас троках лидов (выше его id)

    но так не работает, существует ли решение данного вопроса, заранее благодарю

  20. Владимир, Вопрос по дублям. При регистрации на сайте создаем Лид в Б24, потом при совершении покупки на сайте в Б24 создаем Контакт. Есть задача перед созданием Лида на сайте проверять в списке Контактов на наличие уже email такого же как и у нового Лида и в этом случае не создавать Лид. Как можно такую проверку реализовать

    • Добрый день, Михаил
      Это возможно сделать только при полноценной интеграции через API Б24 и на стороне вашего сервера.
      Можете еще попробовать поискать в маркетплейс готовые приложения. Может быть подобное кто-то уже реализовал.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *