Демо-проект
Автоматизация: заявка с сайта в мессенджер и Google Таблицу
Посетитель заполняет форму на сайте, а заявка сразу приходит владельцу в Telegram и одновременно записывается новой строкой в Google Таблицу. Не нужно следить за почтой и переписывать заявки вручную: ничего не теряется, а таблица остаётся списком клиентов. Демо сделано на Telegram; для клиентов делаем такие боты в MAX.
- Серверная функция
- Node.js, без зависимостей
- Telegram Bot API
- Google Apps Script
- Автотесты (18)
Что это даёт бизнесу
- Заявка у вас в телефоне сразу. Сообщение в Telegram приходит, как только посетитель нажал «Отправить» — можно перезвонить, пока клиент ещё на сайте.
- Заявки собраны в таблице. Дата, имя, телефон, сообщение и страница-источник — в одной строке; таблицу можно фильтровать и делиться ею с менеджерами.
- Один сбой не ломает всё. Telegram и таблица работают независимо: если один канал недоступен, заявка всё равно дойдёт по другому.
- Защита от спама. Скрытое поле-ловушка отсекает простых ботов; телефон и имя проверяются до отправки.
- Не нужен свой сервер. Обработчик — небольшая серверная функция, а таблицу принимает скрипт Google Apps Script.
Схема: путь заявки
Упрощённый вариант схемы. Полная версия с ветками для спама и ошибок — ниже, её можно прокрутить или открыть отдельно.
-
1. Посетитель
Заполняет форму на сайте: имя, телефон, сообщение.
-
2. Обработчик
Серверная функция проверяет данные и приводит телефон к единому виду. Заполнено скрытое поле — это бот: ответ «ок», но ничего не отправляется. Ошибки ввода возвращаются подсказками в форму.
-
3. Два канала параллельно
TelegramBot API: сообщение в чат владельца.Google ТаблицаЗапрос с секретом в Apps Script, который дописывает строку на лист «Заявки». -
4. Ответ посетителю
«Спасибо, заявка отправлена», если сработал хотя бы один канал. Если упали оба — понятная ошибка и можно отправить ещё раз.
Попробуйте форму
Заполните поля и нажмите «Отправить заявку» — появится макет: какое сообщение пришло бы в Telegram и какая строка добавилась бы в таблицу. Проверки те же, что в боевой версии: имя от 2 символов, российский номер телефона.
Это демо: данные никуда не отправлены. Форма работает только в вашем браузере; на страницу ничего не передаётся и нигде не сохраняется. Лучше вводите вымышленные данные.
Как подключить к вашему сайту
Кратко. Пошаговая инструкция с проверкой — в README проекта; при заказе всё настраиваем сами.
- Бот в TelegramСоздаёте бота у @BotFather (
/newbot), получаете токен. Узнаётеchat_idсвоего чата или группы, куда слать заявки. - Таблица и скриптСоздаёте Google Таблицу, в «Расширения → Apps Script» вставляете код скрипта, задаёте секрет в свойствах и публикуете как веб-приложение. Адрес оканчивается на
/exec. - Переменные окруженияВ настройках хостинга —
TELEGRAM_BOT_TOKEN,TELEGRAM_CHAT_ID,SHEETS_WEBHOOK_URL,SHEETS_WEBHOOK_SECRET,ALLOWED_ORIGIN. Токены и секреты хранятся только там, не в коде. Можно подключить только один канал. - ПубликацияРазмещаете функцию на хостинге с поддержкой серверных функций — обработчик доступен по адресу
/api/lead. - Форма на сайте и проверкаКопируете форму-пример (в ней уже есть скрытое поле-ловушка), указываете адрес обработчика и отправляете тестовую заявку: в Telegram должно прийти сообщение, в таблице появиться строка.
Что важно знать
- Живой запуск не проверялся. Ключей Telegram и Google для демо нет, поэтому обращения к этим сервисам проверены тестами с подменой запросов (18 автотестов). Перед сдачей клиенту тестовая заявка проходит с его ключами.
- Персональные данные. Заявки (имя, телефон) проходят через серверную функцию и попадают в Telegram и Google Таблицу — это зарубежные сервисы. Подходит ли это вашим требованиям к хранению данных, решаете вы; на боевом сайте нужны политика обработки данных и согласие. Для строгого случая тот же код переносится на сервер в России.
- Защита от спама простая (скрытое поле). Если заявки начнут заливать, добавляется капча и ограничение частоты.
- Если оба канала недоступны, заявка у нас не сохраняется, посетитель видит ошибку. Для критичных заявок можно добавить третий канал, например письмо.
Код проекта лежит в закрытом репозитории компании.