Вебхук

Вебхук — механизм, при котором внешняя система отправляет HTTP POST-запрос на указанный URL, когда происходит определённое событие. Это позволяет боту реагировать на события в реальном времени: новое сообщение от пользователя, оплата заказа, изменение статуса в CRM — без необходимости постоянно опрашивать API.

Вебхук против polling: в чём разница

Polling — бот сам периодически спрашивает сервер: «Есть что-то новое?». При частоте опроса 1 раз в секунду — 86 400 запросов в сутки, большинство из которых возвращают пустой ответ. Высокая нагрузка на API, задержка до 1 секунды.

Webhook — сервер сам уведомляет бота при событии. 0 лишних запросов, задержка 50–200 мс. Telegram Bot API, WhatsApp Business API, AmoCRM, Bitrix24 — все они поддерживают вебхуки. Для продакшн-ботов webhook всегда предпочтительнее polling.

Как настроить вебхук для Telegram-бота

Один API-вызов: setWebhook?url=https://yourdomain.com/webhook. После этого Telegram будет отправлять каждое входящее сообщение POST-запросом на указанный URL. Сервер должен отвечать HTTP 200 в течение 60 секунд; если нет — Telegram повторит доставку до 3 раз с нарастающей задержкой.

Важно: вебхук-эндпоинт должен быть доступен по HTTPS с валидным TLS-сертификатом. Самоподписанные сертификаты Telegram не принимает для внешних URL — используйте Let's Encrypt или Cloudflare.

Верификация вебхуков

Любой может отправить POST-запрос на ваш вебхук-URL, если знает адрес. Для защиты используют: (1) секретный токен в заголовке — Telegram добавляет X-Telegram-Bot-Api-Secret-Token; (2) HMAC-подпись — Stripe, GitHub, AmoCRM подписывают тело запроса секретным ключом, сервер проверяет подпись; (3) IP-фильтрацию — разрешить запросы только с IP-диапазона платформы.

Как работает webhook в чат-боте

Когда пользователь пишет боту в Telegram, Telegram отправляет POST-запрос на URL вашего сервера — это и есть webhook. Сервер должен ответить за 300ms, иначе Telegram повторит запрос. В отличие от polling (бот сам спрашивает «есть новые сообщения?»), webhook не тратит запросы впустую и отвечает мгновенно. Для регистрации webhook нужен HTTPS-сервер с валидным SSL-сертификатом — self-signed не работает.

Отладка webhook-ошибок

  • Telegram не доставляет сообщения. Проверьте getWebhookInfo — там видны последние ошибки и количество ожидающих обновлений.
  • Дублирование обработки. Если сервер отвечает медленнее 300ms, Telegram повторяет запрос. Нужна идемпотентная обработка по update_id.
  • IP-фильтрация. Webhook от Telegram приходит с фиксированных IP-диапазонов — в production полезно ограничить доступ только с них.
Сергей Полухин

Сергей Полухин

Co-Founder & CTO PapAI Soft · профиль

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

Как защитить webhook от несанкционированных запросов?

Три метода: (1) проверка секретного токена в заголовке запроса (Telegram Bot API поддерживает X-Telegram-Bot-Api-Secret-Token), (2) IP-фильтрация (разрешить только IP-диапазоны Telegram), (3) проверка подписи HMAC при работе с другими платформами (VK, WhatsApp). Минимум — секретный токен.

Что делать, если webhook перестал работать?

Диагностика: getWebhookInfo → pending_update_count (накопились ли обновления) → last_error_message (последняя ошибка). Частые причины: истёкший SSL-сертификат, изменился IP сервера (IP-фильтрация), сервер отвечает >10 секунд. После исправления Telegram сам возобновит доставку без повторной регистрации.

Связанные термины

Где применяется

Разработка ИИ-ассистентов → Чатбот для Битрикс24 →

Хотите настроить интеграции через вебхуки? Обсудим задачу.

Связаться с нами