Reply Keyboard Markup
Reply Keyboard Markup — это интерфейсный элемент в мессенджере Telegram, представляющий собой набор настраиваемых кнопок, отображаемых в поле ввода сообщения. Он относится к классу инструментов для создания интерактивных ботов и автоматизации взаимодействия с пользователями. Ключевая особенность Reply Keyboard Markup заключается в том, что кнопки заменяют стандартную клавиатуру устройства, предлагая пользователю заранее заданные варианты ответов, которые отправляются в виде текстовых сообщений при нажатии.
История и происхождение
Reply Keyboard Markup был введён в Telegram Bot API версии 1.0 в 2015 году. Разработчики Telegram, компания Telegram Messenger LLP, создали этот инструмент для упрощения взаимодействия с ботами, особенно на мобильных устройствах, где ввод текста с клавиатуры может быть неудобным. Идея заключалась в том, чтобы предоставить пользователям быстрый и интуитивно понятный способ выбора команд или ответов без необходимости запоминать синтаксис команд. В отличие от Inline Keyboard Markup (кнопки под сообщением), Reply Keyboard Markup привязан к полю ввода и исчезает после отправки сообщения, если не настроено иное.
Устройство и структура
Reply Keyboard Markup формируется в виде JSON-объекта, который бот отправляет в ответ на сообщение пользователя. Основные параметры включают:
- keyboard — массив массивов строк, где каждый внутренний массив представляет собой ряд кнопок. Каждая строка — это текст кнопки.
- resize_keyboard — логическое значение (True/False). Если True, клавиатура автоматически подстраивается под размер кнопок (например, уменьшается, если кнопки короткие). По умолчанию False.
- one_time_keyboard — логическое значение. Если True, клавиатура скрывается после первого нажатия на любую кнопку. По умолчанию False.
- selective — логическое значение. Если True, клавиатура отображается только для определённых пользователей (например, при упоминании @username). По умолчанию False.
- input_field_placeholder — строка, которая отображается в поле ввода, когда клавиатура активна (например, «Выберите опцию»). Доступно с Bot API 5.0.
Пример структуры JSON: ``json { "keyboard": [ ["Кнопка 1", "Кнопка 2"], ["Кнопка 3"] ], "resize_keyboard": true, "one_time_keyboard": true } ``
Виды и настройки
Кнопки с текстом
Самый распространённый тип — обычные текстовые кнопки. При нажатии отправляется текст кнопки как сообщение боту. Текст может содержать эмодзи, но не может быть пустым.
Кнопки с запросом контакта
Кнопка, при нажатии которой бот запрашивает номер телефона пользователя. Для этого в JSON-объекте кнопки используется параметр request_contact: true. Телефон отправляется боту автоматически, если пользователь подтверждает действие.
Кнопки с запросом геолокации
Аналогично, кнопка с параметром request_location: true запрашивает текущие координаты пользователя. Геоданные отправляются боту в виде объекта Location.
Кнопки с запросом опроса
В Bot API 6.0 появилась возможность создавать кнопки, которые при нажатии запускают создание опроса (poll). Для этого используется параметр request_poll: {"type": "quiz"} (или "regular" для обычного опроса).
Применение
Reply Keyboard Markup широко используется в Telegram-ботах для различных целей:
- Навигация и меню — боты для заказа еды, бронирования билетов или услуг предлагают пользователю выбрать категорию или действие.
- Сбор данных — анкеты, опросы, регистрации, где пользователь выбирает один из вариантов.
- Игры и викторины — кнопки для ответов на вопросы, выбора хода в игре.
- Поддержка пользователей — кнопки для быстрого доступа к часто задаваемым вопросам, контактам или инструкциям.
- Автоматизация бизнеса — боты для CRM, уведомлений, управления задачами.
Преимущества и ограничения
Преимущества
- Простота использования — пользователь не вводит текст, а нажимает кнопки.
- Гибкость — можно настроить размер, одноразовость, фильтрацию по пользователям.
- Интеграция с API — поддержка запросов контакта и геолокации расширяет функционал.
- Кроссплатформенность — работает на всех устройствах, где доступен Telegram.
Ограничения
- Максимальный размер — клавиатура не может содержать более 12 кнопок в одном ряду и не более 100 кнопок в общей сложности.
- Только текст — кнопки не могут содержать изображения, иконки или URL-ссылки (для этого используется Inline Keyboard).
- Исчезновение — после отправки сообщения клавиатура может скрыться, если не настроено повторное отображение.
- Отсутствие callback-данных — в отличие от Inline Keyboard, Reply Keyboard не отправляет боту скрытые данные, только текст кнопки.
Примеры использования
Бот-заказ пиццы
Пользователь запускает бота, и тот отправляет Reply Keyboard с кнопками: «Маргарита», «Пепперони», «Гавайская». При нажатии на «Маргарита» бот получает текст «Маргарита» и может предложить следующий шаг (например, выбор размера).
Бот-регистрация
Кнопка «Отправить номер телефона» с request_contact: true позволяет быстро получить контактные данные пользователя без ручного ввода.
Бот-викторина
После вопроса бот отправляет клавиатуру с вариантами ответов (например, «А», «Б», «В»). После выбора клавиатура скрывается (one_time_keyboard: true), и бот отправляет следующий вопрос.
Интересные факты
- Reply Keyboard Markup может быть использован для создания «слепых» кнопок — если текст кнопки состоит из пробелов или невидимых символов (например, Unicode-пробелов), кнопка будет пустой, но функциональной.
- В некоторых ботах Reply Keyboard используется для имитации «голосового управления» — кнопки с текстом «Да» и «Нет» заменяют голосовые команды.
- Разработчики могут комбинировать Reply Keyboard с Inline Keyboard в одном сообщении, но это редкость из-за сложности интерфейса.
Критика и альтернативы
Основная критика Reply Keyboard Markup связана с его ограниченностью по сравнению с Inline Keyboard. Inline Keyboard позволяет встраивать кнопки непосредственно в сообщение, поддерживает callback-данные, URL-ссылки и более гибкую настройку. Reply Keyboard же занимает место в поле ввода и может быть неудобна при длительных диалогах, так как требует повторного отображения. Тем не менее, для простых сценариев (выбор из 2–5 вариантов) Reply Keyboard остаётся эффективным инструментом.
Альтернативой являются:
- Inline Keyboard Markup — для более сложных интерфейсов.
- Команды Telegram — если пользователь знает синтаксис.
- Голосовой ввод — встроенная функция Telegram.
Источники
- Telegram Bot API Documentation (официальная документация Telegram).
- Telegram Bot API Changelog (история версий).
- Раздел «Keyboard Markup» в документации Telegram Bot API.
- Статьи на русскоязычных форумах разработчиков Telegram-ботов (например, Habr, Toster).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →