Кнопки

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

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

Сначала давайте рассмотрим мессенджеры, которые поддерживают кнопки (Telegram, Viber, Facebook* Messenger, ВКонтакте, Instagram*).

* Принадлежат компании Meta Platforms Inc., деятельность которой признана в России экстремистской и запрещена.

Они поддерживают два типа кнопок: те, что появляются ниже поля ввода сообщения (клавиатурные, или reply), и кнопки в тексте (inline), то есть внутри сообщения.

Как создать кнопку

Кнопки можно создавать двумя способами: используя настройки кнопок в нужном блоке или используя стрелки между блоками. Первый вариант более функционален и удобен в работе.

Чтобы сделать кнопки из блока, откройте нужный блок и выберите раздел Кнопки.

В раскрытом меню расширенных настроек кнопок вы увидите два переключателя:

  • Показать кнопки
  • Показать стрелки как кнопки

Отключите Показать стрелки как кнопки и нажмите + Добавить кнопку.

Полезно знать!

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

Тогда стрелка будет отображаться как клавиатурная кнопка.

Шаг 1. Активируйте чекбокс Показать стрелки как кнопки.

Шаг 2. В настройках стрелки пропишите условие, которое будет отображаться как кнопка, и активируйте чекбокс Отображать как кнопку.

Шаг 3. Протестируйте бота.

Готово! Теперь вы знаете еще один удобный способ работы с кнопками.

После клика на + Добавить кнопку:

В поле Текст пропишите текст, который будет отображаться на кнопке.

Далее выберите функцию кнопки.

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

Подробнее о функциях кнопок рассказано в разделе Функции кнопок ниже.

После этого нажмите Добавить — кнопка появится в настройках блока.

Кнопки могут быть:

  • клавиатурными (исчезают после нажатия или ввода текста);
  • кнопками в тексте (inline), которые не пропадают после нажатия;
  • автоматическими (тип определяется мессенджером).

Бот одинаково реагирует на нажатие всех этих типов кнопок.

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

1. Нажмите + справа от уже созданной кнопки.

Тогда новая кнопка будет расположена в одной строке с первой.

2. Нажмите + Добавить кнопку снизу.

В этом случае новая кнопка будет добавлена строкой ниже.

Кнопки можно менять местами и располагать в одном ряду — просто перетащите кнопку в нужное место.

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

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

Неправильный вариант:

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

Правильный вариант:

Также можно сделать кнопки более заметными с помощью эмодзи.

Пример отображения кнопки с эмодзи в Telegram:

Кнопки со ссылкой

Чтобы бот отправлял пользователям кнопки со ссылкой, при создании (или редактировании) кнопки необходимо:

  1. Установить функцию кнопки По умолчанию.

  1. В поле URL указать:

а) прямую ссылку:

б) переменную, в которой хранится ссылка:

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

Важно!

У каждого мессенджера есть свои особенности.

Например, в Telegram и Instagram* ссылки можно размещать только в кнопках в тексте (inline).

* Instagram принадлежит компании Meta Platforms Inc., деятельность которой признана в России экстремистской и запрещена.


Уведомление о клике

Чтобы отслеживать:

  • перешел ли клиент по ссылке;
  • нажал ли кнопку;
  • настраивать реакцию бота на такие события,

используйте чекбокс С уведомлением о клике в настройках кнопки.

Включите чекбокс, чтобы бот отправлял колбэки (уведомления о событиях), если пользователь нажмет кнопку.

После этого нажмите Изменить или Добавить.

Теперь протестируем работу кнопки.

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

Пока пользователь не нажмет Перейти, колбэк не придет.

Если пользователь действительно перейдет по ссылке, то в разделе Клиенты в диалоге появится колбэк следующего вида:

link_was_pressed #{URL}

где:

  • link_was_pressed — событие (тело колбэка);
  • #{URL} — ссылка, по которой перешел пользователь.

Чтобы настроить реакцию на колбэк, можно использовать один из двух способов.

Вариант 1. Блок с условием

Создайте условный блок и укажите в поле условия нужный колбэк.

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

Можно использовать и любой другой условный блок.

Важно!

В одном проекте допускается не более 500 условных блоков.

Вариант 2. Условие стрелки

Можно прописать колбэк непосредственно в условии стрелки.

В обоих случаях блок будет выполнен только после получения соответствующего колбэка.

Разница заключается в следующем:

  • при использовании стрелки пользователь продолжает движение по воронке;
  • при использовании блока Не состояние пользователь остается в текущем состоянии воронки.

Как задать цвет кнопки

