Кастомизация в чат-боте

Кастомизация в чат-боте

Блок "Интерпретатор 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" для того, чтобы вносить кастомные изменения, учитывая действия пользователя.

  1. Получаем значение ранее введенных в сценарий переменных из списка платформы для использования в скрипте "buttons" и "pressedButton" с помощью метода getContactVariable API Leadtex.
  2. Вводим условие с помощью функции "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 блока и новая кастомная функция 😉


Используйте, тестируйте, внедряйте!



Report Page