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

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 →