https://i.gyazo.com/b2afbd18f9b0b6e67c3dd8bc7a84d09a.png
Варианты применения:
<*>Отправка запросов к любой сторонней системе, которая может принимать и обрабатывать веб-хуки.
<*>Сторонней системой может быть 1С и любая иная платформа.
<*>Сторонней системой может быть другой портал Битрикс24. Таким образом, можно реализовать межпортальный обмен и их синхронизацию по ряду сущностей.
https://i.gyazo.com/1094229e28506352cdddb6878797e9e6.png
Схема работы стандартных веб-хуков
Как только происходит событие в Битркис24 (например, создание компании в CRM) формируется веб-хук = URL с параметрами запроса к сторонней системе, куда нужно передать соответствующие данные и тут же “дергается” этот URL. Битрикс24 не ждет никакого ответа от сторонней системы: приняла ли она этот запрос, корректно ли приняла, доступна ли она вообще?
Если принимаемая система была недоступна или не смогла обработать запрос по каким-либо причинам (код ответа отличается от 200), то это приводит к рассинхронизации - нужная информация не будет передана. Так, в нашем примере сторонняя система не получит соответствующую запись о компании. При последующих запросах по обновлению этой записи, рассинхронизация будет увеличиваться лавинообразно, так как система не получила начальных данных или не смогла обработать запрос.
Наше решение
Наш модуль забирает события в Битрикс24 и формирует веб-хук по тому синтаксису, который обычно принимает входящие веб-хуки. Далее модуль записывает этот вебхук себе в очередь и только после этого пытается его отправить указанной сторонней системе.
При этом, если сторонняя система не доступна или код ответа отличается от 200, то этот запрос не пропадает, он остается в очереди!
Таким образом, наш модуль формирует и сохраняет очередь необработанных запросов, важные данные не пропадают.
Для избежания “флуда” решение имеет настройку - какое количество запросов отправлять за 1 шаг и период между шагами в секундах. Есть возможность очищать как лог, так и очередь не отправленных запросов.
https://i.gyazo.com/d9d0e484bc0185befca2c9873e6556bd.png
https://i.gyazo.com/b105366e6ebffd781633adcf21e8ba99.png