Перейти к содержанию
Innovialabs

Как подключить Telegram-бота к amoCRM или Битрикс24

Практика4 мин

Коротко

Если нужна переписка менеджера с клиентом прямо из CRM, подключите бота через встроенный канал Telegram в amoCRM или открытые линии Битрикс24; если нужны структурированные заявки из сценария бота, отправляйте их через API, предварительно ища контакт по телефону или Telegram ID.

Короткий ответ

Есть два пути, и они решают разные задачи:

  • Встроенный коннектор. В amoCRM бот подключается как канал чатов, в Битрикс24 — через открытые линии. Сообщения клиента попадают в CRM, менеджер отвечает прямо из карточки. Подходит, когда бот в основном служит каналом связи.
  • Интеграция через API. Ваш бот проводит клиента по сценарию, собирает ответы и сам создает контакт и сделку или лид с нужными полями. Подходит, когда бот квалифицирует заявки.

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

Сравнение подходов

КоннекторAPI
ЗапускНастройка в интерфейсе CRMНужен код и сервер
Переписка в CRMДа, из коробкиТолько если отдельно реализовать
Свои поля и логикаМинимумПолный контроль
Бот со сценариемОграниченноДа
Контроль дублейПравилами CRMВашей логикой

Важно: обычно к одному боту нельзя одновременно подключить и коннектор, и собственный обработчик обновлений. Telegram отдает обновления только одному получателю — webhook или long polling. Если нужен и сценарий, и переписка в CRM, планируйте архитектуру заранее: например, ваш сервер принимает все обновления и сам передает сообщения в CRM через ее API для чатов.

Как передать заявку через API

amoCRM. Используется REST API v4. Для заявки удобен метод POST /api/v4/leads/complex: одним запросом создается сделка с контактом и тегами. Авторизация — через OAuth-интеграцию или долгосрочный токен.

[
  {
    "name": "Заявка из Telegram",
    "_embedded": {
      "contacts": [
        {
          "first_name": "Азиз",
          "custom_fields_values": [
            {
              "field_code": "PHONE",
              "values": [{ "value": "+998901234567", "enum_code": "WORK" }]
            }
          ]
        }
      ],
      "tags": [{ "name": "telegram" }]
    }
  }
]

Битрикс24. Проще всего начать с входящего вебхука с правами на CRM. Лид создается методом crm.lead.add, сделка с контактом — через crm.contact.add и crm.deal.add. Для поиска существующих клиентов есть crm.duplicate.findbycomm, который ищет по телефону или email.

Сопоставление полей

Перед кодом составьте таблицу: что спрашивает бот и куда это ложится в CRM.

  • Имя — из ответа пользователя, а не только из профиля Telegram: там бывают ники.
  • Телефон — через кнопку «Поделиться контактом», в едином формате +998....
  • Telegram ID и username — в отдельные пользовательские поля контакта. По ID потом находится клиент, даже если телефон не указан.
  • Ответы на вопросы — в поля сделки (бюджет, услуга, сроки), а не одним текстом в примечание. Иначе по ним нельзя фильтровать.
  • Источник и UTM — из start-параметра deep link (t.me/bot?start=ads_spring). Сохраните его при первом входе и передайте в сделку.
  • Воронка и этап — заявки из бота ставьте в отдельный этап или воронку, чтобы менеджер видел их сразу.

ID пользовательских полей в amoCRM и коды полей в Битрикс24 разные в каждом аккаунте. Храните их в конфиге, а не в коде.

Как не плодить дубли

  1. Ищите контакт перед созданием: по Telegram ID в вашей базе, затем по телефону в CRM.
  2. Нашли — привязывайте новую сделку к существующему контакту. Если по клиенту уже есть открытая сделка, лучше добавить в нее примечание или задачу, чем создавать новую.
  3. Храните связку telegram_id → contact_id, deal_id у себя. Это быстрее, чем каждый раз искать в CRM.
  4. Делайте отправку идемпотентной: повторное нажатие «Отправить» или повтор запроса после таймаута не должен создавать вторую сделку. Помогает статус заявки в вашей базе.
  5. Нормализуйте телефоны: 90 123 45 67 и +998901234567 для CRM — разные строки.

Надежность

  • Отправляйте данные в CRM через очередь: если API недоступно или вы уперлись в лимит запросов, заявка не потеряется и уйдет позже.
  • Логируйте ответы CRM с ID созданных сущностей.
  • Продублируйте важные заявки в рабочий чат менеджеров на случай сбоя интеграции.
  • Обновляйте токены заранее: у OAuth-токенов amoCRM ограниченный срок жизни.

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

Скорее всего, API. Коннектор CRM обычно забирает обновления бота на себя, и ваша логика перестанет их получать. Через API вы сохраняете сценарий и передаете в CRM только результат.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.