Интеграция Contact Form 7 и Bitrix24

Как связать Contact Form 7 и Bitrix24?

Многие владельцы сайтов на CMS WordPress уже задумывались как же связать сайт с CRM системой Битрикс 24? Чтобы ответить на данный вопрос, давайте рассмотрим интеграцию Contact Form 7 и Bitrix24. Прежде всего рекомендую ознакомится со статьей «Битрикс24 лиды с сайта — автоматическое создание лидов» и затем продолжить изучение данной инструкции.
Как связать Contact Form 7 и Bitrix24? И так, давайте более детально рассмотрим автоматическую передачу заявок в CRM Битрикс24 для одной из популярных CMS систем WordPress, а также не менее популярного для неё плагина для создания, получения и обработки лидов с сайта — Contact Form 7. Для этого на понадобится:
Хук для перехвата введенных данных из Contact Form 7. Выбор подходящего способа передачи в Битрикс 24 С помощью упрощенного Rest API PHP скрипт для интеграции при помощи упрощенного Rest API Объединение хука и PHP скрипта. При помощи входящего вебхука PHP скрипт для интеграции при входящего вебхука Объединение хука и PHP скрипта. Внесение полученного кода в Вашу тему в файл functions.php Хук для перехвата введенных данных из Contact Form 7 Что такое хук? Хук — это технология перехвата вызова функций в сторонних процессах. Соответственно, так как Contact Form 7 — это сторонний плагин, то нам необходим хук для получения обрабатываемых там данных. В нашем случаи хук для перехвата данных из Contact Form 7 в CMS WordPress будет выглядеть следующим образом:
add_action( 'wpcf7_mail_sent', 'your_wpcf7_mail_sent_function' ); function your_wpcf7_mail_sent_function( $contact_form ) { $title = $contact_form->title; $posted_data = $contact_form->posted_data; //Вместо "Контактная форма 1" необходимо указать название Вашей контактной формы if ('Контактная форма 1' == $title ) { $submission = WPCF7_Submission::get_instance(); $posted_data = $submission->get_posted_data(); //далее мы перехватывает введенные данные в Contact Form 7 //перехватываем поле [your-name] $firstName = $posted_data['your-name']; //перехватываем поле [your-message] $message = $posted_data['your-message']; //в данном примере рассмотрены два поля. Как перехватывать остальные поля //читайте ниже. } В данном хуке приведены примеры по перехвату только двух полей: Имени и Сообщения. Если Вам необходимо передавать больше полей или какие-либо отдельно созданные поля, то возникает вопрос где брать название $posted_data?
Для того, чтобы найти названия для $posted_data, Вам необходимо перейти в плагин Contact Form 7 — Контактные формы — «Интересующая контактная форма» — Шаблон/Письмо, где можно найти информацию о том, какие поля используются в Вашей форме.
Хук для Contact Form 7 Название $posted_data для хука Contact Form 7
Выбор подходящего способа передачи в Битрикс 24 В данной статье рассматривается два способа интеграции CF7 и Битрикс24:
с помощью упрощенного Rest API; при помощи входящего вебхука в Битрикс24. Из данных двух способов, я бы рекомендовал использовать интеграцию при помощи входящего вебхука в Битрикс24, так как данный способ более безопасный и более функциональный, чем интеграция при помощи упрощенного Rest API.
С помощью упрощенного Rest API PHP скрипт упрощенного Rest API для отправки данных в Bitrix24 Где взять данный скрипт и как его настроить, вы можете узнать здесь «Автоматическое создание лидов в Битрикс24 через упрощенный Rest API».
Прежде чем указывать ваш логин и пароль в PHP скрипте, ознакомитесь, пожалуйста, с разделом «Логин и пароль пользователя Вашей CRM».
Объединение хука и PHP скрипта Рассмотрев PHP скрипт упрощенного Rest API для отправки данных в Bitrix24 и Хук для перехвата введенных данных из Contact Form 7 теперь можно перейти к объединению данных двух функций. При этом необходимо будет учесть последовательность функций в коде, которая будет иметь следующий вид:
вызов функции для перехвата данных; подключение к серверу CRM; авторизация в CRM; перехват данных из Contact Form 7; формирование параметров для создания лида в переменной $postData = array из Contact Form 7; передача данных из Contact Form 7 в Bitrix24. Таким образом мы получим код следующего вида:
// Вызываем функцию для перехвата данных add_action( 'wpcf7_mail_sent', 'your_wpcf7_mail_sent_function' ); function your_wpcf7_mail_sent_function( $contact_form ) { // Подключаемся к серверу 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'); // Перехватываем данные из Contact Form 7 $title = $contact_form->title; $posted_data = $contact_form->posted_data; // Вместо "Контактная форма 1" необходимо указать название вашей контактной формы if ('Контактная форма 1' == $title ) { $submission = WPCF7_Submission::get_instance(); $posted_data = $submission->get_posted_data(); // Далее перехватываем введенные данные в полях Contact Form 7: // 1. Перехватываем поле [your-name] $firstName = $posted_data['your-name']; // 2. Перехватываем поле [your-message] $message = $posted_data['your-message']; // Формируем параметры для создания лида в переменной $postData = array $postData = array( // Устанавливаем название для заголовка лида 'TITLE' => 'Название лида с сайта', 'NAME' => $firstName, 'COMMENTS' => $message, ); // Передаем данные из Contact Form 7 в 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 скрипт входящего вебхука для отправки данных в Bitrix24 PHP скрипт входящего вебхука и принцип его работы был рассмотрен ранее в статье «Автоматическое создание лидов в Битрикс24 при помощи входящего вебхука».
Для того чтобы активировать работу данного скрипта, необходимо создать вебхук в самом Битрикс24 и получить [идентификатор_пользователя] и [код_вебхука]. Как это сделать можно узнать здесь: «Как создать входящий вубхук».
Объединение хука и PHP скрипта Рассмотрев PHP скрипт входящего вебхука для отправки данных в Bitrix24, хук для перехвата введенных данных из Contact Form 7, активировав входящий вебхук и получив [идентификатор_пользователя] и [код_вебхука], можно перейти к объединению данных двух функций. При этом необходимо будет учесть последовательность функций в коде, которая будет иметь следующий вид:
вызов функции для перехвата данных; перехват данных из Contact Form 7; формирование URL в переменной $queryUrl; формирование параметров для создания лида в переменной $queryData; обращение к Битрикс24 при помощи функции curl_exec; Таким образом мы получим код следующего вида:
// Вызываем функцию для перехвата данных add_action( 'wpcf7_mail_sent', 'your_wpcf7_mail_sent_function' ); function your_wpcf7_mail_sent_function( $contact_form ) { // Перехватываем данные из Contact Form 7 $title = $contact_form->title; $posted_data = $contact_form->posted_data; //Вместо "Контактная форма 1" необходимо указать название вашей контактной формы if ('Контактная форма 1' == $title ) { $submission = WPCF7_Submission::get_instance(); $posted_data = $submission->get_posted_data(); // Далее перехватываем введенные данные в полях Contact Form 7: // 1. Перехватываем поле [your-name] $firstName = $posted_data['your-name']; // 2. Перехватываем поле [your-message] $message = $posted_data['your-message'];
// Формируем URL в переменной $queryUrl для отправки сообщений в лиды Битрикс24, где // указываем [ваше_название], [идентификатор_пользователя] и [код_вебхука] $queryUrl = 'https://[ваше_название].bitrix24.ru/rest/[идентификатор_пользователя]/[код_вебхука]/crm.lead.add.json'; // Формируем параметры для создания лида в переменной $queryData $queryData = http_build_query(array( 'fields' => array( // Устанавливаем название для заголовка лида 'TITLE' => 'Название лида с сайта', 'NAME' => $firstName, 'COMMENTS' => $message, ), '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']."
"; } }
Особенности для передачи номера телефона, email или мессенджера При интеграции CF и Битрикс 24 с помощью входящего вебхука, необходимо учесть особенности передачи номера телефона, email или мессенджера. Что это за особенности, и как все-таки передавать данные параметры можно узнать в разделе «Учесть особенность для передачи номера телефона, email, мессенджера».
Внесение полученного кода в Вашу тему в файл functions.php Теперь остается внести любой полученный код из перечисленных вариантов интеграции в functions.php Вашей текущей темы на WordPress. Для этого необходимо перейти в Внешний вид → Редактор → Функции темы. Открыв файл functions.php необходимо вставить полученный код в самом низу документа.
Вот и все. Интеграция Contact Form 7 и Bitrix24 завершена.
Основные ошибки интеграции смотрите статью «Основные ошибки при интеграции Битрикс24 и сайта».
P.S Если у Вас интернет-магазин на основе плагина Woocommerce, то рекомендую ознакомиться со статьей по интеграции Woocommerce и Bitrix24.