В данной статье мы разберем каким образом можно сделать клавиатуру быстрых ответов для Telegram.
Простой метод
В стрелках, выходящих из блока вопроса, можно автоматически создать кнопки с вариантами ответа, используя параметр Вариант ответа.
Кнопки, созданные таким образом имеют следующие ограничения:
- На одной строке может располагаться только одна кнопка
- Максимальный размер клавиатуры - 4 строки (соответственно, 4 кнопки)
Для добавления кнопки ответа в параметрах стрелки из блока вопроса нужно заполнить поля
- Вариант ответа,
- Порядковый номер кнопки
В качестве типа выходных данных могут использоваться ключевые слова или интеллектуальное принятие решений – но при нажатии на кнопку будет произведен переход по стрелке, независимо от настроек типа выходных данных.
Пример работы кнопок в телеграме:
Продвинутый метод
Используя запрос к серверу, можно отправить запрос на отправку сообщений Telegram, который может содержать в себе клавиатуру быстрых ответов.
Кнопки, созданные таким образом имеют следующие ограничения:
- На одной строке могут располагаться 4 кнопки
- Максимальный размер клавиатуры - 4 строки (соответственно, максимум можно вывести 16 кнопок)
- Перед этим запросом может находиться только блок вопроса, или блок паузы - при использовании блоков информации будет нарушена очередь отправки сообщений, и клавиатура не будет выводиться
Порядок действий
1. Сначала необходимо добавить блок результата, в котором будут объявлены переменные, необходимые для отправки запроса:
Название переменной | Значение | Описание |
---|---|---|
userId | {messengerUserId} | Идентификатор Telegram-чата, в который будет отправляться сообщение. Должен быть равен {messengerUserId} для отправки в текущий чат. |
botId | ВАШ ТОКЕН | Токен вашего Telegram-бота. Выдается BotFather во время создания бота в Telegram. |
text | Текст | Текст сообщения, которое будет отправлено вместе с клавиатурой ответов. Данное поле не может быть пустым, иначе клавиатура не будет отправлена. |
2. Далее нужно сформировать тело запроса, которое будет содержать клавиатуру быстрых ответов.
Тело запроса имеет следующий вид:
Для отправки запроса с помощью BPL-операций необходимо убрать переносы строки, чтобы тело запроса шло в одну строчку, и подставить в начале $json = :
$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"})
Полностью код блока арифметики должен выглядеть так:
$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-бота.
Пример работы фрагмента сценария: