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

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

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

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

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

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

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

Используйте метод 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-кнопки.

Сообщение с кнопками
curl "https://api.pachca.com/api/shared/v1/messages" \  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \  -H "Content-Type: application/json" \  -d '{  "message": {    "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": "Бот Поддержки",    "skip_invite_mentions": false,    "link_preview": false  }}'

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

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

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

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

ButtonWebhookPayloadobject

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

Ограничения

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