Skip to main content
Назначения на уровне проекта доступны только внутри того проекта, в котором они были созданы.

Web3 Actions

Этот тип назначения оповещения означает, что ваш action будет использоваться как назначение для оповещения.
example.yaml
Один action может использоваться как назначение для нескольких оповещений. Для получения дополнительной информации прочитайте об этом и о Web3 Actions в целом.

Webhooks

Этот тип назначения оповещения позволяет выполнять ваш webhook при срабатывании оповещения. Ваш webhook получит подписанную полезную нагрузку, содержащую объект транзакции, которая вызвала срабатывание оповещения.
После добавления webhook как назначения оповещения его можно использовать как назначение для других оповещений.

Как использовать Webhooks для оповещений

Требования к webhook:

  • Он должен быть доступен по URL webhook: при добавлении webhook Tenderly отправляет GET-запрос для проверки доступности. Любой HTTP-ответ проходит проверку; проверка не проходит только при транспортных ошибках (DNS, TCP, TLS или отсутствие ответа в течение 2 секунд).
  • Он должен предоставлять метод POST с тем же URI webhook. Webhook будет получать полезную нагрузку, описанную ниже.
  • Доставка считается неуспешной, если webhook не ответит статусом 2xx в течение 10 секунд.
  • Настоятельно рекомендуется использовать HTTPS для URL webhook.
Webhook должен ответить статусом 2xx в течение 10 секунд. Если ответа за это время нет, доставка считается неуспешной.
Tenderly отслеживает все выполнения. Выполнение webhook может иметь несколько статусов:
  • Success: webhook успешно выполнен и событие доставлено на указанный URL
  • Failed: webhook не удалось выполнить из-за ошибки, такой как проблема с соединением, ошибка в URL и т. д. (проверьте содержимое ответа, чтобы понять причину ошибки, или обратитесь в нашу поддержку)
  • Pending: webhook находится в процессе выполнения и ещё не завершён
  • Retry: выполнение webhook не удалось и будет повторено; событие доставляется максимум за 5 попыток всего, после чего статус становится Success или Failed
  • Skipped: webhook не был выполнен, поскольку был отключён

Полезная нагрузка webhook

Webhook получит полезную нагрузку, представляющую событие оповещения. Она состоит из четырёх полей:
  • id: String, ID, уникальный среди всех доставленных событий оповещений (UUID).
  • event_type: TEST | ALERT, тип события webhook.
  • alert_id: String, ID оповещения, правило которого вызвало это событие. Пусто для событий TEST.
  • transaction: Object, объект, представляющий недекодированную транзакцию, вызвавшую оповещение и выполнение webhook.
После добавления webhook как назначения оповещения он будет вызван с типом события TEST.
Используйте поле id, чтобы гарантировать, что ваш webhook обрабатывает каждое событие оповещения ровно один раз, отслеживая уже обработанные ID.

Защита webhook

Вы можете повысить безопасность своих webhook с помощью проверки подписи. Так вы можете убедиться, что запрос к webhook исходит от Tenderly, прежде чем продолжать выполнение. Заголовок x-tenderly-signature содержит криптографическую подпись: HMAC-SHA256 дайджест, вычисленный с секретным ключом подписи в качестве ключа над полезной нагрузкой запроса, за которой следует метка времени. Метка времени передаётся в HTTP-заголовке Date запроса.
Секретный ключ подписи уникален для каждого назначения webhook. Tenderly генерирует этот секрет и использует его для создания подписи полезной нагрузки. Храните его в безопасном месте.
Шаг 1. Получите секретный ключ подписи.
Copying secret signing key

Копирование секретного ключа подписи

Шаг 2. Проверьте полученную подпись Чтобы проверить полученную подпись, вычислите HMAC-SHA256 дайджест, используя секретный ключ подписи в качестве ключа и передавая в следующем порядке:
  1. всю полезную нагрузку запроса webhook,
  2. метку времени (из заголовка Date запроса).
Наконец, сравните hex-представление дайджеста со значением заголовка x-tenderly-signature.
example.go

Отладка выполнения webhook

Для облегчения отладки неисправностей webhook вы можете вручную отправлять события TEST на основе существующих транзакций из любой сети. Шаг 1. Нажмите “Test Webhook” в панели навигации страницы webhooks.
Webhook overview

Обзор webhook

Шаг 2. Вставьте хеш транзакции, соответствующей триггеру вашего оповещения
Testing webhook: paste the transaction hash

Тестирование webhook: вставка хеша транзакции

Шаг 3. Нажмите “Test Webhook” для подтверждения и отправки тестового события. Ваш webhook будет вызван с транзакцией, соответствующей вставленному хешу, и типом события TEST. Вы получите обзор этого выполнения.
Result of a manual (test) execution of a webhook

Результат ручного (тестового) выполнения webhook