Вы просматриваете старую версию данной страницы. Смотрите текущую версию.

Сравнить с текущим просмотр истории страницы

« Предыдущий Версия 6 Следующий »

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

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

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

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

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

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

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

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

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

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

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

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

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-операций необходимо убрать переносы строки, чтобы тело запроса шло в одну строчку, и подставить в начале $json = :

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

Это будет являться первой строкой 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
$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. В стрелках из блока вопроса нужно обработать ответы с кнопок клавиатуры, используя ключевые слова, либо интеллектуальное принятие решений. В данном примере обрабатывается только вариант "Привет".

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

  • Нет меток