Кастомизация в чат-боте
Блок "Интерпретатор JavaScript"Привет! В данном обзоре мы разберем, как создать кейс с динамическим изменением количества кнопок с помощью блока "Интерпретатор JavaScript" на платформе Leadtex.
Пример отработки кейса 👇🏼
Пошаговая инструкция реализации данного функционала:
Шаг 1. Создайте переменную

Вы можете задать для переменной любое название, в нашем случае "buttons".
В значение данной переменной мы вносим стандартный JSON объект, формирующий 2 кнопки с отображаемым текстом "+1" и "-1" и значениями параметров "callback_data" - "plus" и "minus" (эти значения сохраняются в переменной при нажатии кнопки и по ним мы понимаем, какая кнопка была нажата).
Скопировать:
[
{
"text": "+1",
"callback_data": "plus"
}
],
[
{
"text": "-1",
"callback_data": "minus"
Шаг 2. Отправка сообщения с помощью API Telegram


Для отправки сообщения с кнопками воспользуемся API Telegram и методом SendMessage, разбирали ранее ⬅️
В Body запроса выбираем формат JSON и вносим необходимые параметры для отправки текстового сообщения.
Для параметра "inline_keyboard" (инлайн клавиатура) вносим значение ранее созданной переменной.
Дополнительно мы вводим новую переменную "pressedButton" для сохранения значения нажатой кнопки.
P.s. Не забудьте сохранить ID сообщения.
Cкопировать:
{
"chat_id": "{{telegram_id}}",
"parse_mode" : "HTML",
"text" : "Любой ваш текст",
"reply_markup": {
"inline_keyboard":
[
{{$buttons}}
]
}
}
Шаг 3. Интерпретатор JavaScript
Далее нам необходимо воспользоваться блоком "Интерпретатор JavaScript" для того, чтобы вносить кастомные изменения, учитывая действия пользователя.

- Получаем значение ранее введенных в сценарий переменных из списка платформы для использования в скрипте "buttons" и "pressedButton" с помощью метода getContactVariable API Leadtex.
- Вводим условие с помощью функции "if" в рамках JavaScript для присвоения обновленного значения переменной "buttons":
- Если значение нажатой кнопки, которое мы получили в рамках переменной "pressedButton", равно "plus", то с помощью операции сложения в JSON формате формируем дополнительную кнопку.
buttons = buttons+','+'['+ '{'+'"'+"text"+'":'+'"кнопка",'+'"'+"callback_data"+'":'+'"кнопка"'+'}'+']' ;
- Если значение нажатой кнопки, которое мы получили в рамках переменной "pressedButton", равно "minus", то с помощью функции JavaScript "slice" мы удаляем значение 57 символов, что равно длине строки из примера выше.
buttons = buttons.slice(0,-57);
3. Полученное значение мы должны передать в переменную "buttons" на платформе Leadtex. Делаем мы это с помощью функции setContactVariable API Leadtex.
Скопировать:
//Получаем переменные для использования в скрипте
var buttons = getContactVariable("buttons");
var pressedButton = getContactVariable("pressedButton");
//если нажали "+1"
if (pressedButton=="plus")
{
buttons = buttons+','+'['+ '{'+'"'+"text"+'":'+'"кнопка",'+'"'+"callback_data"+'":'+'"кнопка"'+'}'+']' ;
////если нажали "-1"
} else if (pressedButton=="minus")
{
buttons = buttons.slice(0,-57);
}
//Сохраняем переменную для использования в сценарии
setContactVariable("buttons", buttons);
Текстовые комментарии добавлены для вас, их вставлять в интерпретатор необязательно :)
Шаг 4. Изменение клавиатуры в сообщении за счет подстановки обновленной переменной "buttons"
С помощью функции "editMessage" API Telegram мы обновляем прежнее сообщения, меняя параметры клавиатуры, в соответствие с данным полученными в блоке "Интерпретатор JavaScript".


В рамках данного блока мы повторно сохраняем данные о нажатой кнопке в переменную.
Готово! Итоговый сценарий 👇🏼

Всего 4 блока и новая кастомная функция 😉
Используйте, тестируйте, внедряйте!