Кнопки в боте MAX: клавиатура, callback и ссылка
Как спроектировать кнопки бота MAX, разделить callback и ссылочные действия, проверить контекст, повторы, безопасность и доступность.
В этой статье
Коротко. Кнопка должна однозначно сообщать действие и передавать обработчику минимальный безопасный контекст. Ссылку используют для перехода, 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: права, события и безопасная настройка
Как выдать боту в MAX минимальные административные права, обработать изменение роли, проверить ограничения и…
-
Команды бота MAX: как добавить меню и обработать команду пользователя
Как спроектировать команды бота MAX, собрать понятное меню, разобрать входящее событие и безопасно проверить сценарий…
-
Модерация чата MAX: роли, антиспам и порядок работы
Как настроить ежедневную модерацию группового чата MAX: роли, правила, антиспам, ссылки, стоп-слова, медленный режим и…