Вебхук против 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 сам возобновит доставку без повторной регистрации.
Связанные термины
- API-интеграция — общий контекст работы с внешними системами
- CRM-интеграция — вебхуки от CRM при изменении сделки
- Чат-бот — как бот получает сообщения через вебхук
- Омниканальность — вебхуки от нескольких каналов в одном роутере
Где применяется
Хотите настроить интеграции через вебхуки? Обсудим задачу.
Связаться с нами