Кнопки в боте MAX: клавиатура, callback и ссылка

Как спроектировать кнопки бота MAX, разделить callback и ссылочные действия, проверить контекст, повторы, безопасность и доступность.

18 октября 2026 11 мин чтения
Callback и ссылочные кнопки бота MAX
Callback и ссылочные кнопки бота MAX

Коротко. Кнопка должна однозначно сообщать действие и передавать обработчику минимальный безопасный контекст. Ссылку используют для перехода, callback — для действия внутри сценария, а повторное нажатие и устаревшее сообщение обрабатывают как штатные случаи.

Клавиатура сокращает путь и число ошибок ввода, но добавляет состояние. Старую кнопку могут нажать через неделю, одно нажатие может прийти повторно, а подпись не является надёжным идентификатором действия. Поэтому внешний вид и протокол проектируют вместе.

Материал посвящён типам кнопок и обработке нажатия. Текстовые команды и меню рассматриваются в отдельной инструкции, а весь цикл разработки — в гайде по созданию бота MAX.

Какие задачи решает кнопка

Кнопка выбирает вариант, подтверждает действие, меняет страницу или открывает внешний ресурс. Не используйте один элемент сразу для нескольких результатов.

  • Подпись описывает результат: «Выбрать тариф», а не «Далее» без контекста.
  • Одно нажатие запускает одно логическое действие.
  • Опасное изменение требует дополнительного подтверждения.
  • Переход наружу заметно отличается от внутреннего выбора.
  • У пользователя остаётся путь назад или отмены.

Этап «Какие задачи решает кнопка» разберите на одном реальном сценарии, а не на абстрактном примере. Для темы «кнопки в боте MAX» запишите входные данные, ожидаемое действие, успешный итог и варианты ошибки. Это делает проверку воспроизводимой: другой участник команды сможет пройти тот же маршрут и получить сопоставимый результат.

Точные типы кнопок, ограничения клавиатуры, имена полей и доступность callback проверяйте в актуальной официальной документации MAX; не переносите схему другой платформы без проверки. Результат этапа «Какие задачи решает кнопка» зафиксируйте снимком или записью в журнале: что проверяли, какая версия использовалась, кто отвечал и когда нужен следующий пересмотр. Соседний процесс раскрывает материал «команды бота MAX»; здесь сохраняйте границу и не подменяйте им основную задачу.

Проверяемый результат. Для каждого шага по теме «кнопки в боте MAX» укажите наблюдаемое событие, а не впечатление исполнителя. На этапе «Какие задачи решает кнопка» зафиксируйте результат отдельно.

Чем callback отличается от ссылки

Callback передаёт боту событие для обработки, а ссылка открывает адрес. Эти механики различаются риском, состоянием и способом проверки успеха.

ПроверкаХороший признакСигнал проблемы
Callback подходит для выбора внутри текущего сценарияРезультат можно повторитьУсловие осталось неявным
Ссылка нужна для сайта или другого разрешённого ресурсаЕсть наблюдаемое событиеУспех оценивают на глаз
Не помещайте секреты и персональные данные в URLНазначен владелецОшибка никому не принадлежит
  • Callback подходит для выбора внутри текущего сценария.
  • Ссылка нужна для сайта или другого разрешённого ресурса.
  • Не помещайте секреты и персональные данные в URL.
  • Не считайте открытие ссылки завершённой бизнес-операцией.
  • Точный набор типов сверяйте с документацией MAX.

Этап «Чем callback отличается от ссылки» разберите на одном реальном сценарии, а не на абстрактном примере. Для темы «кнопки в боте MAX» запишите входные данные, ожидаемое действие, успешный итог и варианты ошибки. Это делает проверку воспроизводимой: другой участник команды сможет пройти тот же маршрут и получить сопоставимый результат.

Точные типы кнопок, ограничения клавиатуры, имена полей и доступность callback проверяйте в актуальной официальной документации MAX; не переносите схему другой платформы без проверки. Результат этапа «Чем callback отличается от ссылки» зафиксируйте снимком или записью в журнале: что проверяли, какая версия использовалась, кто отвечал и когда нужен следующий пересмотр. Соседний процесс раскрывает материал «создание бота MAX»; здесь сохраняйте границу и не подменяйте им основную задачу.

