Событие срабатывания веб-хука
[OnWebhookUpdate] Событие после обработки элемента веб-хуком
Событие OnWebhookUpdate вызывается после обработки элемента веб-хуком. При этом должны соблюдаться ряд условий для вызова этого события:
- Веб-хук не должен быть закеширован
- Элемент, который изменяется по веб-хуку должен быть найден или создан в БУС
- Описание события
- Пример вызова события
- Примеры использования
Параметры события
| Параметр | Тип | Описание |
|---|---|---|
bx_element | array | Элемент инфоблока Битрикс (ассоциативный массив полей) |
ms_element | object | Сущность из МойСклад (объект, доступ к полям через свойства) |
Возвращаемое значение
Ничего возвращать не нужно. Событие информационное — используется для реактивной логики после обработки веб-хука.
//Пример кода нужно вставить в файл init.php
\Bitrix\Main\EventManager::getInstance()->addEventHandler(
'rbs.moyskladstocks',
'OnWebhookUpdate',
'OnWebhookUpdateHandler'
);
function OnWebhookUpdateHandler(\Bitrix\Main\Event $event)
{
$eventParams = $event->getParameters();
// $bxElement — элемент инфоблока Битрикс, ассоциативный массив:
// [
// 'ID' => 1234,
// 'IBLOCK_ID' => 5,
// 'NAME' => 'Название товара',
// 'XML_ID' => 'abc123externalcode',
// 'ACTIVE' => 'Y',
// 'CODE' => 'nazvanie-tovara',
// 'SORT' => 500,
// 'PREVIEW_TEXT' => 'Краткое описание',
// 'DETAIL_TEXT' => 'Подробное описание',
// 'PREVIEW_PICTURE' => 100,
// 'DETAIL_PICTURE' => 101,
// 'IBLOCK_SECTION_ID' => 10,
// // ... другие стандартные поля элемента инфоблока
// ]
$bxElement = $eventParams['bx_element'];
// $msElement — сущность из МойСклад, доступ к полям через свойства объекта:
// $msElement->name // 'Название товара'
// $msElement->externalCode // 'abc123externalcode'
// $msElement->archived // false
// $msElement->description // 'Описание из МС'
// $msElement->weight // 0.5
// $msElement->volume // 0.001
// $msElement->article // 'ART-001'
// $msElement->variantsCount // 3 (только для product)
// $msElement->meta->href // 'https://api.moysklad.ru/api/remap/1.2/entity/product/...'
// $msElement->meta->type // 'product' | 'variant' | 'bundle' | 'service'
// ... другие поля из API МойСклад
$msElement = $eventParams['ms_element'];
#WORK_AREA#
}
Логирование обновлений товаров
Записываем факт обновления товара веб-хуком в собственную таблицу для аудита и анализа.
function OnWebhookUpdateHandler(\Bitrix\Main\Event $event)
{
$eventParams = $event->getParameters();
$bxElement = $eventParams['bx_element'];
$msElement = $eventParams['ms_element'];
// Сохраняем запись об обновлении в свою таблицу аудита
// Реализация хранения — на стороне разработчика
YourAuditLogger::log([
'event' => 'webhook_update',
'bx_element_id' => $bxElement['ID'],
'ms_type' => $msElement->meta->type,
'ms_name' => $msElement->name,
'timestamp' => date('Y-m-d H:i:s'),
]);
}