Замокать вебхук бота Telegram

POST-мок, который в ответ на Update от Telegram сразу отдаёт вызов sendMessage.

Telegram позволяет ответить на Update прямо в теле ответа вебхука, вернув вызов метода Bot API, вместо отдельного исходящего запроса. Шаблон это и делает: берёт идентификатор чата из входящего Update и отвечает вызовом sendMessage в тот же чат, так что весь круг виден до написания кода бота.

Принимает входящий вызов и отвечает так, как ждёт сервис.

Тело ответа

{
  "method": "sendMessage",
  "chat_id": {{request.body.message.chat.id}},
  "text": "Thanks, got it!"
}

Поля, на которые стоит обратить внимание

Поле Что означает
method Название метода Bot API, которое возвращает сам ответ на вебхук.
chat_id Берётся из входящего Update через {{request.body.message.chat.id}}.
text Текст ответа; поправьте, чтобы проверить другую реакцию бота.

Создать мок

curl -X POST https://quickmock.dev/api/mocks \
  -H 'Content-Type: application/json' \
  -d '{
  "method": "POST",
  "response_status": 200,
  "content_type": "application/json",
  "response_body": "{\"method\":\"sendMessage\",\"chat_id\":{{request.body.message.chat.id}},\"text\":\"Thanks, got it!\"}"
}'

Вызвать

curl -X POST -H 'Content-Type: application/json' -d '{"update_id":900000001,"message":{"message_id":42,"date":1717200000,"chat":{"id":987654321,"type":"private"},"text":"/start"}}' https://quickmock.dev/m/<slug>

Что вы получите

POST a Telegram Update -> 200 {"method":"sendMessage","chat_id":987654321,"text":"Thanks, got it!"}
the webhook response itself is treated as a Bot API method call

Чем это отличается от настоящего

Секретный токен вебхука Telegram не проверяется — мок ответит любому, кто пришлёт похожий Update, а не только настоящему серверу Telegram.

Источники

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

Как работает ответ прямо в теле?
Telegram читает имя метода Bot API и его аргументы из самого ответа вебхука, поэтому простому боту не нужен отдельный вызов API. Это самый быстрый по задержке способ ответить и самый простой для мока.
Проверяется ли секретный токен?
Нет. Секретный токен вебхука Telegram не проверяется, поэтому мок ответит любому, кто пришлёт подходящий Update. Считайте эту проверку задачей своего обработчика.
Откуда берётся chat_id?
Из входящего Update, через токен запроса, который читает message.chat.id. Если в вашем тестовом payload'е этого пути нет, токен останется в ответе как есть, а не подставится, и поскольку chat_id идёт без кавычек, ответ вернётся невалидным JSON, а не пустым полем. Это стоит увидеть один раз: настоящий Update неожиданной формы поведёт себя так же.

Готовы попробовать?

Открыть в конструкторе моков и сначала поправить

Хорошо сочетается с гайдом: Отразить запрос обратно

Похожие шаблоны

← Все шаблоны

Обновлено: 2026-10-17