Простая отправка лидов в CRM Битрикс24 через вебхук и библиотеку B24LeadSender

Вступление

Несколько лет назад я уже писал статью на эту тему. Там была пошаговая инструкция по созданию вебхука в Б24 и примеры PHP кода для отправки лида в CRM.

В этой статье мы снова будем отправлять лиды с сайта, но с меньшим количеством кода, т. к. будем использовать библиотеку B24LeadSender. И снова разберемся, как создать вебхук в Битрикс24, потому что с момента написания предыдущего поста этот процесс немного изменился.

Создание входящего вебхука

В нашем случае входящий вебхук можно рассматривать как некое окошко, через которое Битрикс24 будет принимать данные, которые мы отправляем с нашего сайта.

Внутри вашего Б24 в поиске вводим Разработчикам и переходим по ссылке:

Внутри  Б24 в поиске вводим Разработчикам

На открывшейся странице выбираем Другое:

В меню Разработчикам выбираем пункт Другое

А затем кликаем Входящий вебхук:

В меню выбираем Входящий вебхук

У нас откроется страница создания вебхука, которая выглядит вот так:

Внешний вид страницы вебхука

Здесь в блоке Генератор запросов вместо profile нам нужно выбрать crm.lead.add:

В поле Генератор запросов выбираем crm.lead.add

После этого в блоке Настройка прав у нас автоматически выберутся права CRM (crm):

В блоке Настройка прав автоматически установятся права для CRM

Сохраняем изменения и копируем строчку из поля URL, это то, что нам понадобится для отправки лида:

Копируем строку из поля URL

Если в будущем захотите изменить или удалить этот вебхук — его можно найти на странице Разработчикам, на вкладке Интеграции:

Страница со списком всех вебхуков

С вебхуком закончили, теперь перейдем к отправке лида.

Отправка лида

В начале статьи мы договорились, что будем использовать библиотеку B24LeadSender, вот ссылка на репозиторий: https://github.com/sinyavsky/B24LeadSender — там же есть демо скрипт, в котором показаны примеры использования и даны максимально подробные комментарии. Далее в этой статье распишу примерно то же, что описано в демо скрипте.

Подключаем библиотеку:

require("B24LeadSender.php");

При создании объекта в конструктор передаем URL из настроек вебхука и ID пользователя, который будет ответственным за лид:

$restApiUrl = "https://demo.bitrix24.ru/rest/1/etodemovveditesvoidannye/crm.lead.add.json"; // это демо урл, укажите вместо него свой
$userId = 1;

$leadSender = new \Sinyavsky\B24LeadSender($restApiUrl, $userId);

Заполняем данные по лиду. Указываем имя клиента:

$leadSender->SetName("Меган Фокс");

Добавляем номер телефона: можем указать один или несколько. Каждому телефону можем указать свой тип:

$leadSender->AddPhone("+7 111 111-11-11", "WORK"); // рабочий номер
$leadSender->AddPhone("+7 222 222-22-22", "MOBILE"); // мобильный номер

Добавляем E-mail. Как и в случае с телефоном — можем указать один адрес или несколько, каждому емейлу можем указать свой тип:

$leadSender->AddEmail("megan111@sinyavsky.com", "WORK"); // рабочий емейл
$leadSender->AddEmail("megan222@sinyavsky.com", "HOME"); // домашний емейл

Заполняем поле Комментарий:

$leadSender->SetComments("Есть очень важное дело, срочно перезвоните!");

Заполняем пользовательские поля:

$leadSender->SetUserField("UF_CRM_4104475401715", "Дополнительное текстовое поле"); // текстовое поле
$leadSender->SetUserField("UF_CRM_1112425434475", true); // поле типа да/нет

Заполняем поля UTM-меток:

$leadSender->SetUtmSource("primer_utm_source");
$leadSender->SetUtmMedium("primer_utm_medium");
$leadSender->SetUtmCampaign("primer_utm_campaign");
$leadSender->SetUtmContent("primer_utm_content");
$leadSender->SetUtmTerm("primer_utm_term");

Устанавливаем заголовок (название) лида:

$leadSender->SetTitle("Заказ обратного звонка от: Меган Фокс");

Если надо заполнить еще какое-то поле, для которого в классе нет отдельного метода, то используем метод SetOther. Передаем в него код поля и значение:

$leadSender->SetOther("ADDRESS_COUNTRY", "США"); // например, можем указать страну

Список кодов всех полей можно посмотреть в документации по ссылке: https://dev.1c-bitrix.ru/rest_help/crm/leads/crm_lead_fields.php

Когда заполнили все поля — отправляем лид:

if ($leadSender->Send()) {
    echo "<p>Лид успешно отправлен.</p>";
} else { // если лид не отправлен - в GetError() будет текст ошибки
    echo "<p>При отправке лида возникла ошибка: {$leadSender->GetError()}</p>";

    // сразу можем посмотреть, какие данные мы пытались отправить
    // чтобы быстрее найти причину ошибки
    /*
        echo "<pre>";
        print_r($leadSender->GetQueryData());
        echo "</pre>";
    */
}

Если лид успешно отправлен — в Битрикс24 ответственный получит уведомление:

Уведомление о новом лиде в Битрикс24

И в CRM появится новый элемент:

Новый лид: часть 1
Новый лид: часть 2

Несколько слов о REGISTER_SONET_EVENT

Когда мы вызываем Битриксовский crm.lead.add, у нас есть возможность передать параметр REGISTER_SONET_EVENT. Вот выдержка из документации https://dev.1c-bitrix.ru/rest_help/crm/leads/crm_lead_add.php

REGISTER_SONET_EVENT - произвести регистрацию события добавления лида в живой ленте. Дополнительно будет отправлено уведомление ответственному за лид.

То есть по идее, этот параметр отвечает за отправку уведомления ответственному за лид. Но на практике я не вижу разницы: сообщение о лиде приходит в любом случае (даже если REGISTER_SONET_EVENT равно N, либо пустой строке, либо не установлено вообще). Где происходит регистрация в живой ленте — я тоже не нашел.

По-умолчанию B24LeadSender отправляет лид со значением REGISTER_SONET_EVENT равным Y. Переключить его в значение N можно методом DontRegisterSonetEvent(), например:

$leadSender->DontRegisterSonetEvent();

Вполне допускаю, что REGISTER_SONET_EVENT работает как надо, просто я не разобрался в этом до конца :)


Тэги: