HTTP - ответы
HTTP-ответ — это заготовленный шаблон ответа, который бот отправляет клиенту в ответ на входящий Webhook-запрос. Позволяет гибко управлять кодом статуса, заголовками и телом ответа — с поддержкой переменных из контекста.
Интерфейс
Зачем нужны отдельные HTTP-ответы?
Когда на вебхук приходит запрос, бот обрабатывает его через триггер. По завершении триггера ответ клиенту отправляется автоматически — с настройками, заданными прямо в самом Webhook.
HTTP-ответ нужен, когда вы хотите переопределить стандартный ответ вебхука: использовать другой код, заголовки или тело — в зависимости от логики триггера. Для этого в триггере вызывается экшен "Отправить HTTP ответ" с указанием ID нужного шаблона. После вызова экшена стандартный ответ вебхука уже не используется.
Таким образом, HTTP-ответ — это переиспользуемый шаблон, который можно привязать к разным триггерам.
Настройки
| Функция | Описание |
|---|---|
| Переименовать | Изменение названия ответа |
| Удалить | Безвозвратное удаление ответа |
Код ответа
HTTP-код статуса, который будет возвращён клиенту. Поддерживает переменные из контекста бота.
Допустимый диапазон: 100–599. Если значение пустое или некорректное — используется код 200.
Подробнее о кодах ответа: Коды статуса
Параметры
Headers
Headers (Заголовки) — Мета-данные ответа в виде пар ключ: значение. Идут перед телом.
Поддерживают переменные из контекста бота.
Ограничения:
- Ключ: до 256 символов
- Значение: до 4096 символов
Примеры использования:
- Указание типа данных (
Content-Type: application/json) - Управление кешированием (
Cache-Control: no-cache) - CORS-политики (
Access-Control-Allow-Origin: *) - Кастомные заголовки для клиента
Body
Body (Тело ответа) — Данные, которые будут переданы клиенту.
Режимы тела:
| Режим | Описание |
|---|---|
| Off | Тело не отправляется. Клиент получит только код статуса и заголовки |
| Template | Текстовый шаблон. Может содержать переменные из контекста бота. Размер — до 1MB |
| Path | Путь к данным в контексте бота. Данные автоматически сериализуются в JSON. Размер — до 1MB |
Режим File в текущей версии не поддерживается.
Авто Content-Type
Если включено и заголовок Content-Type не задан вручную — платформа определит его автоматически:
- Если тело начинается с
{или[→application/json - В остальных случаях →
text/plain; charset=utf-8
Триггеры
| Триггер | Когда выполняется |
|---|---|
| Подготовка | Перед формированием ответа. Можно подготовить переменные для подстановки в шаблон |
| Завершение | После отправки ответа клиенту. Можно зафиксировать результат, логировать и т.д. |
Данные ответа в контексте
После отправки ответа в контекст бота записываются данные об операции (web.response):
| Поле | Описание |
|---|---|
ok |
true если код ответа равен 200 |
code |
Итоговый HTTP-код ответа |
name |
Название HTTP-ответа |
response_id |
ID использованного HTTP-ответа |
webhook_id |
ID вебхука (если ответ задан в самом вебхуке) |
headers |
Отправленные заголовки |
body |
Отправленное тело ответа |
error |
Описание ошибки (при таймауте и т.п.) |
Таймаут
Клиент ожидает ответ 30 секунд. Если за это время экшен "Отправить HTTP ответ" не был вызван —
клиент получит код 504 Gateway Timeout, а в контекст будет записана ошибка "request timed out".
