Битрикс ~ 4 мин

Создание лида через 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-й строки — обратите внимание как нужно передавать электронную почту и контактный телефон.

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

Комментарии

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

Имя видно всем. Сообщения проходят модерацию. Правила обсуждения.

  1. Сергей

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

    1. Сергей

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

      'EMAIL' => array (

      'n0' => array ('VALUE' => 'test@tets.ru',

      'VALUE_TYPE' => 'WORK'),

      'n1' => array ('VALUE' => 'testing@tets.ru',
      'VALUE_TYPE' => 'WORK'),
      'n2' => array ('VALUE' => 'tes@tets.ru',
      'VALUE_TYPE' => 'WORK'),
      ) ,
      'PHONE' => array (

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

      1. Admin администратор

        БП можно запустить штатными средствами. Настройки CRM -> Роботы и бизнес-процессы -> Бизнес-процессы. Далее создаете БП с автоматическим запуском при добавлении лида.

        С Роботами CRM по аналогии. Там только обратите внимание, что роботы добавляются для стадий.

        1. Сергей

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

          1. Admin администратор

            Тогда идей нет, надо разбираться. Возможно лид создается с ошибками. Попробуйте включить логирование ошибок.

          2. Сергей

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

          3. Сергей

            вы пробовали добавлять лид по новому api?
            \Bitrix\Crm\Service\Container::getInstance()->getFactory(\CCrmOwnerType::Lead);

          4. Admin администратор

            Да, я пробовал добавлять лиды через методы ядра D7.

          5. Admin администратор

            Добавление элемента CRM через API ничем не отличается от создания его через интерфейс портала. Т.е. если все сделано правильно, то нет необходимости в ручном запуске БП.
            Для запуска БП через API — ознакомьтесь с методом CBPDocument::StartWorkflow. Но я бы рекомендовал вернуться к созданию лида и разобраться что с ним не так.

  2. Антон

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

    1. Admin администратор

      Поиск лида выполняется методом CCrmLead::GetList или CCrmLead::GetListEx. Я разбирал поиск по номеру телефона на примере компаний. Подробнее в этой статье.

      За обновление лида отвечает метод CCrmLead::Update.

  3. Алекс

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

Обычно отвечаю до 18:00 МСК

Вопрос по статье?

Напишите — разберём на вашем проекте.

Написать в Telegram Без автоответчика · пн–пт

Обсудить задачуОтвет в рабочий день

Написать