Безопасная граница. Точные типы кнопок, ограничения клавиатуры, имена полей и доступность callback проверяйте в актуальной официальной документации MAX; не переносите схему другой платформы без проверки. На этапе «Чем callback отличается от ссылки» зафиксируйте результат отдельно.

Как спроектировать клавиатуру

Сначала нарисуйте дерево решений, затем оставьте на экране только варианты текущего шага. Большое меню повышает вероятность случайного выбора.

  • Главное действие помещайте первым по логике чтения.
  • Соседние подписи должны различаться с первых слов.
  • Не полагайтесь только на цвет, эмодзи или положение.
  • Соблюдайте одинаковый порядок повторяющихся действий.
  • Проверьте перенос текста на узком экране.

Этап «Как спроектировать клавиатуру» разберите на одном реальном сценарии, а не на абстрактном примере. Для темы «кнопки в боте MAX» запишите входные данные, ожидаемое действие, успешный итог и варианты ошибки. Это делает проверку воспроизводимой: другой участник команды сможет пройти тот же маршрут и получить сопоставимый результат.

Точные типы кнопок, ограничения клавиатуры, имена полей и доступность callback проверяйте в актуальной официальной документации MAX; не переносите схему другой платформы без проверки. Результат этапа «Как спроектировать клавиатуру» зафиксируйте снимком или записью в журнале: что проверяли, какая версия использовалась, кто отвечал и когда нужен следующий пересмотр. Соседний процесс раскрывает материал «боты в MAX»; здесь сохраняйте границу и не подменяйте им основную задачу.

Что передавать в payload

Полезная нагрузка содержит устойчивый код действия и минимальные ссылки на состояние, но не доверенные права и не секреты.

  • Используйте короткий версионируемый идентификатор действия.
  • Сервер повторно получает объект по внутреннему ID.
  • Не передавайте цену как единственный источник истины.
  • Подписывайте или проверяйте чувствительный контекст на сервере.
  • Отвергайте неизвестную версию безопасным ответом.

Этап «Что передавать в payload» разберите на одном реальном сценарии, а не на абстрактном примере. Для темы «кнопки в боте MAX» запишите входные данные, ожидаемое действие, успешный итог и варианты ошибки. Это делает проверку воспроизводимой: другой участник команды сможет пройти тот же маршрут и получить сопоставимый результат.

Точные типы кнопок, ограничения клавиатуры, имена полей и доступность callback проверяйте в актуальной официальной документации MAX; не переносите схему другой платформы без проверки. Результат этапа «Что передавать в payload» зафиксируйте снимком или записью в журнале: что проверяли, какая версия использовалась, кто отвечал и когда нужен следующий пересмотр. Соседний процесс раскрывает материал «чат-бот для бизнеса»; здесь сохраняйте границу и не подменяйте им основную задачу.

Как обработать нажатие

Обработчик проверяет событие, пользователя, чат, состояние и допустимость перехода до изменения данных.

  • Убедитесь, что пришёл ожидаемый тип события.
  • Свяжите нажатие с тем пользователем и объектом, которому оно доступно.
  • Проверьте срок и текущий шаг сценария.
  • Зафиксируйте ключ операции перед изменением.
  • Верните понятный результат или восстановление.

Этап «Как обработать нажатие» разберите на одном реальном сценарии, а не на абстрактном примере. Для темы «кнопки в боте MAX» запишите входные данные, ожидаемое действие, успешный итог и варианты ошибки. Это делает проверку воспроизводимой: другой участник команды сможет пройти тот же маршрут и получить сопоставимый результат.

Точные типы кнопок, ограничения клавиатуры, имена полей и доступность callback проверяйте в актуальной официальной документации MAX; не переносите схему другой платформы без проверки. Результат этапа «Как обработать нажатие» зафиксируйте снимком или записью в журнале: что проверяли, какая версия использовалась, кто отвечал и когда нужен следующий пересмотр. Соседний процесс раскрывает материал «конструкторы ботов»; здесь сохраняйте границу и не подменяйте им основную задачу.

Как защититься от двойного нажатия

Сеть и пользователь могут повторить действие. Отключение кнопки в интерфейсе помогает, но серверная идемпотентность остаётся обязательной.

