Все ноды/Integrations/Widget

Функция виджета

Вызывает JS-функцию, объявленную в коде встраивания виджета (flowWidget.defineFunction). Отправляет сигнал в браузер посетителя, ждёт результат (по умолчанию 30 с) и передаёт его на выход. Работает только в режиме виджета; при таймауте/закрытой вкладке — ошибка (on_error).

Функция виджета
InputOutput

Тип в графе: widget_function

Exec

Можно включить ветку ошибки (expose_error_output) и обработать сбой отдельным путём.

Порты можно разделить на исполнение и данные (split ports).

Как попробовать

Минимальный рабочий воркфлоу

Вход
Функция виджета
Выход
  • Исполнение + данные
Нажмите «Скопировать ноды», откройте редактор и нажмите Ctrl+V на холсте.

Запускается сразу

Как применять

Нода вызывает JS-функцию на странице, где стоит виджет: узнать состав корзины, прочитать поля формы, подсветить элемент, открыть модальное окно. Берите её, когда вызов должен происходить всегда и ровно в этом месте графа. Если решать должна модель — ставьте Widget tools: та же связь с браузером, но функции отдаются агенту как инструменты. Code (JavaScript) к странице посетителя отношения не имеет — этот код исполняется на сервере в изолированной среде.

Как это работает

Функция должна быть объявлена в коде встраивания виджета через flowWidget.defineFunction (см. Встраиваемый виджет). Платформа не знает списка объявленных имён во время проектирования, поэтому Имя функции сверяется побайтово уже на запуске: опечатка, другой регистр или лишний пробел уедут в браузер как неизвестная функция.

На исполнении нода отправляет запрос в браузер посетителя по уже открытому соединению чата и ждёт ответ — до значения Таймаут (секунды) (от 1 до 300, по умолчанию 30). Что вернул обработчик, то и уходит на выход.

Поле Аргументы (JSON / Jinja) перекрывает порт Input: пустое поле — аргументами станет значение, пришедшее на порт; непустое — оно рендерится через Jinja и разбирается как JSON. Целиком шаблонное значение ({{ nodes.<id>.output }}) передаётся как объект, а не как строка; если разобрать JSON не удалось, отправится текст как есть.

Частые ошибки

  • Запуск не из виджета. В тестовой панели редактора, в чате и в Telegram отвечать некому — нода падает сразу с явным сообщением. Проверять её нужно на странице с установленным виджетом.
  • Закрытая вкладка. Ответа не будет, и нода честно выждет весь таймаут.
  • Выход ошибок выключен. Переключатель «Вывод ошибок» по умолчанию выключен, а без проведённой ветки Error отказ функции обрывает весь запуск.
  • Тяжёлый обработчик. Поднимайте таймаут (до 300 с), но помните, что общие ограничения запуска никуда не деваются.
  • Крупные аргументы. Сериализованные аргументы ограничены 256 КБ — передавайте идентификатор, а не весь массив данных.

Входы

ПортПроводДанныеПримечания
InputinputИсполнение + данныеexecute_data

Run trigger; its value is used as arguments when none are set.

Выходы

ПортПроводДанныеПримечания
OutputoutputИсполнение + данныеexecute_dataany

Настройки

ПолеТипПо умолчаниюОписание
Имя функцииfunction_namestring""

Имя (`name`), которое host-страница передала в flowWidget.defineFunction({ name, handler, … }) в своём коде встраивания — см. EMBED_SDK.md. Платформа не видит список объявленных имён на этапе проектирования, поэтому совпадение проверяется побайтово во время рана: опечатка, другой регистр или лишний пробел уедут в браузер как неизвестная функция, и нода упадёт.

Аргументы (JSON / Jinja)argumentsstring""

Аргументы, передаваемые функции как объект. Поддерживает Jinja ({{inputs.input}}, {{nodes.x.output}}). Непустое значение ЗАМЕНЯЕТ то, что пришло на порт Input; оставьте пустым, чтобы передать это значение как аргументы.

поддерживает шаблоны

Дополнительно
Таймаут (секунды)timeout_secondsinteger30

Сколько ждать результат от браузера до ошибки.

Общие поля

Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.

  • expose_error_output — Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этого шага.
  • split_ports_in — Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.
  • split_ports_out — Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.