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 →