Вступление
Несколько лет назад я уже писал статью на эту тему. Там была пошаговая инструкция по созданию вебхука в Б24 и примеры PHP кода для отправки лида в CRM.
В этой статье мы снова будем отправлять лиды с сайта, но с меньшим количеством кода, т. к. будем использовать библиотеку B24LeadSender. И снова разберемся, как создать вебхук в Битрикс24, потому что с момента написания предыдущего поста этот процесс немного изменился.
Создание входящего вебхука
В нашем случае входящий вебхук можно рассматривать как некое окошко, через которое Битрикс24 будет принимать данные, которые мы отправляем с нашего сайта.
Внутри вашего Б24 в поиске вводим Разработчикам и переходим по ссылке:
На открывшейся странице выбираем Другое:
А затем кликаем Входящий вебхук:
У нас откроется страница создания вебхука, которая выглядит вот так:
Здесь в блоке Генератор запросов вместо profile нам нужно выбрать crm.lead.add:
После этого в блоке Настройка прав у нас автоматически выберутся права CRM (crm):
Сохраняем изменения и копируем строчку из поля 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 ответственный получит уведомление:
И в CRM появится новый элемент:
Несколько слов о 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 работает как надо, просто я не разобрался в этом до конца :)