Прежде всего, в рамках Битрикс24 нужно создать вебхук, в который мы будем отправлять данные с сайта. В Битрикс24 в левом меню переходим в раздел Приложения, идем на вкладку Вебхуки, жмем кнопку Добавить вебхук, в подменю выбираем Входящий вебхук.**
Открылась форма добавления вебхука. В поле Название вводим произвольное название, например Получение лидов с сайта. Поле Описание заполняем по своему желанию. В списке Права доступа отмечаем чекбокс CRM.
В генераторе запросов будет представлен образец URL, который нужно использовать при отправке данных из сторонней системы в Битрикс24
Внимание!** Данный код является конфиденциальной информацией. Его необходимо держать в секрете.** Секретные коды чужих вебхуков недоступны даже администратору. Если администратор отредактирует чужой вебхук, то секретный код будет сброшен, и владельцем этого вебхука станет администратор.
URL состоит из:
- **doc-test-b24.bitrix24.ru** - адрес вашего *Битрикс24*
- **/rest** - указание на то, что работа ведётся через rest с вебхуками
- **/1** - идентификатор пользователя, создавшего вебхук
- **/173glortu42lvpju** - секретный код
- **/crm.contact.get** - вызываемый метод REST API . В данном случае - метод, возвращающий контакт по идентификатору
- **.json** - необязательный параметр ("транспорт"). При создании новых вебхуков можно не указывать (по умолчанию будет использоваться **.json**). В конструкторе готовых решений **.json** подставляется явно
- **?ID=42** - параметры, необходимые для конкретного метода. В данном случае - идентификатор. Параметры указываются после вопросительного знака и разделяются символом **&**
Дальше необходимо немного PHP кода на сайте.
В первую очередь, надо убедиться что на сервере подключена библиотека curl.
При отправке формы добавляем код:
$b24Url = "https://adresportala.bitrix24.ru"; // укажите URL своего Битрикс24
$b24UserID = "***"; // ID пользователя, от имени которого будем добавлять лид
$b24WebHook = "*****"; // код вебхука
// формируем URL, на который будем отправлять запрос
$queryURL = "$b24Url/rest/$b24UserID/$b24WebHook/crm.lead.add.json";
// формируем параметры для создания лида
$queryData = http_build_query(array(
"fields" => array(
"TITLE" => "заказ №". $arEventFields['ORDER_ID'], // название лида
"NAME" => $arEventFields['ORDER_USER'], // имя
"PHONE" => [["VALUE" => $arEventFields['PHONE'],"VALUE_TYPE" => "WORK"]],
"EMAIL" => [["VALUE" => $arEventFields['EMAIL'],"VALUE_TYPE" => "WORK"]],
"ASSIGNED_BY_ID" => $b24UserID, // пользователь ответственный за лид
"UF_CRM_123456789" => $arEventFields['CITY'], // свойство типа строка
"OPPORTUNITY" => $arEventFields['PRICE'], //цена
"CURRENCY_ID" => 'RUB', //валюта
"COMMENTS" => $arEventFields['ORDER_LIST'],
),
'params' => array("REGISTER_SONET_EVENT" => "Y") // Y = произвести регистрацию события добавления лида в живой ленте. Дополнительно будет отправлено уведомление ответственному за лид.
));
// отправляем запрос в Б24 и обрабатываем ответ
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $queryURL,
CURLOPT_POSTFIELDS => $queryData,
));
$result = curl_exec($curl);
curl_close($curl);
$result = json_decode($result,1);
</code> </pre>
Таким образом можно передать в b24 параметры UTM-меток. Для нужной формы отследить событие OnAfterResultAdd.<b>
**<code><?php
// получаем текущий урл и упаковываем параметры в массив
$url = basename($_SERVER['REQUEST_URI']);
$url_components = parse_url($url);
parse_str($url_components['query'], $params);
$b24Url = "https://***.bitrix24.ru"; // укажите URL своего Битрикс24
$b24UserID = "***"; // ID пользователя, от имени которого будем добавлять лид
$b24WebHook = "***"; // код вебхука, который мы только что получили
// формируем URL, на который будем отправлять запрос
$queryURL = "$b24Url/rest/$b24UserID/$b24WebHook/crm.lead.add.json";
// формируем параметры для создания лида
$queryData = http_build_query(array(
"fields" => array(
"TITLE" => "Лид с нашего сайта", // название лида
"NAME" => "Меган Фокс", // имя ;)
"PHONE" => array( // телефон в Битрикс24 = массив, поэтому даже если передаем 1 номер, то передаем его в таком формате
"n0" => array(
"VALUE" => "+7 (123) 456-78-99", // ненастоящий номер Меган Фокс
"VALUE_TYPE" => "MOBILE", // тип номера = мобильный
),
),
"UF_CRM_1575410143732" => true, // первое пользовательское свойство: передадим "Да"
"UF_CRM_1575410440471" => "Перезвони :*", // второе пользовательское свойство, передаем этот текст
"UTM_SOURCE"=>$params["utm_source"],
"UTM_MEDIUM"=>$params["utm_medium"],
"UTM_CAMPAIGN"=>$params["utm_campaign"],
),
'params' => array("REGISTER_SONET_EVENT" => "Y") // Y = произвести регистрацию события добавления лида в живой ленте. Дополнительно будет отправлено уведомление ответственному за лид.
));
// отправляем запрос в Б24 и обрабатываем ответ
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $queryURL,
CURLOPT_POSTFIELDS => $queryData,
));
$result = curl_exec($curl);
curl_close($curl);
$result = json_decode($result,1);
// если произошла какая-то ошибка - выведем её
if(array_key_exists('error', $result))
{
die("Ошибка при сохранении лида: ".$result['error_description']);
}
echo "Лид добавлен, отличная работа :)";
?>
Источник:
Учебный курс: https://dev.1c-bitrix.ru/learning/course/?COURSE_ID=99&LESSON_ID=8581