Замена текста на кнопках в Telegram без повторной отправки кнопок
Замена текста на кнопках работает только в Telegram.
Поменять текст на кнопках, не присылая новый экран, можно с помощью запроса к Телеграм API методом editMessageReplyMarkup.
Для этого оформите в конструкторе экраны таким образом:
Рассмотрим более подробно:
1. Добавьте Кнопки. Все кнопки будут переводить на Запрос.
2. Оформите Запрос.
Метод — POST.
URL запроса:
https://api.telegram.org/bot123456789/editMessageReplyMarkup
Где вместо 123456789 — токен вашего бота.
Добавьте Тело запроса:
{ "chat_id": "{{this_user.platform_id}}", "message_id": "{{lastMessageId}}", "reply_markup": { "inline_keyboard": [ [ { "text": "3", "callback_data": "{\"value\": \"kn3\"}" }, { "text": "4", "callback_data": "{\"value\": \"kn4\"}" } ] ] } }
В Теле запроса в переменная text имеет значения "3" и "4".
"text": "3"
"text": "4"
Поэтому, когда пользователь нажмет на кнопку 1 или 2 на первоначальном экране, Запросом цифры на кнопках меняются на 3 и 4.
Значения в переменной "text" можно поменять на свои — на текст, который должен быть на кнопках после нажатия.
3. На том же экране, после Запроса, добавьте Перемотку с активным чек-боксом Остановить бота после перемотки до следующего сообщения от пользователя. Перемотка будет переводить на следующий экран с Развилкой.
4. Добавьте Развилку, в которой будет проверяться кнопка, которую нажал пользователь.
Для этого в Имя переменной откуда Развилка возьмет значение добавьте переменную lastUpdate.update.data.value.
Создайте Цели Развилки, которые будут реагировать на возможные значения пользователя.
В нашем примере, проверяются значения kn3 и kn4, так как их мы указали в теле запроса. Вы можете поменять значения на свои, главное, чтобы в Запросе и в Развилке эти значения совпадали.
5. Добавьте на экраны, куда будет попадать пользователь после Развилки, компонент Запрос.
Метод запроса — POST и URL запроса, остаются без изменений, как на «Экране после кнопок».
Когда пользователь окажется на этих экранах, текст на кнопках от бота снова поменяется на текст, который будет в теле запроса в переменной "text" .