Открыть сервис

KeyboardButton

KeyboardButton — это элемент интерфейса, используемый в ботах (программных роботах) мессенджеров, в частности в Telegram, для создания виртуальных клавиатур, которые отображаются пользователю в виде кнопок. Каждая кнопка представляет собой команду, запрос или действие, которое пользователь может инициировать нажатием. KeyboardButton является частью системы инлайн-клавиатур (inline keyboards) или обычных клавиатур (reply keyboards), предоставляя альтернативу текстовому вводу.

История и происхождение

Концепция кнопок как элементов управления в интерфейсах восходит к ранним графическим пользовательским интерфейсам (GUI) 1970-х годов, но применительно к ботам мессенджеров она получила развитие с появлением Telegram Bot API в 2015 году. Telegram, разработанный братьями Павлом и Николаем Дуровыми, стал одним из первых мессенджеров, предоставивших разработчикам возможность создавать интерактивные кнопки для ботов. KeyboardButton был введён как часть структуры данных, позволяющей ботам отправлять пользователю клавиатуры с текстовыми кнопками. Впоследствии аналогичные функции появились в других мессенджерах, таких как VK (социальная сеть, принадлежит компании VK, зарегистрированной в РФ), WhatsApp (принадлежит Meta, признана экстремистской и запрещена в РФ) и Discord.

Классификация и виды

KeyboardButton в Telegram Bot API делится на два основных типа в зависимости от контекста использования:

  • ReplyKeyboardMarkup — клавиатура, которая заменяет стандартное поле ввода текста. Кнопки в ней представляют собой текстовые строки, которые при нажатии отправляются боту как обычное сообщение. Этот тип используется для упрощения навигации, выбора опций или ввода команд без необходимости печатать текст.
  • InlineKeyboardMarkup — инлайн-клавиатура, которая прикрепляется к конкретному сообщению. Кнопки в ней могут содержать текст, URL-ссылки, callback-данные (для обратного вызова боту) или запросы на отправку геолокации, контакта или опроса. Этот тип позволяет выполнять действия без отправки сообщения в чат.

Подтипы KeyboardButton

В рамках Telegram Bot API выделяются следующие подтипы кнопок, определяемые полем type:

  • KeyboardButton — базовая текстовая кнопка для reply-клавиатур. При нажатии отправляет текст боту.
  • KeyboardButtonPollType — кнопка для создания опроса (викторины) с заданным типом (quiz или regular).
  • KeyboardButtonRequestUser — кнопка, запрашивающая у пользователя выбор другого пользователя из чата (доступна в группах).
  • KeyboardButtonRequestChat — кнопка, запрашивающая выбор чата (группы или канала).
  • InlineKeyboardButton — кнопка для инлайн-клавиатур, поддерживающая поля url, callback_data, switch_inline_query, login_url и другие.

Устройство и характеристики

KeyboardButton в Telegram Bot API реализован как объект JSON, передаваемый в методах sendMessage, editMessageReplyMarkup и других. Основные поля объекта:

  • text (строка) — отображаемый текст на кнопке.
  • request_contact (логическое) — запрос номера телефона пользователя.
  • request_location (логическое) — запрос геолокации пользователя.
  • request_poll (объект) — запрос создания опроса.
  • web_app (объект) — открытие Web App (мини-приложения, работающего внутри Telegram).

Для инлайн-кнопок добавляются поля:

  • url — ссылка на внешний ресурс.
  • callback_data — данные, возвращаемые боту при нажатии.
  • switch_inline_query — переключение на инлайн-режим.
  • login_urlавторизация через Telegram.

Характеристики кнопок включают ограничения: максимальная длина текста — 64 символа для reply-кнопок и 256 символов для инлайн-кнопок (в зависимости от версии API). Количество кнопок на клавиатуре ограничено — до 100 кнопок в одном ряду и до 12 рядов (для reply-клавиатур).

Применение и значение

KeyboardButton широко используется в разработке ботов для автоматизации взаимодействия с пользователями. Основные области применения:

  • Навигация по меню — боты для заказа товаров, услуг, бронирования (например, боты для доставки еды, такси, гостиниц).
  • Сбор данных — запрос контакта или геолокации для персонализации сервиса (например, боты для регистрации, поиска ближайших объектов).
  • Интерактивные игры — кнопки для выбора вариантов ответов в викторинах или квестах.
  • Управление подписками — кнопки для подписки на каналы, отписки, настройки уведомлений.
  • Интеграция с внешними сервисами — кнопки с URL-ссылками для перехода на сайты, оплаты через платёжные системы (например, ЮKassa, Сбербанк Онлайн).

В России KeyboardButton активно применяется в ботах для государственных услуг (например, боты МФЦ, Госуслуг), в банковских приложениях (Сбербанк, Т-Банк) и в коммерческих сервисах (Яндекс.Еда, Ozon). В 2024 году Telegram остаётся одним из самых популярных мессенджеров в РФ, что стимулирует развитие ботов с клавиатурами.

Примеры использования

Пример 1: Reply-клавиатура для выбора опции

Бот для заказа пиццы отправляет клавиатуру с кнопками:

  • «Маргарита»
  • «Пепперони»
  • «Четыре сыра»
  • «Назад»

При нажатии на кнопку «Маргарита» бот получает текст «Маргарита» и обрабатывает заказ.

Пример 2: Инлайн-клавиатура с callback-данными

Бот для викторины отправляет сообщение с вопросом и кнопками:

  • «Вариант А» (callback_data: «answer_a»)
  • «Вариант Б» (callback_data: «answer_b»)
  • «Вариант В» (callback_data: «answer_c»)

При нажатии бот получает callback_data и проверяет правильность ответа.

Пример 3: Кнопка с запросом контакта

Бот для регистрации отправляет кнопку «Поделиться номером телефона» с полем request_contact: true. При нажатии пользователь подтверждает отправку своего номера, и бот получает контактные данные.

Интересные факты

  • KeyboardButton в Telegram поддерживает эмодзи в тексте кнопок, что позволяет визуально улучшить интерфейс.
  • В 2023 году Telegram Bot API добавил поддержку Web Apps, что позволяет кнопкам открывать полноценные веб-приложения внутри мессенджера.
  • В России разработка ботов с KeyboardButton регулируется Федеральным законом «О персональных данных» (152-ФЗ) при сборе контактных данных или геолокации.
  • В VK Bot API (социальная сеть, принадлежит компании VK, зарегистрированной в РФ) также реализованы аналогичные кнопки, но с отличиями в структуре JSON и ограничениях.

Критика и ограничения

Основные недостатки KeyboardButton включают:

  • Ограниченная длина текста — 64 символа для reply-кнопок может быть недостаточно для описательных опций.
  • Отсутствие поддержки мультимедиа — кнопки не могут содержать изображения или видео, только текст.
  • Зависимость от версии API — некоторые функции (например, кнопки запроса пользователя) доступны только в новых версиях Telegram Bot API (начиная с 6.0).
  • Проблемы с юзабилити — на мобильных устройствах клавиатуры могут занимать много места, особенно при большом количестве кнопок.

Источники

  • Telegram Bot API Documentation — официальная документация по объектам KeyboardButton и InlineKeyboardButton.
  • Федеральный закон «О персональных данных» от 27.07.2006 № 152-ФЗ (РФ).
  • Статья «Telegram Bot API: KeyboardButton и InlineKeyboardButton» на сайте Habr (2023).
  • Документация VK Bot API (социальная сеть, принадлежит компании VK, зарегистрированной в РФ) — раздел «Клавиатуры».
  • Обзор возможностей Telegram Bot API 2024 года на сайте Tproger.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →