В данной статье мы разберем каким образом можно сделать клавиатуру быстрых ответов для Telegram.
Message Box | ||||||
---|---|---|---|---|---|---|
| ||||||
|
Простой метод
В стрелках, выходящих из блока вопроса, можно автоматически создать кнопки с вариантами ответа, используя параметр Вариант ответа.
Примечание |
---|
Кнопки, созданные таким образом имеют следующие ограничения:
|
Для добавления кнопки ответа в параметрах стрелки из блока вопроса нужно заполнить поля
- Вариант ответа,
- Порядковый номер кнопки
В качестве типа выходных данных могут использоваться ключевые слова или интеллектуальное принятие решений – но при нажатии на кнопку будет произведен переход по стрелке, независимо от настроек типа выходных данных.
Пример работы кнопок в телеграме:
Продвинутый метод
Используя запрос к серверу, можно отправить запрос на отправку сообщений Telegram, который может содержать в себе клавиатуру быстрых ответов.
Примечание |
---|
Кнопки, созданные таким образом имеют следующие ограничения:
|
Порядок действий
1. Сначала необходимо добавить блок результата, в котором будут объявлены переменные, необходимые для отправки запроса:
Название переменной | Значение | Описание |
---|---|---|
userId | {messengerUserId} | Идентификатор Telegram-чата, в который будет отправляться сообщение. Должен быть равен {messengerUserId} для отправки в текущий чат. |
botId | ВАШ ТОКЕН | Токен вашего Telegram-бота. Выдается BotFather во время создания бота в Telegram. |
text | Текст | Текст сообщения, которое будет отправлено вместе с клавиатурой ответов. Данное поле не может быть пустым, иначе клавиатура не будет отправлена. |
2. Далее нужно сформировать тело запроса, которое будет содержать клавиатуру быстрых ответов.
Тело запроса имеет следующий вид:
Блок кода | ||||||||
---|---|---|---|---|---|---|---|---|
|
Подсказка |
---|
Кейс есть в Twin LiveDemo bot https://t.me/twinDemo_bot |
...
шаг 1. Создаем три блока вопроса
шаг 2. В каждой исходящей стрелке из блоков вопроса сохраняем ответ в переменные соответственно: botId, chatId, text
Подсказка |
---|
chatId может быть как айди чата, которое достал https://t.me/myidbot, так и {messengerUserId} |
шаг 3. Создаем блок арифметики с произвольным типом
шаг 4. Сам запрос выглядит так
Но так как в сценарии запрос будет отправлен через блок арифметики воспользуемся статьей
Как сделать запрос на сервер с помощью BPL-операций, чтобы сформировать универсальную ссылку с переменными
Примечание | ||
---|---|---|
| ||
bpl функции не работают в редакторе. Тестировать сценарий нужно в чате либо в мессенджерах |
Блок кода | ||
---|---|---|
| ||
$url = str.join(["https://api.telegram.org/bot", $botId, "/sendMessage?chat_id=", $chatId, "&parse_mode=HTML&text=", $text], "")
//Вставляем эту строчку в блок арифметики |
шаг 5. Чтобы включить клавиатуру у пользователя нужно создать следующее тело запроса:
Блок кода | ||
---|---|---|
| ||
{ "reply_markup": { "keyboard": [ [ //этимассив квадратныес скобочкипервой этострокой первая строкаклавиатуры "😁", "Ты кто?😅", "Привет" ], [ //этомассив втораясо (строкивторой можно добавлять после запятой)строкой клавиатуры "Ой😊", "М?", "😜" ] ], "resize_keyboard": true, //параметр, отвечающий за автоматическую подгонку размера клавиатуры. (true - клавиатура уменьшится по количеству строк, false - полноразмерная клавиатура) "one_time_keyboard": true } } //Для блока арифметики это тело нужно форматировать в одну строку следующим образом //параметр, отвечающий за закрытие клавиатуры после нажатия на ответ (true - скрыть клавиатуру, false - не скрывать) } } |
Для отправки запроса с помощью BPL-операций необходимо убрать переносы строки, чтобы тело запроса шло в одну строчку.
Далее добавляем в сценарий блок арифметики с типом Произвольный тип, и вставляем в поле BPL-Выражение следующий код:
Блок кода | ||||||
---|---|---|---|---|---|---|
| ||||||
$json = {"reply_markup": {"keyboard": [["😁","Ты кто?😅","Привет"],["Ой😊","М?", "😜"]],"resize_keyboard": true,"one_time_keyboard": true}} //Вставляем$url эту строчку в блок арифметики следующей |
где
- keyboard это массив строк в клавиатуре
- one_time_keyboard это параметр для того чтобы клавиатура закрылась после ответа и не мешала (по умолчанию false, то есть закрываться не будет)
- resize_keyboard это параметр для красивого размера кнопок (по умолчанию false), если не включить будет выглядеть так
Подсказка | ||
---|---|---|
| ||
Блок кода | ||
= str.join(["https://apps api.timwhitlock telegram.info/emoji/tables/unicode |
шаг 6. Вставляем эту строчку в блок арифметики последней
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-выражение нажмите кнопку Преобразовать BPL в AST для сохранения кода в память бота. |
3. После блока с запросом должен стоять блок вопроса без текста, и стрелки из этого блока вопроса должны отвечать за обработку ответов с клавиатуры.
Предупреждение |
---|
Если в блоке вопроса будет текст, то клавиатура пропадет сразу же после отправки. |
4. В стрелках из блока вопроса нужно обработать ответы с кнопок клавиатуры, используя ключевые слова, либо интеллектуальное принятие решений. В данном примере обрабатывается только вариант "Привет".
Таким образом можно добавить клавиатуру быстрых ответов для Telegram-бота.
Пример работы фрагмента сценария: