4794

Интеграция форм сайта с Bitrix24 CRM

К сниппету формы в параметр hooks нужно добавить путь до файла интеграции с CRM, ниже приведу содержимое файла. Наверняка используются еще хуки, такие, например, как spam,email,redirect Например путь до файла: /assets/bitrix24/bitrix24.php, тогда к сниппету добавляем:

&hooks=`/assets/bitrix24/bitrix24.php,spam,email,redirect`
Путь до файла должен быть до других используемых хуков, иначе не будет работать. В файле не забудьте указать login, password и домен подключения к CRM Используемые поля: https://dev.1c-bitrix.ru/community/blogs/chaos/crm-sozdanie-lidov-iz-drugikh-servisov.php Содержимое обработчика отправляющего данные в CRM:

<?php
// CRM server conection data
define('CRM_HOST', 'domain.bitrix24.ru'); // 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;

    // get lead data from the form
    $postData = array(
        'TITLE' =&gt; $leadData['form'],
        'SOURCE_ID'    =&gt; $leadData['title'],
        'NAME' =&gt; $leadData['name'],
        'PHONE_WORK' =&gt; $leadData['phone'],
        'EMAIL_WORK' =&gt; $leadData['email'],
    );

    // 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 =&gt; $value)
            $strPostData .= ($strPostData == '' ? '' : '&amp;').$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 = print_r($response[1], 1);
    }
    else
    {
        echo 'Connection Failed! '.$errstr.' ('.$errno.')';
    }
}
else
{
    $output = '';
}
?>

Комментарии

2 года назад
А для EVO что-то подобное можно реализовать?
Конечно возможно)
Комментировать