ПроверкаХороший признакСигнал проблемы
Сформируйте уникальный ключ операцииРезультат можно повторитьУсловие осталось неявным
Повтор возвращает прежний результат или статусЕсть наблюдаемое событиеУспех оценивают на глаз
Не создавайте вторую оплату, заявку или записьНазначен владелецОшибка никому не принадлежит
  • Сформируйте уникальный ключ операции.
  • Повтор возвращает прежний результат или статус.
  • Не создавайте вторую оплату, заявку или запись.
  • Блокируйте конкурирующие изменения атомарно.
  • Отличайте повтор от осознанного нового действия.

Этап «Как защититься от двойного нажатия» разберите на одном реальном сценарии, а не на абстрактном примере. Для темы «кнопки в боте MAX» запишите входные данные, ожидаемое действие, успешный итог и варианты ошибки. Это делает проверку воспроизводимой: другой участник команды сможет пройти тот же маршрут и получить сопоставимый результат.

Точные типы кнопок, ограничения клавиатуры, имена полей и доступность callback проверяйте в актуальной официальной документации MAX; не переносите схему другой платформы без проверки. Результат этапа «Как защититься от двойного нажатия» зафиксируйте снимком или записью в журнале: что проверяли, какая версия использовалась, кто отвечал и когда нужен следующий пересмотр. Соседний процесс раскрывает материал «поиск бота в MAX»; здесь сохраняйте границу и не подменяйте им основную задачу.

Что делать с устаревшей кнопкой

Сообщение остаётся в истории после изменения цены, статуса заказа или версии сценария. Нажатие нужно проверить заново.

  • Храните срок действия там, где он нужен.
  • Проверяйте текущее состояние объекта на сервере.
  • Не исполняйте старое обещание автоматически.
  • Предлагайте открыть актуальное меню.
  • Не удаляйте диагностический след устаревшего события.

Этап «Что делать с устаревшей кнопкой» разберите на одном реальном сценарии, а не на абстрактном примере. Для темы «кнопки в боте MAX» запишите входные данные, ожидаемое действие, успешный итог и варианты ошибки. Это делает проверку воспроизводимой: другой участник команды сможет пройти тот же маршрут и получить сопоставимый результат.

Точные типы кнопок, ограничения клавиатуры, имена полей и доступность callback проверяйте в актуальной официальной документации MAX; не переносите схему другой платформы без проверки. Результат этапа «Что делать с устаревшей кнопкой» зафиксируйте снимком или записью в журнале: что проверяли, какая версия использовалась, кто отвечал и когда нужен следующий пересмотр. Соседний процесс раскрывает материал «команды бота MAX»; здесь сохраняйте границу и не подменяйте им основную задачу.

Как безопасно открывать ссылки

Ссылочная кнопка должна вести на ожидаемый HTTPS-адрес и продолжать обещанный контекст.

  • Используйте разрешённые домены и нормализуйте URL.
  • Не позволяйте пользовательскому вводу подменить домен.
  • Передавайте только безопасные метки аналитики.
  • Покажите, если действие покидает чат.
  • Проверьте мобильную страницу и возврат в MAX.

Этап «Как безопасно открывать ссылки» разберите на одном реальном сценарии, а не на абстрактном примере. Для темы «кнопки в боте MAX» запишите входные данные, ожидаемое действие, успешный итог и варианты ошибки. Это делает проверку воспроизводимой: другой участник команды сможет пройти тот же маршрут и получить сопоставимый результат.

Точные типы кнопок, ограничения клавиатуры, имена полей и доступность callback проверяйте в актуальной официальной документации MAX; не переносите схему другой платформы без проверки. Результат этапа «Как безопасно открывать ссылки» зафиксируйте снимком или записью в журнале: что проверяли, какая версия использовалась, кто отвечал и когда нужен следующий пересмотр. Соседний процесс раскрывает материал «создание бота MAX»; здесь сохраняйте границу и не подменяйте им основную задачу.

Как сделать кнопки доступными

Понятная подпись важнее декоративного символа. Элемент должен оставаться ясным при переносе, масштабировании и без цветового различия.

ПроверкаХороший признакСигнал проблемы
Начинайте подпись со смыслового словаРезультат можно повторитьУсловие осталось неявным
Не используйте одинаковые эмодзи как единственное отличиеЕсть наблюдаемое событиеУспех оценивают на глаз
Избегайте слишком длинных рядовНазначен владелецОшибка никому не принадлежит
  • Начинайте подпись со смыслового слова.
  • Не используйте одинаковые эмодзи как единственное отличие.
  • Избегайте слишком длинных рядов.
  • Сообщение перед клавиатурой объясняет выбор.
  • После нажатия текстом подтвердите результат.

