27 мая 2022 г.

Tilda и solOS

В этой статье мы кратко опишем пример интеграции Tilda и solOS с модулем Лиды.

Tilda позволяет принимать данные из форм на свой скрипт. Вы можете использовать приёмщик данных Webhook. Данные будут отправляться методом POST. Подробнее описано в этой статье.

Ниже приведён простой пример скрипта на PHP, который позволяет принимать и создавать лиды внутри solOS. Разместите его на своём хостинге и вставьте абсолютный путь к PHP-скрипту в форму настройки данных Webhook.

Вместо {{YOUR_CRM_URL}} укажите URL-адрес, по которому доступна solOS.

Для работы с публичными методами необходимо передавать заголовки X-Crypto-Token и X-Crypto-Secret. В примерах они указаны, как {{YOUR_CRM_TOKEN}} и {{YOUR_CRM_SECRET}} соответственно, вместо реальных ключей. Подробности смотрите в разделе API.


<?php

// CRM
const YOUR_CRM_URL = '{{YOUR_CRM_URL}}';
const YOUR_CRM_TOKEN = '{{YOUR_CRM_TOKEN}}';
const YOUR_CRM_SECRET = '{{YOUR_CRM_SECRET}}';

/**
 * Возвращает метод запроса (GET, POST, HEAD, PUT, PATCH, DELETE и тд.)
 * @return string
 * Возвращаемое значение превращается в верхний регистр
 */
function getMethod()
{
    return isset($_SERVER['REQUEST_METHOD']) ? strtoupper($_SERVER['REQUEST_METHOD']) : 'GET';
}

/**
 * Проверка на POST
 * @return bool
 */
function isPost()
{
    return getMethod() === 'POST';
}

/**
 * Очищает строку
 */
function clearString($string)
{
    return trim(strip_tags($string));
}

/**
 * Создает лид в CRM
 */
function createLead($name, $email, $phone, $comment, $extra)
{
    $request_body = [
        "module" => "leads",
        "payload" => [
            // "user_id" => 1, // ID ответственного пользователя при необходимости
            "name" => $name,
            "phone" => $phone,
            "email" => $email,
            "reference_id" => 4, // ID источника обращения
            "comment" => $comment,
            "extra" => $extra,
        ]
    ];
    $fields = json_encode($request_body);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, YOUR_CRM_URL . '/api/post/');
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type:application/json',
        'X-Crypto-Token:' . YOUR_CRM_TOKEN,
        'X-Crypto-Secret:' . YOUR_CRM_SECRET,
    ]);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $fields);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
    $response = curl_exec($ch);
    curl_close($ch);
}

if (isPost()) {
    $name = urldecode(mb_substr(clearString($_POST['Name']), 0, 100));
    $email = urldecode(mb_substr(clearString($_POST['Email']), 0, 100));
    $phone = urldecode(mb_substr(clearString($_POST['Phone']), 0, 50));
    $comments = urldecode(mb_substr(clearString($_POST['Comments']), 0, 1000));
    $extra = [];
    foreach ($_POST as $key => $value) {
        $extra[$key] = $value;
    }

    // Создание лида в CRM
    createLead($name, $email, $phone, $comments, $extra);

// Ответ от нашего скрипта echo "ok"; }

Остались вопросы? Обращайтесь в службу поддержки по адресу электронной почты s@solos.pro