Интеграция CMS Joomla и Битрикс24 CRM при помощи компонента RSForm


Если Вы в поисках пошагового руководства по интеграции Joomla и Битрикс24, то это статья для Вас.
В ней будет детально разобрана установка связи CMS Joomla с Битрикс24 при помощи компонента RSForm.

Как связать CMS Joomla и Битрикс24 CRM при помощи компонента RSForm?

Интеграция Joomla с Битрикс24 очень проста и практически ни чем не отличается от любой другой интеграции с сайтами на других CMS и коллерирует с интеграцией Contact Form 7 и Bitrix24. Все что нам для этого понадобится это:

  1. Рассмотреть метод POST для RSForm.
  2. Выбрать подходящий способ интеграции с Битрикс 24.
  3. Внести полученный код в компонент RSForm.
Перед изучением данной инструкции, рекомендую ознакомится со статьей «Битрикс24 лиды с сайта — автоматическое создание лидов».

Рассмотрение метода POST для RSForm

При успешной обработки формы нам необходимо получить переменные из супер глобального массива, которые передаются в виде заявки с сайта. Для этого применяется метод $_POST['имя_переменной']. Где ['имя_переменной'], в нашем случаи, — это form. Однако все данные form необходимо как-то разделять. Для этого при использование метода POST необходимо будет определять те поля формы, из которых необходимо «доставать» данные, указывая названия поля.
Таким образом для получения переменной из RSForm используются следующие значения методов POST:

  // Для текстовых и скрытых полей, календаря, кнопки, капчи, радио
  $_POST['form']['название_поля']
  // Для групп checkbox
  $_POST['form']['название_поля'][index]
  // Для выпадающего списка
  $_POST['form']['название_поля'][0]

, где ['название_поля'] – название интересующего Вас поля в компоненте RSForm, данные которого необходимо передать в лид CRM Битрикс24.

RSForm - название поля
Здесь можно узнать названия интересующего Вас поля в форме RSForm

Так, к примеру, если Ваша форма состоит из трех полей: имя, номер телефона и сообщение, которым присвоены следующее соответствующие названия: name, phone, massege, метод POST для RSForm будет иметь следующий вид:

  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $p_name = $_POST['form']['name'];
    $p_phone = $_POST['form']['phone'];
    $p_massege = $_POST['form']['massege'];
  }

Выбор подходящего способа интеграции с Битрикс 24

В данной статье рассматривается два способа интеграции RSForm и Битрикс24:

  1. с помощью упрощенного Rest API;
  2. при помощи входящего вебхука в Битрикс24.

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

С помощью упрощенного Rest API

PHP скрипт упрощенного Rest API от Битрикс 24

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

Прежде чем указывать ваш логин и пароль в PHP скрипте, ознакомитесь, пожалуйста, с разделом «Логин и пароль пользователя Вашей CRM».

Объединение POST для RSForm с PHP скриптом упрощенного Rest API

Познакомившись с методом перехвата POST для компонента RSForm можно приступить к объединению POST и PHP скрипта Rest API для реализации интеграция CMS Joomla и Битрикс24 CRM. При объединении двух кодов нам необходимо будет учесть следующею последовательность:

  1. подключение к серверу CRM Битрикс24;
  2. авторизация в CRM;
  3. получение данных из компонента RSForm для CMS Joomla;
  4. формирование параметров для создания лида в переменной $postData = array из компонента Joomla — RSForm;
  5. передача данных из Joomla в Битрикс 24.

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

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

  // Авторизуемся в CRM под необходимым пользователем:
  // 1. Указываем логин пользователя Вашей CRM по управлению лидами
  define('CRM_LOGIN', 'login');
  // 2. Указываем пароль пользователя Вашей CRM по управлению лидами
  define('CRM_PASSWORD', 'password');

  // Получаем данные из компонента Joomla - RSForm методом POST
  if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    // Получаем данные из поля Имя
    $p_name = $_POST['form']['name'];
    // Получаем данные из поля Телефон
    $p_phone = $_POST['form']['phone'];
    // Получаем данные из поля Сообщение
    $p_massege = $_POST['form']['massege'];

   // Формируем параметры для создания лида в переменной $postData = array
   $postData = array(
      // Устанавливаем название для заголовка лида
      'TITLE' => 'Название лида с сайта', 
      'NAME' => $p_name,
      'PHONE_WORK' => $p_phone,
      'COMMENTS' => $p_massege,
   );

   // Передаем данные из Joomla в Bitrix24
   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 скрипт для отправки данных в Битрикс24

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

Для того чтобы активировать работу данного скрипта, необходимо создать вебхук в самом Битрикс24 и получить [идентификатор_пользователя] и [код_вебхука]. Как это сделать можно узнать здесь: «Как создать входящий вубхук».

Объединение POST для RSForm с PHP скриптом

Теперь зная как перехватывать данные с помощью метода POST для компонента RSForm можно приступить к объединению POST и PHP скрипта. При объединении двух кодов нам необходимо будет учесть следующею последовательность:

  1. получение данных из компонента RSForm для CMS Joomla;
  2. формирование URL в переменной $queryUrl;
  3. формирование параметров для создания лида в переменной $postData = array из компонента Joomla — RSForm;
  4. передача данных из Joomla в Битрикс 24.

