Создание лида через API в коробочной версии Битрикс24

Продолжаю серию статей, посвященную доработкам стандартного функционала Битрикс24. Сегодня мы применим вполне себе документированную для REST API функцию crm.lead.add для коробочной версии продукта.

Почему Вам может никогда не потребоваться данная доработка. Стандартные CRM-формы позволяют размещать на сайте специальные формы, по результату заполнения которых все данные будут переданы в CRM-систему, то есть в нашем случае — будет создан лид. Но, как говорится «никогда не говори никогда» и при решении некоторых задач — стандартный функционал не всегда устраивает.

Скрипт для создания лида в CRM Битрикс24

$_SERVER["DOCUMENT_ROOT"] = realpath(dirname(__FILE__) . "/../..");
$DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];

ini_set('display_errors', 'on');

define("NO_KEEP_STATISTIC", true);
define("NOT_CHECK_PERMISSIONS", true);
define('BX_NO_ACCELERATOR_RESET', true);
define('CHK_EVENT', true);
define('BX_WITH_ON_AFTER_EPILOG', true);

require ($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");

@set_time_limit(0);
@ignore_user_abort(true);

\Bitrix\Main\Loader::includeModule('im');

//id ответственного и уведомителя
$responsible = 1;
$inform = 2;

$oLead = new CCrmLead(false);
$arFields = array(
    "TITLE" => $_REQUEST['name'] . ' - ' . $_REQUEST['city'],
    "NAME" => $_REQUEST['name'],
    "STATUS_ID" => 'NEW',
    "OPENED" => "Y",
    "COMMENTS" => $_REQUEST['message'],
    "COMPANY_TITLE" => $_REQUEST['organization'],
    "UF_CRM_1562047838555" => $_REQUEST['inn'],
    "SOURCE_ID" => "SELF",
    "FM" => Array(
        "EMAIL" => Array(
            "n0" => Array(
                "VALUE" => $_REQUEST['email'],
                "VALUE_TYPE" => "WORK",
            ) ,
        ) ,
        'PHONE' => array(
            'n0' => array(
                'VALUE' => $_REQUEST['phone'],
                'VALUE_TYPE' => 'WORK'
            )
        ) ,
    ) ,
);
$LEAD_ID = $oLead->Add($arFields, true, array(
    'CURRENT_USER' => $responsible
));

/*отправляем уведомление о новом лиде*/
if (IsModuleInstalled("im") && CModule::IncludeModule("im"))
{
    $attach = new CIMMessageParamAttach(null, "#95c255");
    $attach->AddLink(Array(
        "NAME" => "Создан лид № " . $LEAD_ID . "",
        "DESC" => "Лид должен быть обработан в ближайшее время!",
        "LINK" => "https://адрес_портала/crm/lead/details/" . $LEAD_ID . "/"
    ));

    $arMessageFields = array(
        "TO_USER_ID" => $responsible,
        "FROM_USER_ID" => $inform,
        "NOTIFY_TYPE" => IM_NOTIFY_SYSTEM,
        "MESSAGE" => "Новая заявка с сайта",
        "ATTACH" => Array(
            $attach
        )
    );
    $mess = CIMNotify::Add($arMessageFields);

}
CMain::FinalActions();

Давайте теперь разберем отдельные моменты, которые могут вызвать сложности.
Само создание лида заканчивает на 50-й строке, далее мы отправляем уведомление о новом лиде ответственному сотруднику. Собственно, в строках 20-21 мы обозначаем роли. $responsible — идентификатор ответственного за лид сотрудника,$inform — идентификатор сотрудника, от имени которого будут приходить уведомления.

$_REQUEST — означает, что наш скрипт получает данные из формы (в моем случае — методом POST). На этапе отладки — можете указать эти значения непосредственно в исходном коде скрипта.

UF_CRM_1562047838555 в 31-й строке — пример заполнения пользовательского поля. В моем случае — это ИНН. Но как же получить этот удивительный идентификатор? На самом деле просто, более того, существует как минимум два способа:

  • открываем форму добавления нового лида, находим интересующее нас поле и смотрим его исходный код

  • после создания пользовательского поля — открываем его в режиме редактирования. В адресной строке можем наблюдать точно такое же значение.

32 строка — SOURCE_ID. Идентификатор источника или просто Источник. Особенность состоит в том, что предустановленные источники имеют идентификаторы вида SELF, PARTNER, CALL, а вот добавленные самостоятельно — будут иметь уже числовой идентификатор. На это случай, к сожалению у меня не предусмотрено двух стульев способов. ID ищем в исходном коде страницы.

С 33-й строки — обратите внимание как нужно передавать электронную почту и контактный телефон.

По нюансам и особенностям — пожалуй, что и все.
Описание всех доступных полей смотрите в официальной документации.

Опубликовано: 25 февраля 2020 года, в рубрике «Битрикс».

13
Оставить комментарий

5000
  Подписаться  
сначала новые сначала старые
Уведомление о
Алекс

Спасибо! Не мог CORS запрос сделать в Битрикс24 Bitrix24, помогло define («NOT_CHECK_PERMISSIONS», true);

Антон

А как можно сделать проверку по номеру телефона, и если такой лид уже имеется то дополняем информацию о лиде и (или) делаем лид повторным?

Сергей

А как добавлять несколько телефонов и почты при создание лида?

и еще у меня вопрос, при создание лида, БП или роботы будут срабатывать после создания лида? если нет, то как запустить по api?

Сергей

Добавить номера и почты получилось.

'EMAIL' => array ( 'n0' => array ('VALUE' => '[email protected]', 'VALUE_TYPE' => 'WORK'), 'n1' => array ('VALUE' => '[email protected]', 'VALUE_TYPE' => 'WORK'), 'n2' => array ('VALUE' => '[email protected]', 'VALUE_TYPE' => 'WORK'), ) , 'PHONE' => array (

Подскажите, как запустить к созданному Лиду роботы и БП?

Сергей

у меня есть БП и роботы которые срабатывают при создание лида. Но когда я создаю лид по api new CCrmLead, они не запускаюся.

Сергей

я читал что БП и роботы нужно в скрипте запускать после добавления лида. ноя не понимаю как запустить

Сергей

вы пробовали добавлять лид по новому api?

\Bitrix\Crm\Service\Container::getInstance()->getFactory(\CCrmOwnerType::Lead);

Поблагодарить автора статьи
Зачем это нужно