Реализация бота для сбора лидов в мобильном приложении
Бот для сбора лидов в мобильном контексте — это не просто форма с полями «имя» и «телефон». Это управляемый диалог через Telegram Bot API или собственный чат-интерфейс, который квалифицирует пользователя прежде, чем передать данные в CRM.
Как устроен сбор лидов через бота
Мобильное приложение выступает как управляющий интерфейс: оператор видит входящие лиды, настраивает воронку вопросов, получает уведомления. Сам бот работает на бэкенде — через Telegram Bot API webhooks или собственный чат-движок.
На практике типичная архитектура выглядит так: бот на сервере (Node.js + telegraf или Python + aiogram) принимает сообщения пользователей, ведёт FSM (Finite State Machine) диалога, сохраняет собранные данные в базу, а мобильное приложение через REST/WebSocket получает новые лиды в реальном времени.
// iOS: получение нового лида через WebSocket (Starscream)
socket.onEvent = { [weak self] event in
switch event {
case .text(let text):
guard let lead = try? JSONDecoder().decode(Lead.self, from: Data(text.utf8)) else { return }
DispatchQueue.main.async {
self?.viewModel.appendLead(lead)
self?.triggerHaptic(.notification(.success))
}
default: break
}
}
Форма квалификации — это набор вопросов с ветвлением. Например: «Какой у вас бюджет?» → если выбрано «до 50 000 ₽», бот помечает лид как cold и не отправляет уведомление. Это FSM с состояниями, которые хранятся на сервере в Redis per chat_id.
Карточка лида и статусная модель
Каждый лид проходит через несколько статусов: new → in_progress → qualified / rejected. Мобильное приложение показывает список с группировкой или фильтрацией по статусу — new всегда вверху с сортировкой по времени поступления.
Детальная карточка лида содержит ответы на вопросы воронки в виде пар «вопрос — ответ», а не сырого лога чата. Так оператор видит сразу: имя, бюджет, тип запроса — без прокрутки переписки. Ответы структурируются на бэкенде при завершении диалога.
Назначение менеджера — PATCH /leads/{id} с {assignee_id}. При назначении ответственному приходит push. Если лид не взят в работу за N минут — повторное уведомление или переназначение по round-robin: логика на бэкенде, мобильное приложение только отображает статус.
Что входит в работу
На мобильной стороне реализуем:
- Список лидов с фильтрацией по статусу (новый / в работе / закрыт)
- Push-уведомления через FCM/APNs при поступлении нового лида
- Детальная карточка: ответы на вопросы воронки, метка времени, источник
- Назначение лида менеджеру (если в приложении несколько операторов)
- Экспорт в CSV или прямая интеграция с amoCRM / Bitrix24 через API
Push при новом лиде — критичная функция. На Android используем FCM с high priority и data payload (не notification), чтобы приложение получало уведомление даже в фоне через FirebaseMessagingService. На iOS — APNs с content-available: 1 для silent push плюс обычный алерт.
Сроки
Мобильная часть (список лидов, push, карточка) — 2–3 рабочих дня. Если нужна интеграция с CRM — добавить 1 день. Бот-часть оценивается отдельно. Стоимость рассчитывается индивидуально после анализа требований.







