Перейти к основному содержимому

Поддержка клиентов

Кнопки в Telegram-боте: reply-клавиатура, инлайн-кнопки и запрос телефона или геолокации в одно касание

У Telegram-бота два вида кнопок, и работают они совсем по-разному. Reply-клавиатура отправляет текст и умеет запросить номер телефона или геолокацию; инлайн-кнопки висят под сообщением и открывают ссылки или запускают действия. Разбираем, когда что использовать и как настроить это в MonoChat.

Команда MonoChat Обновлено: 7 мин чтения

На этой странице
  1. Два вида кнопок коротко
  2. Reply-клавиатура: ответы, будто клиент их напечатал
  3. Инлайн-кнопки: действия под сообщением
  4. Что выбрать
  5. Как собрать кнопки Telegram в MonoChat
  6. Пример: бот доставки аптеки
  7. Каких ошибок избегать
  8. Источники

От кнопок зависит, будет ли Telegram-бот похож на толкового продавца или на анкету. Клиент, который может нажать «Где мой заказ» или «Отправить номер», отвечает за секунду. Тот, кому нужно вводить номер заказа, телефон в правильном формате или полный адрес, часто бросает на полпути.

Telegram даёт ботам два очень разных вида кнопок, и путаница между ними — самая частая причина, по которой бот кажется неуклюжим. В этой статье разбираем reply-клавиатуру и инлайн-кнопки, показываем, как одним нажатием запросить номер телефона или геолокацию, и как собрать всё это в MonoChat. Telegram сообщает о более чем 1 миллиарде активных пользователей, и для многих клиентов бот становится первой точкой контакта с вашей компанией.

Два вида кнопок коротко

Reply-клавиатураИнлайн-клавиатура
Где появляетсяВместо клавиатуры клиента, под полем вводаПод конкретным сообщением
Что делает нажатиеОтправляет текст кнопки в чат, как будто его напечаталиПередаёт боту скрытые данные, открывает ссылку или Mini App; в чат ничего не пишется
Может запросить телефон или геолокациюДа (request_contact, request_location), в личных чатахНет
После нажатияМожет скрыться (one_time_keyboard)Остаётся под сообщением
Подходит дляОтветов, которые должны остаться в чате: меню, Да/Нет, отправка контакта или геолокацииДействий над сообщением: ссылки, подтвердить/отменить, выбор из карточки

В Bot API это ReplyKeyboardMarkup с объектами KeyboardButton и InlineKeyboardMarkup с объектами InlineKeyboardButton. Руководство Telegram по ботам формулирует разницу просто: в отличие от reply-клавиатуры, нажатие инлайн-кнопки не отправляет сообщение в чат.

Reply-клавиатура: ответы, будто клиент их напечатал

Reply-клавиатура заменяет буквы на сетку ваших кнопок. Когда клиент нажимает «Часы работы», в чате появляется «Часы работы» от его имени, и бот читает это как обычное сообщение. Поэтому она отлично подходит для меню и коротких ответов: история переписки остаётся понятной, а оператор, открывший диалог позже, видит, что именно выбрал клиент.

Поведение задают несколько параметров:

  • resize_keyboard уменьшает клавиатуру по высоте кнопок. Без него даже две кнопки занимают высоту полной клавиатуры.
  • one_time_keyboard скрывает клавиатуру сразу после нажатия. Её можно вернуть значком в поле ввода, но клиент снова видит буквы.
  • input_field_placeholder показывает подсказку длиной от 1 до 64 символов в поле ввода, например «Выберите вариант».
  • is_persistent оставляет кнопки на экране, даже когда обычная клавиатура скрыта.

Поскольку нажатие отправляет обычный текст, подпись кнопки — это ещё и ключ маршрутизации. Делайте её короткой, уникальной и неизменной: если «Отследить заказ» превратится в «Где моя посылка?», обновите и условие в сценарии, которое ждёт этот текст.

Запрос номера телефона через «Поделиться контактом»

Telegram-бот никогда сам не видит номер клиента. Единственный способ — попросить: кнопка клавиатуры с request_contact, равным true. Когда клиент её нажимает, Telegram отправляет боту его номер в виде контакта. В Bot API отдельно сказано, что это работает только в личных чатах.

Это гораздо надёжнее, чем «введите номер телефона»: не потерян код страны, нет лишних пробелов, и это номер, на который зарегистрирован аккаунт Telegram. Естественный первый шаг, когда клиента нужно связать с заказом, записью или карточкой в CRM.

Две привычки помогают клиенту решиться:

  1. Объясните зачем. «Поделитесь номером, чтобы мы нашли вашу запись» работает лучше, чем голая кнопка. Телефон — персональные данные по законам многих стран, например по Закону Республики Казахстан «О персональных данных и их защите» или по GDPR; цель запроса лучше назвать прямо.
  2. Оставьте другой путь. Не все готовы делиться номером. Примите номер брони или e-mail либо передайте диалог оператору.

