AI / Автоматизация продаж
SalesCore — AI-консультант для сайта и Telegram
SalesCore — собственный AI-консультант Цифрового Цеха. Он работает в виджете на сайте и в Telegram, понимает контекст страницы, отвечает по каталогу услуг, помогает оценить бюджет и превращает разговор в структурированную заявку.
Обсудить похожий проект
Задача
Создать AI-консультанта, который без ожидания менеджера отвечает на вопросы, уточняет задачу, бюджет и сроки, а затем передаёт владельцу готовую заявку с контекстом диалога.
Решение
Как реализовали проект
Единый сервис на Node.js и Hono объединяет сайт и Telegram общим AI-ядром. Модель вызывает контролируемые инструменты для поиска услуг, показа цены и квалификации клиента, а готовый лид сохраняется в SQLite и вместе с полной расшифровкой отправляется владельцу в Telegram.
Состав работ
Что вошло в решение
- 01Единое AI-ядро для сайта и Telegram
- 02Квалификация по задаче, бюджету и срокам
- 03Карточки цен и сроков прямо в диалоге
- 04Передача заявки и расшифровки владельцу в Telegram
- 05Сохранение диалога при переходах по сайту
- 0658 автоматических тестов ключевых сценариев
Инфраструктура
Архитектура решения
- 01
Виджет загружается с /salesbot/widget.js, создаёт анонимную сессию и сохраняет историю и состояние окна в localStorage при переходах между страницами.
- 02
Hono API передаёт ответ потоком событий, поэтому текст появляется по мере генерации, а виджет отдельно показывает статусы работы инструментов.
- 03
Общее AI-ядро управляет диалогом сайта и Telegram-бота, а слой инструментов читает каталог услуг, формирует карточки цен и сохраняет квалификацию, лиды и события в SQLite.
- 04
После получения контакта Telegram Bot API отправляет владельцу карточку лида с задачей, бюджетом, сроком, источником и полной расшифровкой разговора.
- 05
Caddy направляет same-origin запросы /salesbot на сервис, доступный только через 127.0.0.1:3000; процесс работает в отдельном LXC-контейнере под systemd.
Возможности
Функционал
Контекстная консультация
Бот получает название и адрес текущей страницы, поэтому начинает разговор с учётом открытой услуги, решения или рекламного перехода.
Квалификация лида
Диалог последовательно уточняет задачу, бюджет и срок, не превращая общение в длинную анкету и не запрашивая уже названные данные повторно.
Карточки цен
Когда клиент спрашивает о стоимости, AI вызывает каталог и показывает отдельную карточку с названием услуги, ориентиром цены и сроком выполнения.
Память между страницами
Сессия и история сохраняются в браузере: пользователь может открыть другое решение и продолжить тот же разговор без потери контекста.
Передача готовой заявки
После получения контакта владелец получает в Telegram не только номер или ник, но и квалификацию, источник перехода и всю переписку.
Обработка возражений
Отказы и сомнения фиксируются как события. Бот может уточнить причину, предложить следующий шаг и передать владельцу проблемный диалог.
Стек проекта
Технологии
Защита данных
Безопасность
- Приложение слушает только 127.0.0.1, а наружу публикуется через Caddy по защищённому same-origin маршруту /salesbot.
- Динамический текст AI выводится через textContent, поэтому ответ модели не может внедрить произвольную HTML-разметку или скрипт в виджет.
- API ограничивает размер тела запроса и идентификатора сессии, а частота обращений контролируется отдельно по IP и сессии.
- Системный промпт запрещает выполнять инструкции из пользовательского текста и передавать внутренние правила, а контакт проходит отдельную проверку.
- Токены Telegram и AI-провайдера хранятся в переменных окружения и не попадают в репозиторий или клиентский JavaScript.
Живые данные
Интеграции
UX / UI
Дизайн-процесс
Виджет продолжает визуальный язык сайта: тёмно-синий текст, фирменный зелёный, компактные карточки и маскот «Мастер». Интерфейс помещается поверх страницы, адаптируется к мобильному экрану и показывает только полезное состояние — ответ, работу инструмента, цену или следующий вопрос.
Инженерная работа
Нетривиальные решения
Потоковый ответ без дублей
Текст модели и результаты инструментов приходят разными событиями. Клиентский автомат состояния собирает их в один ответ и не повторяет текст вокруг вызова инструмента.
Лид нельзя потерять
Заявка сначала сохраняется локально, и только затем отправляется владельцу. Если Telegram временно недоступен, данные остаются в базе и могут быть доставлены повторно.
История должна переживать навигацию
Сообщения, карточки цен и состояние виджета сериализуются в браузере и корректно восстанавливаются на следующей странице сайта.
AI не должен придумывать контакт
Перед созданием лида система проверяет, что телефон, email или ник действительно написал пользователь, и защищает владельца от пустых и дублирующихся заявок.
Безопасный вывод ответа
После проверки XSS все динамические сообщения переведены на безопасную отрисовку текстом, а мобильное окно согласовано с cookie-баннером и элементами страницы.
Результат
SalesCore запущен на cifrovoyceh.ru и доступен через собственный адрес /salesbot. Посетитель получает консультацию и ориентир по цене без длинной формы, а владелец — структурированную заявку и полную расшифровку разговора. На момент публикации рабочий API отвечает успешно, а ключевые сценарии подтверждены 58 автоматическими тестами.
Следующий кейс