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

13 сентября 2019 1С-Битрикс Битрикс24
Возникла задача интеграции лендинга с 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@maindot.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
Узнать как открыть фирму в Германии на https://offshorensk.ru/
Наконец-то нашел рабочий вариант и подробное объяснение!!! Спасибо большое!
Здравствуйте! Спасибо вам большое!
Действительно все просто. Спасибо автору!
А где взять /crm/configs/import/lead.php?
Он лежит на стороне Битрикс24
Работает, спасибо!