Skip to content
Назад в блог

Почему вашей CRM нужен кастомный Telegram-бот (amoCRM & Bitrix24)

12 мин. чтения
Почему вашей CRM нужен кастомный Telegram-бот (amoCRM & Bitrix24)

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

Интеграция кастомного Telegram-бота с вашей CRM-системой (amoCRM, Bitrix24, HubSpot) позволяет полностью автоматизировать первичный контакт с клиентом.

Бот вовлекает потенциального клиента в диалог, задает ему серию квалификационных вопросов с помощью инлайн-кнопок, оценивает лид по скоринговому алгоритму и моментально создает сделку в нужном этапе воронки продаж.

В этой статье мы спроектируем воронку квалификации, напишем алгоритм скоринга на TypeScript и настроим отправку данных в amoCRM API.

Архитектура квалификации лидов в Telegram

[Пользователь запускает бота]
             │
             v
[Вопрос 1: Бюджет проекта?] ──> [Инлайн-кнопки: до $2к, до $10к, от $10к+]
             │
             v
[Вопрос 2: Направление?] ──> [Инлайн-кнопки: SaaS, Телеграм-бот, Консалтинг]
             │
             v
[Запрос контактов] ──> [Кнопка отправки телефона или текстовый ввод почты]
             │
             v
(Алгоритм скоринга лида)
ЕСЛИ бюджет = "от $10к" ТОГДА Приоритет = "ВЫСОКИЙ" ИНАЧЕ Приоритет = "СРЕДНИЙ"
             │
             v
(Запрос к API amoCRM)
Создание Контакта ──> Создание Сделки ──> Привязка Контакта к Сделке
             │
             v
[Оповещение менеджеров в Slack/Telegram со ссылкой на карточку в CRM]

1. Проектирование скоринга лидов

Прежде чем отправлять данные в CRM, мы рассчитаем балл лида на бэкенде. Это поможет вашему отделу продаж в первую очередь обрабатывать самые прибыльные сделки.

export interface QualificationAnswers {
  budget: string; // 'under_2k' | '2k_10k' | 'over_10k'
  timeline: string; // 'immediate' | '1_month' | 'planning'
  projectType: string; // 'saas' | 'bot' | 'consultation'
}

export interface LeadScore {
  score: number;
  priority: 'LOW' | 'MEDIUM' | 'HIGH';
}

export function calculateLeadScore(answers: QualificationAnswers): LeadScore {
  let score = 0;

  // 1. Оценка бюджета
  if (answers.budget === 'over_10k') score += 50;
  else if (answers.budget === '2k_10k') score += 30;
  else score += 10;

  // 2. Оценка срочности запуска
  if (answers.timeline === 'immediate') score += 30;
  else if (answers.timeline === '1_month') score += 20;
  else score += 5;

  // 3. Оценка соответствия стеку услуг
  if (answers.projectType === 'saas') score += 20;
  else if (answers.projectType === 'bot') score += 15;
  else score += 5;

  let priority: 'LOW' | 'MEDIUM' | 'HIGH' = 'LOW';
  if (score >= 70) priority = 'HIGH';
  else if (score >= 40) priority = 'MEDIUM';

  return { score, priority };
}

2. Передача сделок в API amoCRM

Пример реализации на Node.js для создания контакта и сделки в amoCRM с использованием библиотеки Axios.

import axios from 'axios';

interface LeadPayload {
  firstName: string;
  phone: string;
  telegramUsername?: string;
  score: LeadScore;
  answers: QualificationAnswers;
}

