Перейти к основному содержанию
Назначения на уровне проекта доступны только внутри того проекта, в котором они были созданы.

Web3 Actions

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

Webhooks

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

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

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

  • Он должен предоставлять метод GET по URI webhook, немедленно возвращающий HTTP 200. Tenderly отправляет запрос к этому методу, чтобы убедиться, что webhook доступен.
  • Он должен предоставлять метод POST с тем же URI webhook. Webhook будет получать полезную нагрузку, описанную ниже.
  • Если ответ HTTP 200 не получен в течение 5 секунд, Tenderly считает выполнение webhook неуспешным.
  • URL webhook должен использовать HTTPS.
Webhook должен ответить в течение 5 секунд. Если ответа нет, выполнение считается неуспешным.
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.
  • transaction: Object — объект, представляющий недекодированную транзакцию, вызвавшую оповещение и выполнение webhook.
После добавления webhook как назначения оповещения он будет вызван с типом события TEST.
Используйте поле id, чтобы гарантировать, что ваш webhook обрабатывает каждое событие оповещения ровно один раз, отслеживая уже обработанные ID.

Защита webhook

Вы можете повысить безопасность своих webhook с помощью проверки подписи. Так вы можете убедиться, что запрос к webhook исходит от Tenderly, прежде чем продолжать выполнение. Заголовок x-tenderly-signature содержит криптографическую подпись. Подпись запроса webhook — это HMAC SHA256 хеш от конкатенации секретного ключа подписи, полезной нагрузки запроса и метки времени, именно в этом порядке.
Секретный ключ подписи уникален для каждого назначения webhook. Tenderly генерирует этот секрет и использует его для создания подписи полезной нагрузки. Храните его в безопасном месте.
Шаг 1. Получите секретный ключ подписи.
Copying secret signing key
Шаг 2. Проверьте полученную подпись Чтобы проверить полученную подпись, объедините в следующем порядке:
  1. секретный ключ подписи,
  2. всю полезную нагрузку запроса webhook,
  3. метку времени (из полезной нагрузки).
Наконец, выполните хеш SHA 256 от полученного значения.
example.go
func isValidSignature(
  signature string,
  payload []byte,
  timestamp string,
) bool {
  h := hmac.New(sha256.New, []byte(signingKey))
  h.Write(payload)
  h.Write([]byte(timestamp))
  digest := hex.EncodeToString(h.Sum(nil))
  return digest == signature
}

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

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