Перейти к основному контенту

Выполнить JavaScript Callback

Результатом работы данной команды является прием файлов в Телегам боте, отправленных пользователем.

Принцип работы данной команды:
  • Когда данная команда запущена, ее состояние зацикливается в текущей точке и текущий и любой следующий входящий вебхук будет обрабатываться этим JavaScript кодом;
  • Выйти из команды и перейти к следующей или к другому скрипту можно только с помощью возврата специального значения из JavaScript
Данную команду можно использовать, для:
  • Запроса любого значения: текста, файла, фото, медиа;
  • Интеграции с любой системой: машиной JSON состояний или любым NLP (зацикливая диалог на NLP), системой обработки голосовых сообщений, системной распознавания изображений.

Добавить в скрипт ее можно, выбрав пункт Выполнить JavaScript Callback из списка Команд:

Снимок экрана 2024-02-05 123004.png

 

После выбора данной команды в списке Команд перед вами откроется диалоговое окно настройки свойств:

image.png

С пунктом Использовать условие вы можете познакомиться на странице Условие выполнения команды JS

Следующие поля являются обязательными:

  • Сообщение-вопрос отправляемое до старта данной команды — сообщение которое будет отправлено в мессенджер при старте данной команды, поле обязательно для заполнения ТОЛЬКО, если выключено поле Запустить Callback сразу при старте этой команды;
  • Сообщение при возникновении ошибки — сообщение которое будет отправлено в мессенджер при возникновении ошибки;
  • Запустить Callback сразу при старте этой команды — если поле неактивно, то JavaScript код запустится только после того как пользователь получит Сообщение-вопрос отправляемое до старта данной команды в мессенджер и что-то ответит;

Если поле активно и это первый запуск JavaScript Callback данной команды, то в JavaScript будет установлена в true системная предопределенная переменная isFirstImmediateCall, во всех других случаях isFirstImmediateCall устанавливается в false. Это необходимо, чтобы можно было проинициализировать компонент и, например, выслать текст вопроса или отправить изначально меню и т.д.

  • JavaScript Callback — здесь указывается исходный код вашего JavaScript компонента.

По кнопке Создать как итог команда появится в редакторе скрипта:

image.png

Возвращаемые значения

JavaScript Callback всегда должен возвращать данные с помощью «return» в определенном формате:

Для завершения инициализации
  • return null.

Используется, чтобы платформа ничего не делала со своей стороны, ожидая ответа пользователя. Вместо retrurn null можно ничего не указывать после ключевого слова return.

Для прерывания цикла
  • return true;
  • return { "result": true ... другие параметры };
  • return { "break": true ... другие параметры }.

Используется для выхода из замыкания и переходу к следующей команде текущего скрипта (если не указан параметр для перехода к другому скрипту).

Прерывание с помощью throw new Error("break") недопустимо, в таком случае JS прервется, но из зацикливания не выйдет, т.е. будет распознано как return null.

Под "другими параметрами" здесь подразумевается, что можно указать параметры в JSON-объекте, на которые платформа умеет реагировать. На данный момент для "result": true, можно указывать следующие параметры:
  • "run_script_by_code": "код_вашего скрипта" — если указан этот параметр, то выполняется выход из замыкания и переход к указанному скрипту по коду.
Для повторения цикла
  • return false;
  • { "result": false ... другие параметры }.

Используется для завершения обработки JavaScript (выхода из JavaScript), без прерывания зацикливания. Callback продолжит выполнение цикла и при приеме любого входящего сообщения мы  опять попадем в JavaScript код данной команды (если не указан параметр для перехода к другому скрипту).

Под "другими параметрами" здесь подразумевается, что можно указать параметры в JSON-объекте, на которые платформа умеет реагировать. На данный момент для "result": false, можно указывать следующие параметры:
  • "fallback": "текст вашего фолбэка" — используется для вывода вместе с фолбэком текста-объяснения;
  • "run_script_by_code": "код_вашего скрипта" — используется для запуска другого скрипта по коду, если параметр передан, то fallback и повтор вопроса выводиться не будут;
  • "is_repeat_prompt": true / false — выводить или нет повтор вопроса. Повтор вопроса выводится только, если он указан в настройках команды.