Пост №5: SMS-шлюз, Telegram-бот, нейромодули и мобильная версия
Продолжаю цикл постов о создании системы онлайн-записи для автосервиса. Сегодня расскажу про SMS-уведомления, интеграцию с Telegram, про все нейромодули, которые я использую в программе, и про то, как я адаптировал сайт для телефонов.
SMS-шлюз: как я подключил уведомления по SMS
Когда я начинал проект, я планировал отправлять уведомления только по email и в Telegram. Но потом понял: не все клиенты читают email, а Telegram есть не у всех. SMS — самый надежный канал, потому что он доходит всегда.
Я решил использовать платформу SMS-шлюза. Выбрал "...." — у них есть API и нормальная документация. Подключение заняло пару часов.
Как это работает
У меня уже была функция send_client_email(). Я добавил рядом функцию send_client_sms(). Она проверяет, есть ли у клиента телефон, формирует короткое сообщение с деталями записи и отправляет через API SMS-центра.
В сообщении я указываю название услуги, адрес мастерской, дату, время, стоимость и контактный телефон для вопросов. Все в одном сообщении, чтобы клиенту не приходилось ничего искать.
Триггеры для отправки
SMS отправляются не всегда, а в трех случаях:
1. Подтверждение записи — клиент получает SMS сразу после создания записи. Это дает ему уверенность, что запись действительно создана.
2. Напоминание за день — я добавил планировщик, который раз в день проверяет, у кого запись на завтра, и отправляет SMS-напоминание. Это снизило количество неявок примерно на 30 процентов.
3. Отмена записи — если оператор отменяет запись, клиент получает SMS с уведомлением, чтобы не приехал зря.
Это перекрывает все основные сценарии. Клиент всегда знает, что происходит.
Сколько это стоит
SMS-шлюз берет около 0.5 рубля за сообщение. В месяц я отправляю около 200-300 SMS, это примерно 100-150 рублей. За эти деньги я получаю:
- Минимум пропущенных записей (клиенты не забывают)
- Минимум недовольных клиентов (все знают, что делать)
- Экономию времени менеджера (не нужно обзванивать всех накануне)
Окупается с лихвой.
Telegram-бот для записи
У меня есть отдельный примитивный Telegram-бот, который принимает записи. Это удобно для клиентов, которые не хотят заходить на сайт, а привыкли все делать в мессенджере.
Как он работает
1. Клиент пишет боту команду /start
2. Бот показывает кнопки: "Записаться", "Мои записи", "Контакты"
3. При выборе "Записаться" бот запрашивает мастерскую, услугу, дату и время
4. Проверяет свободные слоты через API системы
5. Подтверждает запись и отправляет уведомление оператору
Бот написан на библиотеке python-telegram-bot. Это очень гибкая библиотека, которая поддерживает и команды, и кнопки, и обработку callback-запросов.
Сейчас через бот приходит около 20 процентов всех записей. Это неплохо, учитывая, что я не рекламирую его специально.
Нейромодули: как я использую DeepSeek в программе
DeepSeek используется в нескольких местах системы. Я не просто вызываю API один раз — у меня есть четыре отдельных нейромодуля, каждый со своей задачей.
1. Модуль анализа отзывов (review_analyzer.py)
Самый первый модуль, который я написал. Он принимает на вход список отзывов о конкретном сервисе (до 500 штук) и возвращает структурированное резюме: 5 самых частых жалоб, 5 самых частых похвал, средний рейтинг, основные услуги, которые упоминаются. Это помогает быстро понять, что у конкурента хорошо, а что плохо, не читая сотни отзывов вручную.
2. Модуль нормализации цен (price_normalizer.py)
Этот модуль решает проблему неструктурированных цен. На входе — текст из объявления на Авито или с сайта конкурента, например "замена масла от 2500 рублей" или "комплексная диагностика 3000-5000 руб". На выходе — нормализованная цена в рублях (одно число). Модуль использует DeepSeek для понимания контекста: если написано "от 2500", нейросеть понимает, что это минимальная цена, и возвращает 2500. Если указан диапазон, возвращает среднее. Это решило проблему, которую я не мог решить регулярными выражениями.
3. Модуль классификации услуг (service_classifier.py)
Самый сложный модуль. На входе — список услуг, которые предлагает конкурент (из объявлений, сайта, отзывов). На выходе — нормализованный список услуг из моей базы. Например, если у конкурента написано "замена масла в двигателе", модуль понимает, что это услуга "замена масла". Если написано "профилактика тормозной системы", это может быть "замена колодок", "замена тормозной жидкости" или "ремонт тормозной системы" — нейросеть определяет наиболее вероятный вариант. Без этого модуля я бы не смог сопоставлять услуги разных сервисов, потому что каждый пишет их по-разному.
4. Модуль валидации рыночных расчетов (market_validator.py)
Этот модуль используется для проверки расчетов долей рынка. Я загружаю в него список сервисов с их параметрами (количество отзывов, рейтинг, услуги, цены) и прошу проверить, насколько логично распределение. Нейросеть указывает на аномалии: например, если у сервиса мало отзывов, но высокая доля рынка, или если цена сильно отличается от среднего по рынку. Это помогает выявлять ошибки в алгоритме и корректировать коэффициенты.
Все модули работают через единый API-интерфейс DeepSeek, но с разными промптами. Я вынес их в отдельные файлы, чтобы можно было обновлять или заменять каждый независимо.
Мобильная версия: адаптивность с первого дня
Еще на этапе проектирования я решил, что сайт будет адаптивным. Сейчас 60 процентов клиентов заходят с телефона, и если сайт неудобный на мобилке — они уйдут.
Я использовал Bootstrap 5 с его grid-системой и готовыми компонентами. Все блоки корректно перестраиваются на мобильных экранах, кнопки увеличены для пальцев, шрифты читабельные.
Что я сделал специально для мобильной версии
1. Датапикер с Flatpickr. На мобильных устройствах системный календарь часто работает некорректно. Я использовал Flatpickr — легкий плагин для выбора даты, который работает и на десктопе, и на телефонах.
2. Опрос при неактивности. Если клиент начал запись, но не завершил (например, закрыл вкладку), через 60 секунд появляется опрос "Почему вы не записались?". Это помогло собрать много полезной обратной связи.
3. Сохранение данных в sessionStorage. Если клиент прервал запись, его данные (номер телефона, выбранная услуга) сохраняются в браузере. При повторном заходе он может продолжить с того же места, а не заполнять все заново.
Это особенно актуально для мобильных пользователей, которые часто переключаются между приложениями и могут случайно закрыть вкладку.
Итог
SMS-уведомления, Telegram-бот и мобильная версия сделали систему максимально доступной для клиентов. Нейромодули сделали анализ данных полностью автоматическим и значительно более точным, чем ручная обработка. Все вместе это увеличило конверсию примерно на 20 процентов.
В следующем посте расскажу про систему лояльности и как я удерживаю клиентов без классических кешбэков. Если есть вопросы — пишите в комментарии.