Интеграция Tilda и Битрикс24 "в коробке"

Tilda своим штатным механизмом позволяет осуществлять интеграцию форм конструктора исключительно с облачным Bitrix24 (в целом нельзя ввести домен портала, отличный от .bitrix24.ru. То есть если даже вы находитесь на старшем коммерческом тарифе и Битрикс24 на своём домене – получается, что тоже никак не интегрировать). Странно, но как есть.  


Исходя из этого интеграция возможна с помощью webhook. Тильда поддерживает такой механизм, Битрикс24 тоже имеет встроенные хуки. 


Разберем по шагам:


  1. Создать Входящий вебхук. Назвать его как-нибудь понятно, например Tilda leads

  2. Выдать права CRM для хука

  3. Создать обработчик, который будет создавать Лиды в CRM, на который Тильда будет посылать запросы.  Пример обработчика ниже

  4. Зайти в редактирование сайта на Тильде, перейти в настройки сайта

  5. Выбрать раздел “Формы”

  6. Добавить механизм интеграции Webhook

  7. В адресе вебхука добавить абсолютный адрес обработчика, который мы сделали на 3 шаге. Ссылка на скрипт должна быть доступна и скрипт должен отвечать в течение пяти секунд. В противном случае данные не отправятся, а система сделает еще две попытки их отправить, каждую через минуту. Также скрипт должен использовать защищенный протокол HTTPS.

  8. Применить настройки для всех форм или для каких-то конкретных на вашем сайте на Тильде


Пример обработчика по созданию Лидов

<?php

function writeToLog($data, $title = ''){
    $log = "\n------///BEGIN//////------------------\n";
    $log .= date("Y.m.d G:i:s") . "\n";
    $log .= (strlen($title) > 0 ? $title : 'DEBUG') . "\n";
    $log .= print_r($data, 1);
    $log .= "\n-----/// END ////-------------------\n";
    file_put_contents(getcwd() . '/hooktilda.log', $log, FILE_APPEND);
    return true;
    echo "succes";
}


$defaults = array('TITLE' => '', 'NAME' => '', 'PHONE' => '', 'COMMENTS' => '', 'EMAIL' => '');
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
   $defaults = $_REQUEST;
    writeToLog($_REQUEST, 'webform PHP');
  
    $queryUrl  = 'https://crm.ххххххх.ru/rest/хх/ххххххххххххх/crm.lead.add' //уникальный адрес хука
   $queryData = http_build_query(array(
        'fields' => array(
            "TITLE" => 'Заявка с сайта от '. $_REQUEST['name'],
          "NAME" => $_REQUEST['name'],
            "COMMENTS" => $_REQUEST['comments'] . '   ' . implode(",", $_REQUEST['payment']['products'][0]),
            "UTM_SOURCE" => $_REQUEST['utm_source'],
            "UTM_MEDIUM" => $_REQUEST['utm_medium'],
            "UTM_CAMPAIGN" => $_REQUEST['utm_campaign'],
            "UTM_CONTENT" => $_REQUEST['utm_content'],
            "UTM_TERM" => $_REQUEST['utm_term'],
            "STATUS_ID" => "NEW",
            "OPENED" => "Y", // ДОСТУПЕН ВСЕМ
            "PHONE" => array(array("VALUE" => $_REQUEST['phone'], "VALUE_TYPE" => "WORK" )),
            "EMAIL" => array(array("VALUE" => $_REQUEST['email'], "VALUE_TYPE" => "WORK" )),
        ),
        '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);
 writeToLog($result, 'webform result CURL');


if (array_key_exists('error', $result)) echo "Ошибка при сохранении лида: ".$result['error_description']."<br/>";
}


?>


Напишите, и мы ответим
Понравилась статья или хотите также?
Напишите, и мы ответим
Другие статьи