Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

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

Message Box
iconnone
titleСодержание:
typegeneric
Оглавление

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

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

Примечание

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

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

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

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

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

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

Image Modified

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

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

Примечание

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

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

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

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

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

Image Modified

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

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

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

Блок кода
languagepy
themeDJango
titleТело для BPL операции
 $json = {"reply_markup": {"keyboard": [["😁","Ты кто?😅","Привет"],["Ой😊","М?", "😜"]],"resize_keyboard": true,"one_time_keyboard": true}}

Это будет являться первой строкой BPL-операции.

Далее добавляем в сценарий блок арифметики с типом Произвольный тип, и вставляем в него наше получившееся тело запроса, а затем еще две строчки:

Блок кода
languagepy
themeDJango
titleОставшиеся две строки BPL-кода
$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-Выражение следующий код:

Блок кода
languagepy
themeDJango
titleПолный код блока с 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"})

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

Image Modified

Информация

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

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

Предупреждение

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

Image Modified

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

Image Modified

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

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

Image ModifiedImage Modified