При необходимости можно изменить цвет кнопки.

Эта возможность поддерживается только:

  • ВКонтакте;
  • Viber.

ВКонтакте

Доступно четыре цвета:

  • синий;
  • красный;
  • зеленый;
  • белый.

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

Для выбора цвета нажмите соответствующий квадрат в настройках.

Viber

В Viber можно выбрать любой цвет.

Нажмите на черный квадрат — откроется палитра цветов.


Функции кнопок

Как сделать кнопку «Запросить телефон» (Telegram и Viber)

Работает только в Telegram и Viber.

При создании кнопки выберите функцию Запросить телефон.

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

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

Номер телефона автоматически записывается в переменную phone.


Как сделать кнопку «Оплата»

Кнопка Оплата упрощает работу с подключенными платежными системами и позволяет выдавать ссылку на оплату.

Обратите внимание:

Во многих мессенджерах ссылки можно размещать только в inline-кнопках.

После создания кнопки выберите подходящий тип кнопки в настройках блока.

Кнопка Оплата поддерживается следующими платежными системами:

  • Prodamus
  • Robokassa
  • Tinkoff
  • ЮKassa
  • CloudPayments

В одном блоке можно создать несколько кнопок оплаты для разных платежных систем и разных сумм.

Если платежные системы не подключены к проекту, функция Оплата будет недоступна.

Основные поля кнопки «Оплата»

Текст

Текст, который будет отображаться на кнопке.

Функция

Выберите значение Оплата.

Платежная система

Выберите одну из подключенных платежных систем.

В зависимости от выбранной платежной системы обязательные поля могут отличаться.

Подробные инструкции:

  • Prodamus
  • Robokassa
  • Т-Банк
  • ЮKassa
  • CloudPayments

Обязательными полями являются:

  • Сумма
  • Наименование товара

Сумма

Укажите стоимость товара.

Наименование товара

Укажите название товара, которое увидит пользователь на странице оплаты.

В названии товара нельзя использовать двойные кавычки.

Используйте одинарные кавычки или апостроф.

В зависимости от выбранной платежной системы могут появиться дополнительные разделы:

  • Данные для формирования чека;
  • Дополнительная информация.

Рекомендуется заполнять все обязательные поля, чтобы избежать ошибок формирования ссылки на оплату.

Переменные при использовании кнопки «Оплата»

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

Служебная переменная __payments

В служебную переменную клиента __payments записываются:

  • сумма оплаты;
  • идентификатор созданной ссылки.

Она используется для идентификации webhook-запросов от платежной системы.

Важно!

Служебную переменную __payments нельзя удалять или изменять.

Переменная error_payment_button

Если при формировании ссылки на оплату возникнет ошибка, будет создана переменная клиента error_payment_button.

В нее записывается:

  • текст ошибки;
  • либо ответ платежной системы.

Значения переменных становятся актуальными после перехода пользователя в следующий блок.


Как обработать результат оплаты

Успешный платеж

После успешной оплаты в бот приходит колбэк следующего формата:

ovg58keefc_success 44

где:

  • ovg58keefc — первые 10 символов секретного ключа платежной системы;
  • _success — успешная оплата;
  • 44 — сумма платежа.

Пользователь эти колбэки не видит.

Они отображаются только в разделе Клиенты.

Пример настройки

Шаг 1.

Создайте блок с кнопкой Оплата.

Шаг 2.

В условии стрелки к блоку Успешная оплата укажите соответствующий колбэк.

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

Важно!

Используйте тип проверки:

  • Полное совпадение
  • или По наличию ключевых слов.

Полезно знать

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


Ошибка оплаты

Если платеж завершился ошибкой, бот получит колбэк:

ovg58keefc_fail 44

где:

  • ovg58keefc — первые 10 символов секретного ключа;
  • _fail — ошибка оплаты;
  • 44 — сумма платежа.

Не все платежные системы отправляют колбэк об ошибке оплаты.


Оплачена другая сумма

Если пользователь оплатил сумму, отличающуюся от указанной в ссылке, бот получит колбэк вида:

ovg58keefc_different_amounts 123456

где:

  • ovg58keefc — первые 10 символов секретного ключа;
  • _different_amounts — сумма отличается;
  • 123456 — идентификатор платежа.

Как сделать кнопку «Запросить геолокацию» (ВКонтакте, Telegram и Viber)

Работает во ВКонтакте, Telegram и Viber.

При создании кнопки выберите функцию Запросить геолокацию.

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

Координаты автоматически сохраняются в переменные:

  • latitude
  • longitude

Как создать кнопку «Звонок» (Facebook*)

