Шаблоны и подстановки
Шаблон задаёт полный текст уведомления. В него можно включить исходное сообщение, название входящего канала, время приёма и значения из JSON.
Подключите шаблон
- Откройте «Шаблоны» и нажмите «Создать шаблон».
- Укажите название и формат уведомления: обычный текст или Markdown.
- Напишите текст. Справа выберите подстановку: она вставится в позицию курсора или заменит выделенный фрагмент. На узком экране список находится под текстом.
- Сохраните шаблон и выберите его у нужного входящего канала.
Активный шаблон полностью заменяет стандартный текст уведомления, даже если запрос содержит непустое тело. Чтобы включить исходное тело, добавьте {{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.
Если уведомление не пришло, откройте диагностику доставки.