Замокать вебхук бота 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