Запрос геолокации

request_location работает так же: одно нажатие отправляет текущее местоположение клиента в виде геолокации. Подходит для адреса доставки, ближайшего филиала, выезда мастера или проверки, попадает ли адрес в зону обслуживания. Тоже только в личных чатах, и решает клиент.

Инлайн-кнопки: действия под сообщением

Инлайн-кнопки принадлежат одному сообщению, поэтому уместны, когда выбор касается именно его: «Подтвердить» и «Перенести» под сводкой записи, «Открыть меню» под приветствием ресторана, «Оплатить через Kaspi» под счётом. Чаще всего используют три типа:

  • Callback-кнопки передают боту до 64 байт данных (callback_data). В чате ничего не появляется; что дальше, решает бот.
  • URL-кнопки открывают страницу, например прайс-лист или отслеживание посылки.
  • Кнопки Web App открывают Mini App внутри Telegram, например форму записи или каталог.

Одна деталь сильно влияет на ощущения. После нажатия callback-кнопки Telegram показывает индикатор загрузки, пока бот не вызовет answerCallbackQuery, и просит ботов вызывать его, даже если показывать нечего. Бот, который пропускает этот шаг, оставляет кнопку «в загрузке», и клиент жмёт снова и снова.

О бизнес-аккаунтах Telegram Business. Если подключить бота к аккаунту Telegram Business, чтобы он отвечал в ваших личных чатах, Telegram не поддерживает reply-клавиатуру и кнопки Web App в сообщениях, отправленных от имени этого аккаунта. Они работают в чате с самим ботом — именно так с клиентами общается бот, подключённый по токену из BotFather, как в MonoChat.

Что выбрать

СитуацияИспользуйте
Главное меню: «Цены», «Часы работы», «Связаться с оператором»Reply-клавиатуру (быстрые ответы)
Да/Нет, оценка, выбор времениReply-клавиатуру, скрывающуюся после нажатия
Получить номер телефона клиентаКнопку отправки контакта
Адрес доставки или ближайший филиалКнопку отправки геолокации
Подтвердить или отменить запись из этого сообщенияИнлайн callback-кнопки
Открыть сайт, трекинг или страницу оплатыИнлайн URL-кнопку
Форма или каталог внутри TelegramИнлайн-кнопку Web App

Простое правило: если ответ должен остаться в переписке — reply-клавиатура. Если кнопка действует над сообщением или ведёт за пределы Telegram — инлайн-кнопка.

Как собрать кнопки Telegram в MonoChat

MonoChat подключает вашего бота по токену из BotFather (см. как создать бота и получить токен). С версии 3.8.41 (1 ноября 2026 года) MonoChat отправляет быстрые ответы, запросы геолокации и запросы контактных данных кнопками reply-клавиатуры Telegram, показывает заголовок с изображением, видео или документом в сообщениях с кнопками, отвечает на каждое нажатие, чтобы кнопки больше не зависали, и умеет показывать индикатор набора текста.

1. Быстрые ответы (reply-клавиатура). Добавьте в сценарий узел Отправить сообщение (или создайте одно из Коротких сообщений) и выберите тип Текст. Напишите текст, включите Быстрый ответ и в разделе Кнопки нажмите Добавить для каждой кнопки. Укажите Тип text и впишите подпись для каждого языка, на котором вы работаете. Telegram покажет кнопки под полем ввода, по две в ряд, подогнав размер. Быстрые ответы можно добавить и к сообщениям с изображением, видео и документом.

2. Запросите телефон. Выберите тип Запрос контактных данных и напишите сообщение, например «Чтобы найти ваш заказ, поделитесь, пожалуйста, номером телефона». Telegram покажет кнопку Поделиться контактными данными на языке клиента. После одного нажатия она скрывается, а номер приходит в чат контактом. Быстрый ответ типа user-phone-number делает то же самое внутри меню.

3. Запросите геолокацию. Выберите тип Запрос геолокации. Клиент увидит кнопку Отправить местоположение, а его местоположение придёт сообщением с геолокацией.

4. Инлайн-кнопки. Выберите тип Кнопка. В поле Тип заголовка можно добавить изображение, видео или документ сверху; напишите текст (до 1024 символов) и добавьте кнопки: postback для callback, web-url для ссылки и app-url для Mini App. Подпись — до 20 символов. Нажатие на postback приходит в чат как Ответ кнопкой.

5. Ветвление по ответу. Запустите бот-сценарий событием Получено новое сообщение и включите Это бот?. После вопроса добавьте узел Если с условием Текст сообщения для быстрых ответов или Тип сообщения, чтобы отличить присланный контакт или геолокацию от набранного текста. Клиента, выбравшего «Связаться с оператором», отправьте в узел Назначить диалог.

