Боты Яндекс Мессенджера: что умеет Bot API и что нового появилось недавно
Недавно я рассказывала, как собрала AI-helpdesk на базе GLPI и Яндекс Мессенджера. В том проекте Мессенджер стал интерфейсом для ИИ-агента: сотрудник пишет боту обычным сообщением, а дальше система сама работает с запросом и связанными с ним данными.
В процессе разработки я довольно плотно познакомилась с Bot API Яндекс Мессенджера и поняла, что возможностей у него больше, чем может показаться на первый взгляд.
Поэтому решила подробнее разобраться с этой темой и запустить небольшой цикл статей: от возможностей Bot API и создания первого бота до интеграций, автоматизации и ИИ-агентов.
Начну с основного: что сегодня умеют боты Яндекс Мессенджера и что интересного появилось в последнем обновлении Bot API.
Что умеет бот Яндекс Мессенджера
Бот взаимодействует с Мессенджером через Bot API. Подробно про его методы можно изучить в официальной справке Яндекса.
События от пользователей можно получать через webhook или polling, а дальше обрабатывать их в своём приложении или передавать в другие системы.
То есть архитектура может быть совсем простой:
Пользователь → Яндекс Мессенджер → Бот → ваша логика
А может выглядеть гораздо сложнее:
Пользователь → Яндекс Мессенджер → Бот → backend / n8n / другой интеграционный слой → CRM / база данных / API / ИИ
Сам Bot API при этом не диктует, что именно должно происходить после сообщения пользователя.
Отправка сообщений
Самая очевидная возможность — отправлять сообщения. Но здесь тоже есть несколько вариантов.
Бот может:
- отправлять текстовые сообщения;
- форматировать текст;
- отправлять изображения;
- отправлять файлы;
- отправлять несколько изображений одним альбомом;
- отвечать на конкретное сообщение;
- отправлять сообщение в тред;
- пересылать сообщения;
- отправлять сообщение без push-уведомления;
- помечать сообщение как важное.
То есть бот может не просто написать пользователю «Готово», а, например, получить запрос, сформировать результат, приложить файл или несколько изображений и отправить всё это в нужном контексте.
Кнопки
Кнопки в Bot API появились не вчера — старый формат inline-кнопок я, например, уже использовала в своих сценариях.
Сейчас Button и inline_keyboard в документации отмечены как устаревшие, а для новых сценариев используются SuggestButtons.
Кнопка может не только отправить заранее заданный текст. В зависимости от сценария она может открыть ссылку, отправить сообщение или вызвать серверное действие.
То есть кнопка становится не просто элементом интерфейса, а способом запустить бизнес-операцию.
Опросы
Bot API также позволяет работать с опросами: создавать их и получать результаты.
Для корпоративных ботов это может быть простым способом собрать мнение сотрудников прямо в Мессенджере.
Реакции
Есть и отдельный механизм работы с реакциями.
Бот может поставить реакцию на сообщение или убрать свою ранее установленную реакцию.
При этом реакции — это не то же самое, что кнопки для обратной связи.
Кнопка может отправить конкретное действие или сообщение, а реакция является именно реакцией на сообщение.
В API также есть информация о доступных реакциях, поэтому не обязательно вручную угадывать, какие значения поддерживает конкретный чат.
Работа с чатами и участниками
Bot API позволяет работать не только с сообщениями.
Бот может получать информацию о чатах и их участниках, создавать чаты и каналы, добавлять и удалять участников, назначать администраторов. При создании можно также сделать чат публичным и получить ссылку-приглашение.
Есть отдельный метод и для получения информации о самом боте — его ID, логина, имени, webhook и организаций, к которым он подключён.
Что нового в последнем обновлении Bot API
Недавно Яндекс сообщил об обновлении Bot API. Некоторые изменения выглядят небольшими, но для реальных ботов они довольно практичны.
Отдельного полноценного changelog с историей изменений по датам в документации я пока не нашла. Поэтому здесь я не буду придумывать, когда именно появилась каждая функция: перечислю то, что Яндекс указал в последнем обновлении, и добавлю свои наблюдения после тестирования.
Индикатор «бот печатает»
Появился отдельный метод sendTyping. Бот может показать пользователю стандартный индикатор «печатает...», пока обрабатывает запрос.
Лично мне очень не хватало этой функции при создании ИИ-агента.
ИИ может думать заметно дольше обычного бота: ему нужно получить данные, обратиться к инструментам, что-то проанализировать и только потом сформировать ответ.
Если в это время в чате ничего не происходит, для пользователя это выглядит так, будто что-то сломалось.
Поэтому раньше я решала проблему довольно просто: бот отправлял отдельное сообщение вроде «Уже думаю...», а потом возвращал результат.
sendTyping делает это гораздо аккуратнее: пользователь понимает, что запрос принят и бот сейчас работает.
Но во время тестирования я обнаружила важный нюанс.
Индикатор «печатает...» показывается всего несколько секунд.
Поэтому если ИИ продолжает работать дольше, одного вызова недостаточно. Пока идёт обработка запроса, sendTyping приходится периодически отправлять повторно — фактически поддерживать этот индикатор в цикле.
И изменить текст индикатора нельзя: Мессенджер сам показывает стандартное «печатает...».
Если нужно сообщить пользователю именно:
«Создаю заявку...»
или
«Обрабатываю документы...»
то это уже должно быть отдельное сообщение.
Для обычного бота это небольшая деталь.
Для ИИ-агента — вполне важная часть UX.
Action Buttons
Ещё одна возможность, которую я отдельно протестировала, — ActionButtons.
Это кнопки действий под сообщением. Например:
Кнопки можно связать с директивой send_message, чтобы при нажатии пользователь отправлял заранее заданный текст.
В моём случае получилось:
{ "type": "send_message", "text": "👍 Полезно" }
То есть пользователь нажимает кнопку, а бот получает обычное сообщение.
Более сложные действия кнопок
В новой механике кнопки могут использовать разные директивы.
Например, кнопка может:
- открыть URL;
- отправить сообщение;
- вызвать server_action;
- изменить состояние элемента интерфейса.
Особенно интересен server_action.
В этом случае пользователь нажимает кнопку, но отдельное сообщение в чат не отправляется. Вместо этого система получает действие и данные, связанные с ним.
Это уже совсем другой уровень взаимодействия по сравнению с обычной кнопкой-ссылкой.
Файлы до 51 МБ
В обновлении Яндекс также сообщил об увеличении максимального размера одного файла с 20 до 51 МБ.
Кроме того, один и тот же загруженный файл теперь можно использовать в разных сообщениях без повторной загрузки.
Для ботов, которые работают с документами, отчётами и другими файлами, это вполне практичное изменение.
Ограничения
При всех этих возможностях у ботов есть ограничения, которые важно учитывать при проектировании.
- Бот может отправлять сообщения только в те чаты, где он является участником или администратором.
- Бот не может отправлять личные сообщения пользователям, если это запрещено их настройками приватности.
- Бот не может отправлять личные сообщения пользователям за пределами своей организации.
Поэтому недостаточно просто написать логику бота. Нужно ещё понимать, где он имеет право выполнять конкретное действие.
А что дальше?
Самое интересное начинается, когда Bot API становится только частью системы.
Бота можно связать с CRM, базой данных, helpdesk, внутренним сервисом или практически любым внешним API. В качестве связующего слоя можно использовать собственный backend, n8n или другой инструмент автоматизации.
А затем к этой архитектуре можно добавить ИИ.
А если система умеет самостоятельно выбирать инструменты и последовательно выполнять действия, мы уже начинаем говорить об ИИ-агенте.
Но это следующий уровень — и ему я посвящу отдельные статьи.