Как подключить Telegram-бота к amoCRM или Битрикс24
Практика4 минРедакция Innovialabs
Коротко
Если нужна переписка менеджера с клиентом прямо из 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 разные в каждом аккаунте. Храните их в конфиге, а не в коде.
Как не плодить дубли
- Ищите контакт перед созданием: по Telegram ID в вашей базе, затем по телефону в CRM.
- Нашли — привязывайте новую сделку к существующему контакту. Если по клиенту уже есть открытая сделка, лучше добавить в нее примечание или задачу, чем создавать новую.
- Храните связку
telegram_id → contact_id, deal_idу себя. Это быстрее, чем каждый раз искать в CRM. - Делайте отправку идемпотентной: повторное нажатие «Отправить» или повтор запроса после таймаута не должен создавать вторую сделку. Помогает статус заявки в вашей базе.
- Нормализуйте телефоны:
90 123 45 67и+998901234567для CRM — разные строки.
Надежность
- Отправляйте данные в CRM через очередь: если API недоступно или вы уперлись в лимит запросов, заявка не потеряется и уйдет позже.
- Логируйте ответы CRM с ID созданных сущностей.
- Продублируйте важные заявки в рабочий чат менеджеров на случай сбоя интеграции.
- Обновляйте токены заранее: у OAuth-токенов amoCRM ограниченный срок жизни.