После чего получается следующий код:

  // Получаем данные из компонента Joomla - RSForm методом POST
  if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // Получаем данные из поля Имя
    $p_name = $_POST['form']['name'];
    // Получаем данные из поля Сообщение
    $p_massege = $_POST['form']['massege'];

    // Формируем URL в переменной $queryUrl для отправки сообщений в лиды Битрикс24, где
    // указываем [ваше_название], [идентификатор_пользователя] и [код_вебхука]
    $queryUrl = 'https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.lead.add.json';
    // Формируем параметры для создания лида в переменной $queryData
    $queryData = http_build_query(array(
      'fields' => array(
        // Устанавливаем название для заголовка лида
        'TITLE' => 'Название лида с сайта', 
        'NAME' => $p_name,
        'COMMENTS' => $p_massege,
      ),
      '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 или мессенджера

При интеграции RS Form и Битрикс 24 с помощью входящего вебхука, необходимо учесть особенности передачи номера телефона, email или мессенджера. Что это за особенности, и как все-таки передавать данные параметры можно узнать в разделе «Учесть особенность для передачи номера телефона, email, мессенджера».

Внесение полученного кода в компонент RSForm

После рассмотрения двух способов интеграции RSForm для Joomla и Битрикс24 осталося всего лишь установить либой из рассмотренных кодов интеграции в компонент RSForm. Я рекомендую все-таки использовать интеграцию при помощи помощи входящего вебхука Битрикс 24.

Для внесения кода интеграции в компонент RSForm необходимо в административной части сайта перейти в Компоненты → RSForm! Pro → Управление формами → Интересующая Вас форма → Свойства → PHP скрипты и там найти поле под названием «Скрипт, вызываемый при обработке формы».

Подключение RSForm к Битрикс24
Интеграция CMS Joomla и Битрикс24 CRM при помощь компонента RSForm

В данное поле и необходимо вставить любой из рассмотренных PHP скриптов интеграции и сохранить изменения.

Вот и все. Интеграция Joomla и Битрикс24 при помощи компонента RSForm завершена.

P.S
Если у Вас интернет-магазин на основе плагина Woocommerce, то рекомендую ознакомиться со статьей по интеграции Woocommerce и Bitrix24.

Понравилась статья? Поделись ей =)
Вам также может быть интересно
18 комментариев

Как сделать обратный звонок при помощи RSForm и Битрикс24 с добавлением данных в ЛИД ?

Владимир из Get To the Top

Добрый день, Gurman
В RSForm делателе форму с нужными Вам полями. К примеру, Имя и номер телефона.
Далее, согласно инструкции, настраиваете интеграцию RSForm и Битркс24. Принцип ничем не отличается.

С инструкцией всё понятно, непонятно как отправлять запросы для обратного звонка, а не лидов.

Владимир из Get To the Top

К сожалению, мне не совсем понятно, что Вы имеете ввиду.
Вы хотите:

  1. Чтобы клиент оставлял запрос обратного звонка в форме на сайте;
  2. Данный запрос поступал в Битрикс 24;
  3. После чего CRM автоматически звонила на номер клиента.

Верно?

Gurman

Да

Владимир из Get To the Top

В любом случаи Вам для начала необходимо добавлять лид в CRM систему. После чего можно организовать автоматический вызов клиента и Вашего сотрудника.
Это можно сделать через бизнес процессы CRM системы или с помощью API стороннего сервиса или Вашего сервера с Bitrix24.

огромное спасибо за статью, выручил

Владимир из Get To the Top

не за что 😉

Можете рассказать подробнее как сделать такую схему
Форма на сайте RSFORM (Имя, Телефон) -> Лид в Битрикс 24, -> Автоматический обратный звонок менеджеру Битрикс24 по данным полученным из RSForm

Владимир из Get To the Top

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

Мария

Подскажите пожалуйста, а возможно из RSForm передать в пользовательское поле битрикс24 ссылку или путь к загруженному через форму файлу? Как это можно было бы реализовать?

Владимир из Get To the Top

Добрый день, Мария
да, можно даже прикрепить файл. Только метод Rest API вам не подойдет для этого, так как не предназначен для передачи файлов.
Для того, чтобы передать файл, вам необходимо осуществить интеграцию с помощью вебхуков битрикс24.

Для начала получаем и обрабатываем прикрепленный файл:

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

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

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

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

Если я не ошибаюсь, для получения абсолютной ссылки на прикрепленный файл в RS Form, можно использовать следующий метод:

	$path = JPATH_BASE .'/components/com_rsform/uploads/';
	$uploadfile = $path . $_POST['form']['name_field'] ;

Мария

Большое спасибо за ответ!
Попытаюсь разобраться что к чему. Я слишком слабо в этом разбираюсь (не сказать еще хужей :)), чтобы даже уточняющий вопрос задать :).
Почитаю пока про вебхуки битрикса24… Надеюсь разберусь и если что задам еще вопрос.

Станислав

Добрый день, Владимир

спасибо большое за публикацию!
Благодаря вашей статье сразу удалось интегрироваться без проблем!

Владимир из Get To the Top

Добрый день, Станислав

всегда, пожалуйста =)

Виталий

Огромное спасибо. Статья очень помогла. Единственный нюанс, почему-то с этим кодом перестает работать редирект формы после отправки на страничку спасибо.
Поэтому в своем коде я добавил после curl_close($curl); строку с редиректом

JFactory::getApplication()->redirect('/thankyou');

Может кому пригодится.

Захар

Народ, подскажите, пожалуйста, как обратиться к скрипту через ajax? Использую другую форму на сайте, не RS Form. Нет возможности вставить сразу php.

Пробую так:

$("#pwebcontact141_form").submit(function() {
	$.ajax({
		type: "POST",
		url: "/templates/hausstand/include/rest.php",
		data: $(this).serialize()
	});
	return false;
});

Заявка на почту приходит, а в битриксе лид не появляется.

Александр

Подскажите, а для balbooa forms сложно переделать

Оставить комментарий

Ваш адрес электронной почты опубликован не будет.Поля, обязательные для заполнения, помечены *