1С Битрикс · 7 мин чтения

Чат бот Битрикс24: сценарии в открытых линиях через imbot

Чат бот Битрикс24 на связке с imbot решает конкретную задачу: встречает клиента в открытой линии до того, как освободится оператор, отвечает на типовые вопросы и передаёт диалог дальше по сценарию. Я собираю такие сценарии на REST API, без коробочных модулей и без ожидания, пока нужная функция появится в маркетплейс. Ниже разбираю, как бот регистрируется, какие события ловит внутри открытой линии и где заканчивается его зона ответственности.

Как бот попадает в открытые линии через imbot

Открытые линии в Битрикс24 собирают в одну очередь каналы: чат на сайте, коннекторы мессенджеров, ВКонтакте, почту. На каждый входящий диалог назначается ответственный - либо оператор из очереди, либо, если он подключён, бот. Технически бот в этой схеме - обычная сущность imbot, зарегистрированная через REST API, только с типом, который делает её скрытой в общем списке сотрудников и предназначенной именно для автоматической обработки диалогов открытой линии.

Важный момент: imbot не создаёт новый канал связи сам по себе. Он садится поверх уже существующей очереди и получает те же сообщения, что получил бы живой оператор, только через вебхуки вместо интерфейса портала. Если нужно завести полностью новый источник обращений (свой мессенджер, виджет на сайте с нестандартной логикой), это уже задача коннектора открытых линий, а не бота, о ней ниже отдельно.

Для работы бота нужен либо входящий вебхук на тестовом портале, либо локальное/облачное приложение, зарегистрированное в маркетплейсе, если бот должен работать у клиентов, а не только у вас. Для внутренних сценариев одной компании хватает вебхука с правами im и imopenlines.

Регистрация чат-бота для открытых линий Битрикс24

Бот регистрируется методом imbot.register. У метода нет отдельного «режима открытых линий» - это управляется типом бота и тем, что вы подключаете его как ответственного в настройках очереди. Ключевые поля: код бота, тип, три обработчика событий и блок свойств профиля, который клиент увидит в диалоге.

curl -X POST "https://ваш-портал.bitrix24.ru/rest/1/вебхук_код/imbot.register.json" \
  -H "Content-Type: application/json" \
  -d '{
    "CODE": "openlines_helper",
    "TYPE": "H",
    "EVENT_MESSAGE_ADD": "https://example.com/bot/message.php",
    "EVENT_WELCOME_MESSAGE": "https://example.com/bot/welcome.php",
    "EVENT_BOT_DELETE": "https://example.com/bot/delete.php",
    "PROPERTIES": {
      "NAME": "Ассистент",
      "LAST_NAME": "Открытых линий",
      "COLOR": "AZURE",
      "PERSONAL_PHOTO": "https://example.com/bot/avatar.png"
    }
  }'

Тип H (hidden) - это то, что нужно для ботов открытых линий: бот не занимает место в общем списке сотрудников, но полноценно участвует в диалогах. В ответе портал вернёт идентификатор бота, который дальше используется во всех вызовах imbot.message.add от его имени.

После регистрации бота нужно зайти в настройки конкретной очереди открытой линии (Контакт-центр → нужная линия → редактирование) и указать его как обработчика на этапе до подключения оператора. Именно там задаётся, должен ли бот встречать каждое обращение или только те, что приходят вне рабочего времени.

События открытых линий, которые ловит бот

Пока диалогом занимается бот, а не оператор, портал шлёт на обработчики отдельный набор событий - ONIMBOTLINEHELLO, ONIMBOTLINEMESSAGEADD, ONIMBOTLINEWELCOME, ONIMBOTLINESTARTTALK, ONIMBOTLINETRANSFER, ONIMBOTLINEDISCONNECT, ONIMBOTLINECLOSE. Это отдельная ветка от обычных ONIMBOTMESSAGEADD, которые прилетают в личных чатах с ботом вне открытых линий.

На практике логика такая:

  • первое обращение клиента в линию вызывает hello-событие, и это точка входа для приветственного сценария;
  • каждое следующее сообщение клиента, пока диалог у бота, приходит как отдельное line-событие с текстом и идентификатором диалога;
  • как только диалог берёт живой оператор, приходит событие о передаче - и с этого момента бот обязан замолчать по этому чату, иначе получится, что клиенту одновременно отвечают бот и человек;
  • закрытие диалога и разрыв сессии клиента приходят отдельными событиями, на них удобно вешать сброс контекста сценария, если вы храните его на своей стороне.

Обработчик должен отвечать быстро: тяжёлую логику (запрос к CRM, обращение к внешнему ИИ-сервису, генерацию ответа) лучше выносить в очередь и присылать сообщение через imbot.message.add отдельным вызовом, а не пытаться посчитать всё синхронно внутри веб-хука.

Сценарий: приветствие, квалификация и передача оператору

Типовой сценарий, который я собираю чаще всего, выглядит так. Клиент пишет в любой канал линии - на сайте, в мессенджере, неважно. Бот получает hello-событие и отправляет приветствие с кнопками через параметр KEYBOARD в imbot.message.add: «Продажи», «Поддержка действующего проекта», «Бухгалтерия». Нажатие кнопки в интерфейсе Битрикс24 приходит боту как обычное сообщение с привязанной командой, а не как отдельный тип события, поэтому весь роутинг завязан на разбор текста и кода команды внутри line-обработчика.

