Кнопки в сообщениях

Кнопки позволяют добавить к сообщению бота интерактивные элементы: ссылки для перехода на внешние ресурсы и кнопки действий для обработки на сервере. Кнопки располагаются под текстом сообщения в виде строк — каждая строка полностью занимается вложенными в неё кнопками.

Как это работает

Создайте бота

Перейдите в Автоматизации > Интеграции > Чат-боты и Вебхуки и создайте бота. Подробнее — в разделе Боты.

Отправьте сообщение с кнопками

Используйте метод POSTНовое сообщение с полем buttons — массив строк, каждая из которых содержит массив кнопок.

Настройте исходящий вебхук

Для обработки Data-кнопок укажите Webhook URL в настройках бота на вкладке Исходящий Webhook и включите событие Нажатие кнопок. Подробнее — в разделе Исходящие вебхуки.

Обработайте нажатие

При нажатии Data-кнопки бот получает вебхук с данными кнопки. Обработайте событие и дайте обратную связь — отредактируйте сообщение, отправьте новое или откройте модальную форму.

Типы кнопок

Сообщение от бота с кнопками

URL-кнопки

URL-кнопка перенаправляет пользователя по указанной ссылке. При нажатии отображается модальное окно с подтверждением перехода.

{  "text": "Все мои проекты",  "url": "https://projects.com/list"}

Подтверждение перехода по ссылке

Data-кнопки

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

{  "text": "👍 Согласиться",  "data": "vote_yes"}

Отправка кнопок

Для отправки используйте метод POSTНовое сообщение с полем buttons. Поле представляет собой массив строк, каждая из которых содержит массив кнопок. В одной строке можно комбинировать URL-кнопки и Data-кнопки.

Сообщение с кнопками
pachca messages create \  --entity-type=discussion \  --entity-id=334 \  --content="Вчера мы продали 756 футболок (что на 10% больше, чем в прошлое воскресенье)" \  --files='[{"key":"attaches/files/93746/e354fd79-4f3e-4b5a-9c8d-1a2b3c4d5e6f/logo.png","name":"logo.png","file_type":"image","size":12345,"width":800,"height":600}]' \  --buttons='[[{"text":"Подробнее","url":"https://example.com/details"},{"text":"Отлично!","data":"awesome"}]]' \  --parent-message-id=194270 \  --display-avatar-url=https://example.com/avatar.png \  --display-name="Бот Поддержки" \  --no-skip-invite-mentions \  --no-link-preview \  --json \  --token YOUR_ACCESS_TOKEN

Метод PUTРедактирование сообщения также поддерживает поле buttons. Для удаления всех кнопок передайте пустой массив [].

Обработка нажатий

Для получения событий о нажатиях Data-кнопок настройте исходящий вебхук и включите событие Нажатие кнопок.

При нажатии кнопки бот получает вебхук:

ButtonWebhookPayloadobject

После получения события вы можете:

Ограничения

  • Максимальное количество кнопок в строке — 8
  • Максимальное число кнопок у сообщения — 100
  • Максимальная длина text на кнопке — 255 символов
  • Максимальная длина data у кнопки — 255 символов