Перейти к содержимому

Шаблоны и подстановки

Шаблон задаёт полный текст уведомления. В него можно включить исходное сообщение, название входящего канала, время приёма и значения из JSON.

Подключите шаблон

  1. Откройте «Шаблоны» и нажмите «Создать шаблон».
  2. Укажите название и формат уведомления: обычный текст или Markdown.
  3. Напишите текст. Справа выберите подстановку: она вставится в позицию курсора или заменит выделенный фрагмент. На узком экране список находится под текстом.
  4. Сохраните шаблон и выберите его у нужного входящего канала.

Активный шаблон полностью заменяет стандартный текст уведомления, даже если запрос содержит непустое тело. Чтобы включить исходное тело, добавьте {{message}}. В истории канала сохраняется исходный запрос, а для доставки — результат подстановок на момент приёма.

Доступные подстановки

ПодстановкаЗначение
{{message}}Исходное тело сообщения. Пустое или пробельное тело даёт пустую строку.
{{channel_name}}Название входящего канала.
{{date(Y-m-d H:i:s)}}Время приёма в UTC, например 2026-09-07 12:30:00.
{{json.service}}Значение поля service входящего JSON.
{{json.event.status}}Вложенное поле status объекта event.
{{json.items.0.name}}Поле name первого элемента массива items.

Формат внутри date(...) можно изменить вручную. Используется синтаксис PHP DateTimeInterface::format без кавычек: Y — год, m — месяц, d — день, H — часы, i — минуты, s — секунды.

Пример текстового шаблона:

text
Канал: {{channel_name}}
Принято: {{date(Y-m-d H:i:s)}} UTC

{{message}}

Регистр значим; пробелы вокруг выражения допустимы. Неизвестные выражения остаются как есть. Значения вставляются дословно, без экранирования и повторной обработки. Если выбран Markdown, символы разметки в подставленных значениях могут влиять на оформление.

Входящий JSON

Передавайте Content-Type: application/json и корректный JSON. Например:

bash
curl \
  --request POST \
  --header 'Content-Type: application/json' \
  --data-binary '{"service":"depesher","event":{"status":"success"},"items":[{"name":"worker"}]}' \
  'https://depesher.ru/w/ВАШ_PUBLIC_ID'

Привяжите к каналу такой шаблон:

text
Сервис: {{json.service}}
Статус: {{json.event.status}}
Компонент: {{json.items.0.name}}

Получатель увидит:

text
Сервис: depesher
Статус: success
Компонент: worker

Для собственного поля укажите путь в поле «Свой путь в JSON», например event.status, и нажмите «Вставить поле JSON». Уровни разделяются точками, индексы массивов начинаются с 0. Сегменты пути состоят из букв, цифр, дефиса и подчёркивания. Ключ с точкой внутри таким путём адресовать нельзя.

Отсутствующее поле, значение null или сообщение с другим Content-Type дают пустую строку. Строки вставляются дословно, числа и логические значения — текстом, объекты и массивы — компактным JSON. Выражения и подставленные значения не исполняются.

JSON можно отправлять и без шаблона: он проверяется, а исходное тело включается в стандартное уведомление. Допускается любое JSON-значение, включая массив, строку, число, логическое значение и null. При повторении ключа используется последнее значение.

Ограничения и ошибки

  • Пустое текстовое тело допустимо только с активным шаблоном. Пустое JSON-тело запрещено всегда.
  • JSON и результат разворачивания шаблона для JSON ограничены 1 048 576 байтами. Превышение лимита возвращает HTTP 413.
  • Глубина JSON-декодера ограничена 64. Повреждённый JSON, превышение глубины и числа вне диапазона PHP float возвращают HTTP 400 с кодом invalid_message_json.
  • Нулевой байт в строковой подстановке вызывает invalid_notification_content.

Если уведомление не пришло, откройте диагностику доставки.