export async function pushLeadToAmoCRM(lead: LeadPayload) {
  const subdomain = process.env.AMOCRM_SUBDOMAIN;
  const token = process.env.AMOCRM_ACCESS_TOKEN;
  
  const headers = {
    Authorization: `Bearer ${token}`,
    'Content-Type': 'application/json',
  };

  try {
    // 1. Создаем контакт в amoCRM
    const contactRes = await axios.post(
      `https://${subdomain}.amocrm.ru/api/v4/contacts`,
      [{
        name: lead.firstName,
        custom_fields_values: [
          {
            field_id: 111111, // ID поля "Телефон" в вашей amoCRM
            values: [{ value: lead.phone, enum_code: 'MOB' }]
          },
          {
            field_id: 222222, // ID поля "Telegram" в вашей amoCRM
            values: [{ value: lead.telegramUsername ? `@${lead.telegramUsername}` : 'N/A' }]
          }
        ]
      }],
      { headers }
    );

    const contactId = contactRes.data._embedded.contacts[0].id;

    // 2. Создаем сделку с указанием рассчитанной приоритетности
    const leadName = `Лид [${lead.score.priority}]: ${lead.firstName}`;
    const budgetValue = lead.answers.budget === 'over_10k' ? 10000 : (lead.answers.budget === '2k_10k' ? 5000 : 1500);

    const dealRes = await axios.post(
      `https://${subdomain}.amocrm.ru/api/v4/leads`,
      [{
        name: leadName,
        price: budgetValue,
        _embedded: {
          contacts: [{ id: contactId }]
        },
        custom_fields_values: [
          {
            field_id: 333333, // ID кастомного поля "Тип проекта"
            values: [{ value: lead.answers.projectType }]
          },
          {
            field_id: 444444, // ID кастомного поля "Оценка ИИ"
            values: [{ value: `Балл: ${lead.score.score}/100` }]
          }
        ]
      }],
      { headers }
    );

    return dealRes.data;
  } catch (error: any) {
    console.error('[CRM Error] amoCRM API Sync failed:', error.response?.data || error.message);
    throw new Error('CRM Sync Error');
  }
}

3. Оптимизация UI/UX внутри Telegram

Для повышения конверсии избегайте ручного ввода текста пользователем. Используйте нативные кнопки Inline Keyboard:

import TelegramBot from 'node-telegram-bot-api';

export function sendBudgetQuestion(bot: TelegramBot, chatId: number) {
  bot.sendMessage(chatId, "Выберите примерный бюджет вашего проекта:", {
    reply_markup: {
      inline_keyboard: [
        [
          { text: "До $2,000", callback_data: "budget_under_2k" },
          { text: "$2,000 - $10,000", callback_data: "budget_2k_10k" }
        ],
        [
          { text: "Более $10,000", callback_data: "budget_over_10k" }
        ]
      ]
    }
  });
}

Источники и документация

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

В моих проектах разработки ботов, таких как конструктор TeleGo.io, мы активно применяем подобные сценарии синхронизации для автоматической отправки активности пользователей в CRM. Для построения еще более сложной воронки можно объединить CRM-систему с ИИ-ботом поддержки на базе RAG, который будет квалифицировать лида и решать его первичные вопросы в диалоге.

Если вы хотите разработать кастомного Telegram-бота с интеграцией в amoCRM или Bitrix24 под задачи вашего отдела продаж, посмотрите мою услугу Создание Telegram-ботов под ключ или запишитесь на Консультацию.

Частые вопросы

Зачем боту скоринг лидов, если CRM и так собирает заявки?

Скоринг сортирует заявки до того, как их увидит менеджер: лид с бюджетом от $10 000 и срочным запуском попадает в CRM с высоким приоритетом и мгновенным уведомлением, а холодные заявки не отвлекают отдел продаж. Это ускоряет ответ самым прибыльным клиентам.

С какими CRM можно интегрировать Telegram-бота?

С любой системой, у которой есть API: amoCRM, Bitrix24, HubSpot, а также самописные CRM. Бот создаёт контакт, сделку в нужном этапе воронки и передаёт ответы анкеты в кастомные поля.

Почему в боте лучше кнопки, чем свободный ввод текста?

Инлайн-кнопки повышают конверсию прохождения анкеты: пользователю не нужно печатать, а бот получает предсказуемые данные без парсинга свободного текста. Ручной ввод остаётся только там, где без него нельзя — телефон или email.