* Facebook принадлежит компании Meta Platforms Inc., деятельность которой признана в России экстремистской и запрещена.

На данный момент функция работает только в Facebook*.

При создании кнопки выберите функцию Звонок и заполните необходимые поля.


Как создать кнопку «Поделиться» (Telegram)

Работает только в Telegram.

При создании кнопки выберите функцию Поделиться (только Telegram) и заполните необходимые поля.

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

После выбора в диалог будет вставлен текст из поля Передаваемая информация.

Таким способом можно передавать:

  • текст;
  • ссылки;
  • ссылки на сообщения Telegram-каналов.

Видеообзор по созданию кнопки «Поделиться»


Как добавить Callback-кнопку (ВКонтакте, Telegram)

Работает только во ВКонтакте и Telegram.

При создании кнопки выберите функцию Callback-кнопка (только ВКонтакте, Telegram) и заполните необходимые поля.

После нажатия:

  • во ВКонтакте отображается индикатор загрузки;
  • в Telegram иногда на короткое время появляется значок часов.

После нажатия в разделе Клиенты появится callback.

Важно!

В Telegram Callback-кнопка должна иметь тип Кнопка в тексте (inline).

Текст из поля Текст ответного сообщения можно использовать:

  • в условиях стрелки;
  • в условиях блока.

Протестируем работу бота.

Диалог с пользователем в разделе Клиенты:

Видеоурок: Callback-кнопки

Как установить боту кнопку для входа в ваше веб-приложение (Telegram Web App)

Для входа в приложение существует три разновидности кнопок:

  1. кнопка в тексте;
  2. кнопка в клавиатуре;
  3. кнопка меню бота.

Для первых двух вариантов создайте кнопку и выберите функцию Telegram Web Application.

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

Если сайт создан на платформе SaleBot, достаточно выбрать его из списка.

Если используется внешний сайт, нажмите Указать внешнюю ссылку и вставьте URL вашего веб-приложения.

После этого нажмите Добавить.

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

Если тип явно не указан, будет создана кнопка в клавиатуре.

Работа всех трех вариантов одинаковая — при нажатии открывается веб-приложение.

Примеры кода кнопок через расширенные настройки

Кнопка в тексте

[{"line":0,"index_in_line":0,"text":"Web App","type":"inline","web_app":"https://example.com"}]

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

[{"line":0,"index_in_line":0,"text":"Web App","type":"web_app","web_app":"https://example.com"}]

Третий вариант (кнопка меню бота) создается через калькулятор.

Используется функция:

tg_set_chat_menu_button(type, text, web_app_url, platform_id)

где:

  • type — необязательный параметр (default, commands, web_app);
  • text — текст кнопки;
  • web_app_url — ссылка на веб-приложение;
  • platform_id — идентификатор конкретного диалога.

Пример:

tg_set_chat_menu_button(
    'web_app',
    'Web App',
    'https://example.com'
)

После выполнения рядом с полем ввода сообщения появится постоянная кнопка открытия приложения.

Независимо от типа кнопки результат один — веб-приложение откроется внутри Telegram.

Не забывайте правильно настроить ваше веб-приложение.

Рекомендации Telegram:

https://core.telegram.org/bots/webapps#initializing-web-apps

Видеообзор работы с Web App-кнопками


Как заменить кнопки в WhatsApp

В WhatsApp кнопки не поддерживаются.

Вместо них можно использовать подсказки.

В настройках блока откройте вкладку КнопкиРасширенные настройки.

Появится поле Подсказка в мессенджерах без кнопок.

Текст из этого поля отображается только в мессенджерах, которые не поддерживают кнопки (например, WhatsApp).

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

Пример настройки:

Настройки подсказок

Как это выглядит в WhatsApp:

Сообщение WhatsApp

Чтобы условия продолжали работать, добавьте через точку с запятой цифры в условия перехода.

Например:

Услуга 1;1
Услуга 2;2

Тогда переход выполнится как по тексту, так и по цифре.


Как сделать кнопку без протягивания стрелок

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

Достаточно:

  1. открыть настройки блока;
  2. выбрать тип блока Стартовое условие;
  3. в поле Условие указать текст кнопки.

Можно указать сразу несколько условий.

Они разделяются точкой с запятой.

Например:

меню;назад в меню;вернуться к меню

Теперь создайте кнопку с одним из этих текстов.

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


Создать кнопки стрелками

Клавиатурные кнопки можно создавать непосредственно стрелками.

Для этого соедините блоки стрелкой и откройте настройки соединения.