Этап «Как сделать кнопки доступными» разберите на одном реальном сценарии, а не на абстрактном примере. Для темы «кнопки в боте MAX» запишите входные данные, ожидаемое действие, успешный итог и варианты ошибки. Это делает проверку воспроизводимой: другой участник команды сможет пройти тот же маршрут и получить сопоставимый результат.

Точные типы кнопок, ограничения клавиатуры, имена полей и доступность callback проверяйте в актуальной официальной документации MAX; не переносите схему другой платформы без проверки. Результат этапа «Как сделать кнопки доступными» зафиксируйте снимком или записью в журнале: что проверяли, какая версия использовалась, кто отвечал и когда нужен следующий пересмотр. Соседний процесс раскрывает материал «боты в MAX»; здесь сохраняйте границу и не подменяйте им основную задачу.

Как тестировать клавиатуру

Матрица испытаний покрывает каждый тип действия, роль, повтор, срок и отказ внешней системы.

  • Нажмите все кнопки по одному разу и повторно.
  • Откройте старое сообщение после смены состояния.
  • Проверьте другого пользователя в том же чате.
  • Имитируйте недоступную зависимость.
  • Сверьте интерфейс на поддерживаемых клиентах.

Этап «Как тестировать клавиатуру» разберите на одном реальном сценарии, а не на абстрактном примере. Для темы «кнопки в боте MAX» запишите входные данные, ожидаемое действие, успешный итог и варианты ошибки. Это делает проверку воспроизводимой: другой участник команды сможет пройти тот же маршрут и получить сопоставимый результат.

Точные типы кнопок, ограничения клавиатуры, имена полей и доступность callback проверяйте в актуальной официальной документации MAX; не переносите схему другой платформы без проверки. Результат этапа «Как тестировать клавиатуру» зафиксируйте снимком или записью в журнале: что проверяли, какая версия использовалась, кто отвечал и когда нужен следующий пересмотр. Соседний процесс раскрывает материал «чат-бот для бизнеса»; здесь сохраняйте границу и не подменяйте им основную задачу.

Чек-лист перед запуском

  • Каждая кнопка выполняет одно действие.
  • Callback и ссылка применяются по назначению.
  • Подписи понятны без цвета и положения.
  • Payload не содержит секретов.
  • Права и состояние проверяются на сервере.
  • Повтор не создаёт дубликат.
  • Устаревшая кнопка ведёт к восстановлению.
  • URL ограничены разрешёнными доменами.
  • Результат подтверждается сообщением.
  • Типы и поля сверены с документацией MAX.

Начинайте клавиатуру с одного решения и двух-трёх вариантов. Надёжность определяет не красота ряда, а то, как сервер ведёт себя при повторе, задержке и изменившемся состоянии.

Остался вопрос по теме статьи? Напишите его в предложку блога — отвечаю лично: задать вопрос в MAX. Частые вопросы разбираю отдельными статьями и присылаю ссылку тому, кто спросил.

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

Какие кнопки бывают в боте MAX?

Доступные типы и ограничения зависят от актуального Bot API; концептуально разделяйте внутреннее callback-действие и переход по ссылке.

Что такое callback кнопки?

Это кнопка, нажатие которой отправляет боту событие с полезной нагрузкой для обработки внутри сценария.

Что хранить в payload?

Короткий код действия, версию и безопасный внутренний идентификатор; права, цену и чувствительные данные сервер проверяет заново.

Как избежать двойной операции?

Используйте ключ идемпотентности и атомарную проверку, чтобы повтор вернул прежний результат.

Что делать со старой кнопкой?

Проверить актуальное состояние и срок, отказать безопасно и предложить открыть новое меню.

Можно ли ставить любую ссылку?

Следует разрешать ожидаемые HTTPS-домены и не давать пользовательскому вводу подменять адрес.

Где смотреть точные поля клавиатуры MAX?

В актуальной официальной документации MAX перед реализацией и релизом.

Темы #MAX#боты
Статья помогла?
Николай Шаповалов Николай Шаповалов Основатель Tapbox, делает сервисы для MAX Канал автора в MAX

Читайте дальше