К основному содержанию

Собственный продукт · серверная часть

Как заявка с averixlab.ru доходит до Telegram — и не притворяется отправленной

У формы есть простой бизнес-критерий: сообщение либо дошло ответственному, либо посетитель должен увидеть ошибку. Зелёная надпись сама по себе ничего не доказывает. Показываем, как устроен этот путь на нашем сайте.

Маршрут используется на averixlab.ru

Факты и ограничения указаны прямо в разборе

01

Ситуация

Форма может выглядеть исправной, даже когда внешняя доставка недоступна или запрос заполнен некорректно.

02

Что сделали

Проверяем данные на сервере, отсекаем простейший автоматический спам и ждём подтверждение Telegram.

03

Что можно проверить

Клиент получает успешный ответ только после принятой доставки; сбои возвращаются явными кодами ошибок.

Не отправляем сообщение прямо из браузера

Форма обращается к серверному маршруту сайта. Токен Telegram остаётся на сервере и не попадает в код страницы. Там же удобно применять одинаковые правила к любому отправителю: проверить метод запроса, размер тела и обязательные поля до обращения к внешнему сервису.

  • Принимаем только POST-запросы.
  • Требуем имя, телефон и описание задачи.
  • Ограничиваем длину полей и общий размер запроса.
  • Экранируем служебные символы перед формированием сообщения.

Отсекаем шум до отправки сообщения

В форме есть скрытое поле, которое обычный посетитель не заполняет, а простой бот часто заполняет вместе с остальными. Для повторяющихся запросов действует ограничение: не больше пяти обращений с одного адреса за десять минут. Это снижает случайный шум и защищает внешний API от очевидных повторов.

Успех показываем только после ответа Telegram

Сервер ждёт ответ Telegram Bot API, но не бесконечно: запрос прерывается через восемь секунд. Если внешний сервис не подтвердил приём сообщения, маршрут возвращает ошибку. Интерфейс может предложить повторить отправку или выбрать другой способ связи, вместо того чтобы уверенно написать «спасибо» и потерять обращение.

  • 400 — не хватает обязательных данных или запрос не прошёл проверку.
  • 405 — использован неподдерживаемый метод.
  • 429 — слишком много повторных обращений.
  • 502 — внешняя доставка не подтвердила результат.

Что этот контур решает, а что ещё можно усилить

Текущая реализация закрывает базовый путь небольшого сайта: данные проверяются на сервере, секрет не раскрывается посетителю, простейший спам ограничивается, а результат доставки не подменяется анимацией в интерфейсе.

Для сайта с большим потоком заявок понадобятся постоянное хранилище лимитов, очередь повторной доставки, журнал обращений и резервный канал. Мы не выдаём нынешний маршрут за универсальную CRM: это компактное решение под текущую нагрузку и понятная точка для следующего шага.

Формы и интеграции

Заявки теряются между сайтом и менеджером?

Проверим весь путь сообщения и сделаем ошибку видимой, а доставку — контролируемой.

Разобрать путь заявки