Интеграция Битрикс24 с сайтом через PHP

Интеграция Битрикс24 с сайтом через PHP

13 сентября 2019 1С-Битрикс

Возникла задача интеграции лендинга с CRM Битрикс24. Лендинг самый обычный на HTML. Необходимо было создавать лиды из отправляемых с сайта форм обратной связи.

В формах была отправка не только данных о пользователе — имя, телефон и e-mail, но и передача нескольких нестандартных значений — название выбранного товара и пользовательский текст.

Нужно учитывать, что для создания лида в Битрикс24 поле Заголовок и Имя обязательно. Остальные поля заполняются по необходимости. Поле телефон и e-mail стандартные, а название товара и текст было решено передавать в пользовательский комментарий к лиду.

PHP скрипт для создания лида в CRM Битрикс24

В CRM 1C-Битрикс формы, созданные через модуль форм подключаются проще простого, достаточно включить это в настройках. Но и тут на деле все оказалось довольно просто. У Битрикс существует REST API, с помощью которого можно передавать лиды через PHP скрипт. И использовать популярную CRM для любого сайта.

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

define('CRM_LOGIN', 'login@it-blog.ru'); // Логин пользователя Вашей CRM 
define('CRM_PASSWORD', 'pass'); // Пароль пользователя Вашей CRM 

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    $name = $_POST['name'];// Получаем данные из поля Имя
    $phone = $_POST['phone']; // Получаем данные из поля Телефон
    $usermail = $_POST['email']; // Получаем данные из поля E-mail
    $product = $_POST['product']; // Получаем данные из скрытого поля названия товара
    if(!empty($_POST['comment'])) {
        $comment = $_POST['comment']; // Если есть комментарий, то получаем поле Комментарий
    }
 
   $postData = array(
      'TITLE' => 'Заявка с сайта', // Заголовок для лида
      'NAME' => $name, // Имя
      'PHONE_WORK' => $phone, // Телефон
      'EMAIL_WORK' => $usermail, // E-mail
      'COMMENTS' => $product.' '.$comment // Пользовательский комментарий
   );

   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.')';
   }
}

?>

Поле название товара передается через скрытый input в форме

<input type="hidden" value="Название товара" />

И при отправке в CRM к нему добавляется комментарий, если он заполнен.

С помощью этого нехитрого скрипта вы можете передавать любые значения из форм в поля лида.

Стандартные имена ключей для полей Битрикс24

Здесь приведены только основные поля, которые могут понадобиться для большинства сайтов. Полный список полей можно узнать из документации к Битрикс24.

TITLE — название лида
NAME — имя
LAST_NAME — фамилия
SECOND_NAME — отчество
PHONE_WORK — рабочий телефон
PHONE_MOBILE — мобильный телефон
PHONE_HOME — домашний телефон
EMAIL_WORK — рабочий e-mail
EMAIL_HOME — личный e-mail
ADDRESS — адрес
COMMENTS — комментарий
COMPANY_TITLE — название компании
WEB_HOME — личная страница
WEB_WORK — корпоративный сайт
IM_OTHER — другой контакт

Передача значения в пользовательское поле Битрикс24 из PHP скрипта

Для начала необходимо создать пользовательское поле в самой CRM:

  • Зайти в раздел CRM → Настройки → Настройки форм и отчетов → Пользовательские поля → Лид и Добавить поле
  • Указать название поля
  • Установить галочку «Показывать в списке»
  • Выбрать тип поля, например «Строка»
  • Сохранить

Далее в массиве $postData добавить новое значение 'UF_CRM_XXXXXXXXXX' => $customField,
где XXXXXXXXXX — это ID пользовательского поля

$postData = array(
      'TITLE' => 'Заявка с сайта', // Заголовок для лида
      'NAME' => $name, // Имя
      'PHONE_WORK' => $phone, // Телефон
      'EMAIL_WORK' => $usermail, // E-mail
      'COMMENTS' => $product.' '.$comment, // Пользовательский комментарий
      'UF_CRM_XXXXXXXXXX' => $customField, // Пользовательское поле
   );

Как узнать ID пользовательского поля?

Чтобы узнать ID пользовательского поля, нужно:

  • Зайти в раздел CRM → Настройки → Настройки форм и отчетов → Пользовательские поля → Лид и Список поле
  • В списке найти нужное поле и перейти в него

В адресной строке, вы увидите значение UF_CRM_XXXXXXXXXX https://login.bitrix24.ru/crm/configs/fields/CRM_LEAD/edit/UF_CRM_XXXXXXXXXX/ , где UF_CRM_XXXXXXXXXX — это и есть ID

Если вам понравилась статья, вы можете отблагодарить автора любой суммой, какую сочтете для себя приемлемой:
Остались вопросы по статье? Задайте их прямо сейчас!
Похожие записи
AJAX в 1C-Битрикс

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

Использование Битрикс CAPTCHA

Использовать капчу в формах довольно просто, достаточно отметить галочкой нужный пункт. А что если нужна защита кодом для какого-то нестандартного функционала?! В этом случае можно так же воспользоваться встроенными методами Битрикс. Включение капчи в модуле Веб-формы. Шаг 1 Подключаем библиотеку Читать далее

Работа с собственными таблицами в базе данных Битрикс

Работа с базой данных в CMS 1C-Битрикс осуществляется с помощью глобального объекта $DB. Класс позволяет осуществлять различные операции с базой данных, такие как например добавление, удаление, обновление и вывод данных. Аналог в CMS WrodPress - класс wpdb. Обращаться к базе данных Читать далее

Резервное копирование Битрикс файлов и ведения логов действий пользователей

Наткнулся в сообществе разработчиков 1С-Битрикс на очень интересную разработку - модуль, который отслеживает изменения файлов/страниц на сайте и сохраняет их резервные копии, а так же ведет логи действий и формирует отчеты с фильтрами. Странно, что этот модуль так и не Читать далее

Комментарии с ответами в битрикс

Стандартно в комплексных компонентах битрикса используется компонент forum.topic.reviews, который не предусматривает древовидных ответов на комментарии, как например в соц. сетях. Получилось реализовать такой функционал стандартными средствами битрикса, с помощью другого компонента blog.post.comment - комментарии к сообщению блога, который входит в Читать далее

Создание компонента Битрикс на примере слайдера

Когда я создавал свою первую компоненту на битриксе для меня это показалось довольно сложным процессом. Вроде бы написано полно статей, русскоязычная документация, форум. Что ещё надо?! А то, что нет простой для понимания информации для новичка, который только начинает практиковаться Читать далее

3 комментария на «Интеграция Битрикс24 с сайтом через PHP»

  1. Алексей:

    Наконец-то нашел рабочий вариант и подробное объяснение!!! Спасибо большое!

  2. Дмитрий:

    Здравствуйте! Спасибо вам большое!

  3. Alexey:

    Действительно все просто. Спасибо автору!

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

*

code