Гайд

Правила маршрутизации Dispatch

Автоматически направляйте сообщения к нужному провайдеру на основе окружения и меток — без изменения кода отправки.

Попробовать arrow_forward
bolt

TL;DR

  • check_circleПравила маршрутизации (Flows) позволяют автоматически выбирать провайдера доставки на основе свойств запроса
  • check_circleDispatch анализирует поля env (окружение) и tags (метки) входящего запроса
  • check_circleЕсли providerId не указан в запросе явно, система подбирает провайдера по правилам
  • check_circleОператоры сравнения: = (равно), != (не равно), contains (содержит)
  • check_circleПравила управляются в интерфейсе Dispatch → Flows без изменений в коде

Что такое правило маршрутизации?

Правило маршрутизации (Flow) — это условие, по которому Dispatch определяет, через какого провайдера доставить сообщение. Каждое правило описывает: какое свойство запроса проверить, какое значение ожидать и к какому провайдеру направить сообщение при совпадении.

Как работает маршрутизация

При получении запроса на отправку сообщения Dispatch последовательно проверяет активные правила. Если в запросе не указан конкретный провайдер (поле providerId), система выбирает провайдера первого совпавшего правила. Если ни одно правило не совпало — сообщение не доставляется.

Запрос поступает в Dispatch

Ваше приложение отправляет сообщение через Dispatch API. Запрос содержит тело сообщения, получателей и дополнительные свойства — env и tags.

Проверка providerId

Если в запросе явно указан providerId, сообщение направляется к этому провайдеру напрямую, правила маршрутизации не применяются.

Применение правил

Dispatch последовательно проверяет активные правила. Каждое правило сравнивает значение выбранного свойства (env или tags) с заданным в условии значением.

Доставка через совпавшего провайдера

Сообщение доставляется через провайдера первого совпавшего правила. При необходимости — сохраняется в истории отправок.

Свойства запроса: env и tags

Два поля запроса CreateMessageRequest используются как условия маршрутизации:

  • check_circleenv — строка, обозначающая окружение отправителя: dev, staging, production или любое кастомное значение. Позволяет направлять сообщения из разных окружений к разным провайдерам.
  • check_circletags — массив строк с произвольными метками: например, ["alerts", "critical"] или ["newsletter", "weekly"]. Позволяет группировать сообщения по логическому признаку и маршрутизировать их независимо от окружения.

Операторы сравнения

ОператорЗначениеПример
=Точное совпадениеenv = production — только для продакшн-окружения
!=Не равноenv != production — всё, кроме продакшн
containsСодержит подстрокуtags contains critical — сообщения с меткой critical

Как настроить правило маршрутизации

Правила настраиваются в разделе Dispatch → Flows. Каждое правило привязано к проекту (bucket) и определённому провайдеру.

Откройте Dispatch → Flows

Перейдите в раздел Flows. Здесь отображается список всех правил маршрутизации для текущего проекта.

Нажмите Add New

Откроется форма создания нового правила.

Задайте условие

Выберите Property (Env или Tags), оператор сравнения (=, !=, contains) и значение для сравнения.

Выберите провайдера

Укажите провайдера, которому должны направляться сообщения при совпадении условия. Провайдеры настраиваются в разделе Dispatch → Providers.

Сохраните и активируйте

Сохраните правило. При необходимости включите флаг Save in history, чтобы все совпадающие сообщения сохранялись в истории отправок.

Типичные сценарии использования

  • check_circleОтправка алертов из продакшн-окружения (env = production) через Telegram-бота дежурной команды
  • check_circleПеренаправление тестовых сообщений (env = dev) в email-ящик разработчика вместо реального канала
  • check_circleМаршрутизация критических уведомлений (tags contains critical) через SMS-провайдера
  • check_circleОтправка маркетинговых рассылок (tags contains newsletter) через email-провайдера с высоким лимитом

Настройте маршрутизацию сообщений

Создайте правила в Dispatch и управляйте доставкой сообщений без изменения кода

Открыть Dispatch arrow_forward

Частые вопросы

Что происходит, если ни одно правило не совпало? expand_more
Если в запросе не указан providerId и ни одно активное правило не совпало, сообщение не будет доставлено. Убедитесь, что для каждого возможного значения env или tags настроено соответствующее правило или правило-фолбэк.
Можно ли указать провайдера напрямую в запросе, минуя правила? expand_more
Да. Если в CreateMessageRequest передан параметр providerId, Dispatch доставит сообщение через этого провайдера напрямую, не проверяя правила маршрутизации.
Применяется только первое совпавшее правило? expand_more
Да, Dispatch использует первое совпавшее активное правило. Порядок правил в списке имеет значение — более специфичные правила должны стоять выше более общих.
Можно ли комбинировать условия по env и tags в одном правиле? expand_more
Одно правило проверяет только одно свойство — env или tags. Для комбинированной логики создайте несколько правил: отдельное по env для фильтрации по окружению и отдельное по tags для фильтрации по типу сообщения.

Оставаясь на сайте, Вы даете свое согласие на использование файлов cookie