Сбор заявок с сайта в CRM bitrix24

179
21 июля 2018, 16:50

Стоит задача получать заявки в црм битрикс24 с формы лендинга. В Интернете толком ничего не нашел. Только это видео - https://www.youtube.com/watch?v=nDk69BmyEv4 Содержимое: index.html

    <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>bitrix24 rest</title>
</head>
<body>
  <form method="post" id="form">
    <input type="hidden" name="DATA[TITLE]" value="Заявка с лендинга тест 1">
    <input type="text" name="DATA[NAME]" required placeholder="Ваше имя"><br>
    <input type="text" name="DATA[PHONE_MOBILE]" required placeholder="Ваш телефон"><br>
    <button>Отправить</button>
  </form>
    <script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
    <script src="common.js"></script>
</body>
</html>

common.js

    $(document).ready(function() {
    $("#form").submit(function() {
        $.ajax({
            type: "POST",
            url: "rest.php",
            data: $(this).serialize()
        }).done(function() {
            alert("Спасибо за заявку!");
        });
        return false;
    });
});

rest.php

    <?
// CRM server conection data
define('CRM_HOST', 'your_domain.bitrix24.com'); // your CRM domain name
define('CRM_PORT', '443'); // CRM server port
define('CRM_PATH', '/crm/configs/import/lead.php'); // CRM server REST service path
// CRM server authorization data
define('CRM_LOGIN', 'login'); // login of a CRM user able to manage leads
define('CRM_PASSWORD', 'password'); // password of a CRM user
// OR you can send special authorization hash which is sent by server after first successful connection with login and password
//define('CRM_AUTH', 'e54ec19f0c5f092ea11145b80f465e1a'); // authorization hash
/********************************************************************************************/
// POST processing
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    $leadData = $_POST['DATA'];
    // get lead data from the form
    $postData = array(
        'TITLE' => $leadData['TITLE'],
        'COMPANY_TITLE' => $leadData['COMPANY_TITLE'],
        'NAME' => $leadData['NAME'],
        'LAST_NAME' => $leadData['LAST_NAME'],
        'COMMENTS' => $leadData['COMMENTS'],
    );
    // append authorization data
    if (defined('CRM_AUTH'))
    {
        $postData['AUTH'] = CRM_AUTH;
    }
    else
    {
        $postData['LOGIN'] = CRM_LOGIN;
        $postData['PASSWORD'] = CRM_PASSWORD;
    }
    // open socket to CRM
    $fp = fsockopen("ssl://".CRM_HOST, CRM_PORT, $errno, $errstr, 30);
    if ($fp)
    {
        // prepare POST data
        $strPostData = '';
        foreach ($postData as $key => $value)
            $strPostData .= ($strPostData == '' ? '' : '&').$key.'='.urlencode($value);
        // prepare POST headers
        $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;
        // send POST to CRM
        fwrite($fp, $str);
        // get CRM headers
        $result = '';
        while (!feof($fp))
        {
            $result .= fgets($fp, 128);
        }
        fclose($fp);
        // cut response headers
        $response = explode("\r\n\r\n", $result);
        $output = '<pre>'.print_r($response[1], 1).'</pre>';
    }
    else
    {
        echo 'Connection Failed! '.$errstr.' ('.$errno.')';
    }
}
else
{
    $output = '';
}
// HTML form
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<?=$output;?>
<form action="rest.php" method="post">
    Title*: <input type="text" name="DATA[TITLE]" value="" /><br />
    Company Name: <input type="text" name="DATA[COMPANY_TITLE]" value="" /><br />
    First Name: <input type="text" name="DATA[NAME]" value="" /><br />
    Last Name: <input type="text" name="DATA[LAST_NAME]" value="" /><br />
    Comments: <textarea name="DATA[COMMENTS]"></textarea><br />
    <input type="submit" value="Send" />
</form>
Answer 1

Если Вам нужно передать данные в Bitrix24, то, лучше всего, посмотреть на их REST API. К примеру, вот тут- https://dev.1c-bitrix.ru/rest_help/tasks/task/item/add.php есть вот такой пример:

"you_domen/rest/task.item.add.json?".http_build_query(
     array(
          "auth" => "token",
          "arNewTaskData" => array(
               "TITLE" => "",
               "DESCRIPTION" => "",
               ...
          )
     ),
);

Рекомендую изучить, возможно там вы найдете именно то, что Вам требуется.

UPD. Для лидов в том же REST API тоже есть раздел. Читать в следующем порядке:

  1. https://dev.1c-bitrix.ru/rest_help/js_library/index.php
  2. https://dev.1c-bitrix.ru/rest_help/crm/leads/crm_lead_add.php

Там можно как из PHP, так и через JS API работать вроде бы.

READ ALSO
Связка babel + gulp + rollup

Связка babel + gulp + rollup

В задаче gulp по сборке js используется rollup, точнее плагин для gulp gulp-better-rollupДля транспилирования ES6 кода в ES5 babel

160
При передаче элемента массива (строка) в функцию, функция не работает, как ожидается

При передаче элемента массива (строка) в функцию, функция не работает, как ожидается

Дано: Пишу приложение на Электрон, есть текстовый файл, из которого нужно получить массив именМассив успешно получен, можно вывести в консоль

211
JavaScript/Canvas Приятствие

JavaScript/Canvas Приятствие

подскажите, как сделать чтобы черный квадрат не смог проходить сквозь зеленый квадрат

188
Разные значения высоты в .outerHeight()

Разные значения высоты в .outerHeight()

Написал скрипт для постройки блоков в виде кирпичной кладкиНо когда не указываю явную высоту блока, то скрипт неверно считает высоту и соответственно...

183