После выбора темы бот может задать уточняющий вопрос, записать контакт или номер заказа, и на этом его работа заканчивается - он не «передаёт» диалог оператору специальным вызовом API, потому что такого метода нет. Механика проще: бот просто перестаёт отвечать на новые сообщения по этому чату, а сама очередь по своим правилам (по кнопке клиента «позвать оператора» или по таймауту ожидания) отдаёт диалог следующему свободному сотруднику. Вся ценность бота на этом этапе - в контексте, который он успел собрать и оставить в истории диалога, чтобы оператор не переспрашивал то же самое.

Если квалификация должна создавать сделку или лид в CRM, это дополнительный вызов методов crm.lead.add или crm.deal.add из того же обработчика, с привязкой к диалогу через ID контакта открытой линии.

Бесплатный материал

🎁 Полезный скрипт в подарок

Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.

Без спама. Отписка в 1 клик.

Для вопросов, которые не укладываются в дерево кнопок, я подключаю к боту слой на базе языковой модели: свободный текст клиента уходит в ИИ с базой знаний компании, и уже готовый ответ бот показывает через тот же imbot.message.add. Такие интеграции чат-ботов с ИИ я собираю поверх готового imbot-бота, не трогая базовую логику открытой линии: интеграции чат-ботов с ИИ добавляются как ещё один обработчик поверх уже работающего сценария.

Ограничения imbot-ботов и когда нужен коннектор

imbot хорошо решает задачу «встретить, квалифицировать, передать» внутри уже существующей открытой линии. У этого подхода есть границы, и я предпочитаю называть их честно, а не маскировать под «Битрикс24 не умеет».

Во-первых, бот видит диалог только после того, как он попал в очередь конкретной линии - создать свой независимый канал обращений бот не может, для этого используется отдельный механизм коннекторов (imconnector), а не imbot. Во-вторых, если клиент пишет свободным текстом, а не жмёт кнопки, качество сценария целиком зависит от того, что вы поставили за парсингом сообщения: простое совпадение по ключевым словам ловит меньше кейсов, чем связка с языковой моделью. В‑третьих, обработчики событий должны укладываться в разумное время ответа - долгие синхронные операции (запрос к медленному внешнему API, тяжёлый отчёт) стоит переносить в фоновую обработку с последующей отправкой сообщения, иначе бот будет «зависать» в глазах клиента.

Ещё один момент, который часто упускают: если в компании держат контакты клиентов и историю переписки не только в самом Битрикс24, а выгружают куда-то ещё для аналитики бота, площадку для хранения стоит брать с серверами в России - это требование к персональным данным, а не рекомендация для удобства.

Сколько стоит разработка бота для открытых линий

Цена зависит от того, сколько логики зашито в сценарий, а не от количества каналов открытой линии - подключить готового бота к пяти каналам вместо одного почти не увеличивает объём работы, вся сложность в ветвлении диалога и интеграциях.

Сценарий Что делает бот Срок Цена
Приветствие и меню на кнопках Встречает клиента, уточняет тему, оставляет контекст для оператора 5-7 дней от 30 000 ₽
Квалификация с записью в CRM Собирает контакт, создаёт лид или сделку, тегирует диалог 2-3 недели от 40 000 ₽
Ответы на базе ИИ по базе знаний Отвечает свободным текстом, эскалирует сложные вопросы оператору 3-4 недели от 50 000 ₽

Если не уверены, какой из трёх вариантов нужен именно вам, я разбираю сценарий на консультации и говорю сразу, что реально закрыть ботом, а что дешевле оставить оператору - от 3 000 ₽.

Условия и возможности Битрикс24 меняются, поэтому перед запуском я уточняю их у самого сервиса.

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

Чем imbot отличается от коннектора открытых линий?

imbot - это бот-сотрудник, который обрабатывает диалоги внутри уже существующей открытой линии наравне с оператором. Коннектор - это другой механизм, он создаёт сам канал связи (источник обращений), через который сообщения вообще попадают в линию. Для сценариев вроде приветствия и квалификации нужен именно бот, коннектор нужен только если вы подключаете источник обращений, которого ещё нет среди готовых каналов.

Может ли один бот работать сразу в нескольких открытых линиях?

Да, один зарегистрированный imbot можно назначить обработчиком в нескольких очередях одновременно. В коде диалога всегда есть привязка к конкретной линии, поэтому сценарий можно ветвить по ней же - для разных линий показывать разные кнопки меню или разную базу знаний.

Как бот понимает, что диалог уже забрал оператор?

Портал присылает боту отдельное событие о переходе диалога к человеку. После этого события бот должен прекратить отправку сообщений в этот конкретный чат - логика простая, но её обязательно нужно предусмотреть в коде, иначе клиент увидит два параллельных ответа от бота и от оператора.

Нужен ли отдельный сервер для чат-бота на imbot?

Нужен обработчик, доступный по HTTPS и способный быстро отвечать на вебхуки, - это может быть как отдельный сервер, так и serverless-функция или обработчик в существующем бэкенде компании. Для тяжёлой логики (запросы к ИИ, генерация отчётов) требуется отдельная очередь фоновых задач, чтобы не держать вебхук открытым дольше пары секунд.

Есть задача?

Обсудим в мессенджере

Расскажите, что нужно сделать — отвечу в течение 4 часов в рабочее время. Первая консультация бесплатно.

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов куки) с использованием Yandex.Metrika.
Понятно