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

Содержание:

Простой метод

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

Кнопки, созданные таким образом имеют следующие ограничения:

  • На одной строке может располагаться только одна кнопка
  • Если количество строк больше 4, то клавиатура может не поместиться на экран, и появится полоса прокрутки.

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

  • Вариант ответа,
  • Порядковый номер кнопки

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

Пример работы кнопок в телеграме:

Продвинутый метод

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

Кнопки, созданные таким образом имеют следующие ограничения:

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

Порядок действий

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

Название переменнойЗначениеОписание
userId{messengerUserId}Идентификатор Telegram-чата, в который будет отправляться сообщение.
Должен быть равен {messengerUserId} для отправки в текущий чат.
botIdВАШ ТОКЕНТокен вашего Telegram-бота. Выдается BotFather во время создания бота в Telegram.
textТекстТекст сообщения, которое будет отправлено вместе с клавиатурой ответов.
Данное поле не может быть пустым, иначе клавиатура не будет отправлена.

2. Далее нужно сформировать тело запроса, которое будет содержать клавиатуру быстрых ответов.
Тело запроса имеет следующий вид:

Пример тела запроса
{
    "reply_markup": {
        "keyboard": [
            [                //массив с первой строкой клавиатуры
                "😁",
                "Ты кто?😅",
                "Привет"
            ],
            [                //массив со второй строкой клавиатуры
                "Ой😊", 
                "М?", 
                "😜"
            ]
        ],
        "resize_keyboard": true, //параметр, отвечающий за автоматическую подгонку размера клавиатуры. (true - клавиатура уменьшится по количеству строк, false - полноразмерная клавиатура)
        "one_time_keyboard": true //параметр, отвечающий за закрытие клавиатуры после нажатия на ответ (true - скрыть клавиатуру, false - не скрывать)
    }
} 

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

Далее добавляем в сценарий блок арифметики с типом Произвольный тип, и вставляем в поле BPL-Выражение следующий код:

Полный код блока с BPL
$json = {"reply_markup": {"keyboard": [["😁","Ты кто?😅","Привет"],["Ой😊","М?", "😜"]],"resize_keyboard": true,"one_time_keyboard": true}}
$url = str.join(["https://api.telegram.org/bot", $botId, "/sendMessage?chat_id=", $userId, "&parse_mode=HTML&text=", $text], "")
$response = http.sendRequest($url, "POST", $json, {"accept": "application/json", "Content-Type": "application/json"})

В первой строке находится тело запроса, далее идет сам запрос.

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

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

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

4. В стрелках из блока вопроса нужно обработать ответы с кнопок клавиатуры, используя ключевые слова, либо интеллектуальное принятие решений. В данном примере обрабатывается только вариант "Привет".

Таким образом можно добавить клавиатуру быстрых ответов для Telegram-бота.

Пример работы фрагмента сценария: