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

Инлайн-кнопки

В канале Telegram есть возможность добавить инлайн-кнопки. Такие кнопки будут отображаться не под полем ввода, а над.

Возможность добавить инлайн-кнопки есть только в Telegram, другие каналы такую функциональность не поддерживают.

Обычные кнопки располагаются под полем ввода текста («Написать сообщение…»). Количество кнопок в строке определяется автоматически, в зависимости от количества кнопок и объема текста в них. На одном экране может быть не более восьми кнопок:

Инлайн-кнопки располагаются над полем ввода текста:

Как использовать инлайн-кнопки?

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

Есть два способа превратить эти обычные кнопки в инлайн-кнопки.

Добавить на нужный экран кнопку со ссылкой

Чтобы обычные кнопки превратились в Инлайн-кнопки, добавьте на этот же экран хотя бы одну кнопку-ссылку. Например, вы можете ссылку на ваш сайт.

Для этого:

  • нажмите + КНОПКА
  • введите название кнопки и нажмите Enter
  • нажмите на значок ссылки
  • вставьте URL на нужный ресурс
  • нажмите Сохранить

После этого нужно нажать Опубликовать, чтобы изменения пришли в канал. Дождитесь всплывающего сообщения о том, что сценарий был опубликован на канале Telegram.

После публикации снова протестируйте бота. В нашем случае кнопки располагаются на стартовом (самом левом и самом верхнем) экране, поэтому, чтобы проверить, пошлем боту /start.

Добавить «пустую» кнопку

Второй способ подойдет вам, если кнопка-ссылка не подходит для вашего сценария.

  • нажмите + КНОПКА
  • наберите пробел и нажмите Enter. Текст кнопки будет содержать только один символ — пробел
  • нажмите на значок ссылки, вставьте любую ссылку
  • нажмите Сохранить

Нажмите Опубликовать и дождитесь сообщения о публикации в канал.

Затем пройдите ветку заново. Например, пошлите боту /start.

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

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

Вы можете получить текст выбранной инлайн-кнопки в Telegram через переменную $queryText. Для этого после блока с инлайн-кнопками добавьте блок Условия и сохраните значение $queryText в новую переменную $choice через выражение $choice = String($queryText).split(';')[1].

Особенности канала Telegram

Есть некоторые особенности отображения кнопок, которые нужно учитывать.

  1. Не всегда сразу же можно увидеть новый вариант кнопок. Иногда нужно пройти по другой ветке бота, затем послать /start и вернуться на экран с кнопками.

  2. Если у вас есть два экрана, которые идут друг после друга, и на первом экране обычные кнопки, а на втором инлайн-кнопки, то при перехода на экран с Инлайн-кнопками, обычные кнопки не исчезнут.

К примеру, возьмем два таких экрана. На экране, выделенном синим, обычные кнопки. На экране, выделенном зеленым, Инлайн-кнопки.

После нажатия на кнопку «цены» бот перейдет на второй экран, на котором должны отображаться Инлайн-кнопки. Но из-за особенностей канала, обычные кнопки не исчезнут.

Вы можете пользоваться таким поведением, если для вас даже удобно отображать два вида кнопок. Либо, если для вас такое поведение неудобно, разделяйте экраны с обычными кнопками от экранов с Инлайн-кнопками другими экранами текста с интентами вместо кнопок, чтобы не было такой последовательности.