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

buttons

buttons — кнопки, осуществляют переходы между стейтами сценария.

Синтаксис

Название кнопки добавляется в кавычках после тега buttons.

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

    buttons:
    "Это кнопка 1"
    "Это кнопка 2"
  • По нажатию на кнопку может быть осуществлен переход в указанный стейт, если:

    • в левой части тега указана строка, определяющая текст внутри кнопки;
    • в правой части — строка, определяющая путь перехода при нажатии кнопки.
    # По нажатию на кнопку будет осуществлен переход в стейт /RememberCity
    buttons:
    "Санкт-Петербург" -> ./RememberCity
    "Москва" -> ./RememberCity
  • В кнопках можно использовать строковые подстановки:

    buttons:
    "Перейдите в раздел {{ $request.query }}" -> ./
    buttons:
    "Кнопка" -> {{$temp.match.targetState}}
  • В кнопках могут передаваться объекты:

    buttons:
    { text: "Отправить местоположение", request_location: true, one_time_keyboard: false }
к сведению

Свойство text является обязательным для объектов, передаваемых в теге buttons.

Ограничения каналов

  • Telegram:

    • Максимальная длина текста кнопки — 20 символов. Текст кнопки, выходящий за ограничение, переносится на следующую строку.
    • На каждый набор кнопок обязательно должно быть отправлено хотя бы одно текстовое сообщение.
    • Кнопки не поддерживаются в ботах для бизнес-аккаунтов.
  • Viber:

    • На одной строке можно разместить 1, 2, 3 или 6 кнопок.
  • i-Digital: WhatsApp:

    • Кнопки с текстом и со ссылками нельзя использовать в одном стейте.
    • Максимальное количество кнопок в сообщении — 3.
    • Максимальная длина текста кнопки — 20 символов.
    • Кнопки, которые добавляются в первое сообщение бота в рассылке, необходимо регистрировать заранее. Другие кнопки регистрировать не нужно.
  • ВКонтакте:

    • Максимальная длина текста кнопки — 20 символов. Текст кнопки, выходящий за ограничение, переносится на следующую строку.

Управление количеством символов

Вы можете управлять количеством символов в строке кнопок для каналов ВКонтакте и Telegram из сценария. Для этого вызовите в стейте script:

script:
$response._buttonsRowLength = 30; // 30 символов в строке

Примеры использования

предупреждение
К одному ответу бота, указанному в теге a, нельзя одновременно добавить теги buttons и inlineButtons. Тем не менее можно добавить несколько ответов в один стейт и к каждому ответу добавить разные типы кнопок.

Telegram

  • Кнопки могут использоваться для запроса локации:

    state: Buttons
    a: Поделитесь вашим текущим местоположением.
    buttons:
    { text: "Отправить местоположение", request_location: true, one_time_keyboard: false }

    state: Location
    event: telegramSendLocation
    a: Локация получена
  • Кнопки могут использоваться для запроса номера телефона:

    state: Order
    a: Если все верно, отправьте свой номер телефона, и наш менеджер с вами свяжется.
    buttons:
    {text: "Отправить номер телефона", request_contact: true}
    "Меню" -> /ChoosePizza

    state: GetPhoneNumber
    event: telegramSendContact
    script:
    $client.phone_number = $request.rawRequest.message.contact.phone_number;
    a: Спасибо! Наш менеджер свяжется с вами по номеру телефона {{ $client.phone_number }}.

i-Digital: WhatsApp

Шаблон

Чтобы добавить кнопки в стартовое сообщение бота в рассылке для канала i-Digital: WhatsApp, необходимо зарегистрировать их в качестве шаблона в i-Digital.

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

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

Шаблон с текстовыми кнопками

Текст сообщенияКнопка чата 1Кнопка чата 2
Автомобиль будет использоваться в личных целях?ДаНет
подсказка
Для получения формы шаблона обратитесь к своему аккаунт-менеджеру.

Пример сценария

В данном сценарии заранее были зарегистрированы кнопки. По нажатию на Да или Нет будут осуществлены переходы в /NormalButtons1 или /NormalButtons2.

state: Buttons
q!: buttons
a: Автомобиль будет использоваться в личных целях?
buttons:
"Да" -> /NormalButtons1
"Нет" -> /NormalButtons2

state: NormalButtons1
a: Перейдем к оформлению.

state: NormalButtons2
a: Тогда в каких целях будет использоваться автомобиль?