Включите переключатель Отображать как кнопку, а в поле Условие стрелки укажите текст кнопки.

Такой способ работает только в мессенджерах с поддержкой кнопок.

С помощью стрелок можно создавать только клавиатурные (reply) кнопки.

Номер линии и номер в линии

По умолчанию кнопки располагаются вертикально.

Чтобы разместить их рядом, используйте параметры:

  • Номер линии
  • Номер в линии

Нумерация начинается с 0.

Первая кнопка имеет параметры:

  • линия — 0;
  • позиция — 0.

Цвет кнопки

Во ВКонтакте и Viber можно указать цвет кнопки.

Как настроить кнопки вручную

Теперь рассмотрим более сложный способ создания кнопок — через поле Расширенные настройки кнопок в разделе Кнопки редактора блока.

Самый простой вариант — создать кнопки с помощью стрелок и условий.

В результате кнопки будут отображаться следующим образом:

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

В поле Условие таких блоков указывается текст, который соответствует тексту кнопки.

В редакторе блока с приветственным сообщением в расширенных настройках раздела Кнопки укажите JSON с описанием кнопок.

[
  {
    "type": "reply",
    "text": "Расскажи об услугах",
    "line": 0,
    "index_in_line": 0
  },
  {
    "type": "reply",
    "text": "Стоимость услуг",
    "line": 0,
    "index_in_line": 1
  },
  {
    "type": "reply",
    "text": "Контакты",
    "line": 1,
    "index_in_line": 0
  },
  {
    "type": "reply",
    "text": "Оставить заявку",
    "line": 1,
    "index_in_line": 1
  }
]

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

Если все настроено правильно, после нажатия на кнопку пользователь перейдет в соответствующий блок.

Видеоурок по работе с кодом кнопок


Все возможные настройки кнопок

Параметр Описание
text Текст кнопки (обязательный параметр)
url Ссылка, которая откроется при нажатии (в Telegram работает только для inline-кнопок)
color Цвет кнопки
line Номер строки. Если параметр не указан, кнопки располагаются вертикально
index_in_line Позиция кнопки внутри строки
type Тип кнопки: reply, inline, location, phone
one_time Если установить значение 1, клавиатура не исчезнет после отправки сообщения (работает только для reply во ВКонтакте)

Кнопка со ссылкой

Для создания кнопки со ссылкой достаточно указать параметр url.

Пример:

[
  {
    "type": "inline",
    "text": "Ссылка в Google",
    "url": "https://google.com"
  }
]

Какие есть ограничения

Facebook* и Instagram*

На территории Российской Федерации запрещена деятельность социальных сетей Facebook* и Instagram*, принадлежащих компании Meta Platforms Inc., признанной экстремистской.

В Facebook* и Instagram* существуют ограничения на количество кнопок:

  • до 12 клавиатурных (reply);
  • до 3 inline-кнопок.

В Instagram* ссылки можно размещать только в inline-кнопках.

Максимальная длина текста кнопки — 23 символа.

Если текст длиннее, Facebook* обрежет его и добавит многоточие.


Viber

В Viber действуют следующие ограничения:

  • до 24 reply-кнопок;
  • до 7 inline-кнопок.

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


ВКонтакте

Reply-кнопки

Клавиатура отображается под полем ввода сообщения.

Максимальный размер:

  • 5 × 10
  • до 40 кнопок

Inline-кнопки

Inline-клавиатура отображается внутри сообщения.

Максимальный размер:

  • 5 × 6
  • до 10 кнопок

Максимальная длина текста кнопки — 40 символов.

Если лимит превышен, сообщение с кнопками не будет отправлено.


Одноклассники

Максимальная длина текста кнопки — 42 символа.

Если символов больше, текст будет обрезан и заменен многоточием.


Telegram

Максимальная длина текста кнопки — 32 символа.

Если текст длиннее, Telegram вырежет часть текста и заменит ее многоточием.


Одновременное использование inline и reply

В одном сообщении нельзя одновременно отправить inline- и reply-кнопки.

Подробнее:

https://salebot.pro/docs/chatbots-channels-telegram-buttons#kak-sovmestit-dva-vida-knopok


Возможные ошибки создания кнопок

Bad Request: BUTTON_DATA_INVALID

Ошибка возникает при нарушении ограничений мессенджера.

Например, в Telegram текст callback-кнопки превышает допустимую длину.

Решение:

  • сократить текст кнопки;
  • использовать Callback-кнопки.

Также ошибка появляется, если callback слишком длинный.

Для Telegram допустим размер от 1 до 64 байт.

Видеоурок