6. Покажите, что вы печатаете. В настройках канала включите Включить индикатор набора текста. Клиент увидит «печатает…», пока оператор набирает ответ и пока ИИ-узел в сценарии готовит ответ; при загрузке изображения или документа Telegram покажет, что отправляется фото или файл.

Каждый диалог, каждое нажатие и каждый присланный контакт попадают в те же общие входящие, что и переписка в WhatsApp, Instagram и Messenger, так что оператор, принявший диалог, видит, что выбрал клиент.

Пример: бот доставки аптеки

Клиент: /start Бот: Здравствуйте, это аптека «Достар» в Алматы. Чем можем помочь? (кнопки: Доставка на дом · Часы работы · Спросить фармацевта) Клиент: Доставка на дом Бот: Поделитесь, пожалуйста, номером, чтобы мы нашли ваш рецепт. (кнопка: Поделиться контактными данными) Клиент: (отправляет контакт) Бот: Спасибо. Куда доставить? (кнопка: Отправить местоположение) Клиент: (отправляет геолокацию) Бот: Привезём сегодня с 16:00 до 18:00. (инлайн-кнопки: Подтвердить · Изменить время)

Три reply-клавиатуры собирают ответы в чате, одна инлайн-клавиатура подтверждает итог. «Спросить фармацевта» сразу ведёт к человеку.

Каких ошибок избегать

  • Слишком много кнопок. От двух до шести вариантов на клавиатуру легко читать с телефона. Длинные меню лучше вынести в Mini App или на второй шаг.
  • Запрос номера с порога. Просите, когда клиент понимает зачем.
  • Клавиатура, которая не исчезает. Клиенту кажется, что писать нельзя. Для разовых вопросов используйте одноразовую клавиатуру.
  • Молчащие кнопки. Каждое нажатие заслуживает ответа, хотя бы «Принято, секунду».
  • Нет пути к человеку. Всегда оставляйте «Связаться с оператором». В статье Telegram для бизнеса мы разбираем передачу диалога и рабочие часы.

Если вы работаете и с WhatsApp, идеи те же, но ограничения другие: см. статью об интерактивных сообщениях WhatsApp. Чтобы добавить ИИ-ответы между кнопками, прочитайте, как создать ИИ-бота в Telegram.

Начните бесплатно на app.monochat.ai и подключите Telegram-бота за несколько минут.

Источники

Вопросы и ответы

Частые вопросы

Чем reply-клавиатура отличается от инлайн-клавиатуры в Telegram?

Reply-клавиатура заменяет обычную клавиатуру клиента вашими кнопками, и нажатие отправляет текст кнопки в чат, как будто клиент его напечатал. Инлайн-клавиатура прикреплена под одним сообщением; нажатие передаёт боту скрытые данные или открывает ссылку либо Mini App, а в чате ничего нового не появляется.

Как Telegram-бот может получить номер телефона клиента?

Только если клиент сам им поделится. Боту нужно отправить кнопку клавиатуры с request_contact; когда клиент её нажмёт, Telegram передаст номер боту в виде контакта. В MonoChat для этого достаточно выбрать тип сообщения Запрос контактных данных: клиент увидит кнопку Поделиться контактными данными на своём языке.

Можно ли запросить телефон или геолокацию инлайн-кнопкой?

Нет. В Bot API поля request_contact и request_location есть только у кнопок reply-клавиатуры (KeyboardButton) и работают только в личных чатах с ботом. Инлайн-кнопки передают callback-данные, открывают URL или запускают Mini App.

Почему кнопка в Telegram продолжает крутить загрузку?

После нажатия callback-кнопки Telegram показывает индикатор загрузки, пока бот не вызовет answerCallbackQuery. Если бот не отвечает, кнопка выглядит зависшей. Начиная с MonoChat 3.8.41 каждое нажатие получает ответ: индикатор пропадает, а нажатие приходит в чат как Ответ кнопкой.

Нужно ли программировать, чтобы добавить кнопки в Telegram-бота?

Нет. Подключите токен из BotFather к MonoChat и соберите сообщения в узле Отправить сообщение или в коротких сообщениях: быстрые ответы, сообщения типа Кнопка с инлайн-кнопками, Запрос геолокации и Запрос контактных данных. Дальше сценарии ведут клиента по нажатой кнопке.

Похожие руководства

Продолжайте читать по этой теме.

Первый месяц Growth за наш счёт

Работайте с WhatsApp, Instagram и Messenger из одних входящих

Начните бесплатно с MonoChat: общие входящие команды, ИИ-ассистенты, шаблоны и кампании на официальных API Meta.

Один код на компанию • 30 дней на активацию • Карта не нужна

150 $ для старта.

Получить