Все ноды/Integrations/Widget
Функция виджета
Вызывает JS-функцию, объявленную в коде встраивания виджета (flowWidget.defineFunction). Отправляет сигнал в браузер посетителя, ждёт результат (по умолчанию 30 с) и передаёт его на выход. Работает только в режиме виджета; при таймауте/закрытой вкладке — ошибка (on_error).
Тип в графе: widget_function
Exec
Можно включить ветку ошибки (expose_error_output) и обработать сбой отдельным путём.
Порты можно разделить на исполнение и данные (split ports).
Как попробовать
Минимальный рабочий воркфлоу
- Исполнение + данные
Запускается сразу
Как применять
Нода вызывает 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_data | any |
Настройки
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
Имя функцииfunction_name | string | "" | Имя (`name`), которое host-страница передала в flowWidget.defineFunction({ name, handler, … }) в своём коде встраивания — см. EMBED_SDK.md. Платформа не видит список объявленных имён на этапе проектирования, поэтому совпадение проверяется побайтово во время рана: опечатка, другой регистр или лишний пробел уедут в браузер как неизвестная функция, и нода упадёт. |
Аргументы (JSON / Jinja)arguments | string | "" | Аргументы, передаваемые функции как объект. Поддерживает Jinja ({{inputs.input}}, {{nodes.x.output}}). Непустое значение ЗАМЕНЯЕТ то, что пришло на порт Input; оставьте пустым, чтобы передать это значение как аргументы. поддерживает шаблоны |
| Дополнительно | |||
Таймаут (секунды)timeout_seconds | integer | 30 | Сколько ждать результат от браузера до ошибки. |
Общие поля
Эти три поля есть у каждой ноды: платформа добавляет их сама, а не автор ноды.
expose_error_output— Если включено, показывает выход выполнения для подключения нод, которые запускаются при сбое этого шага.split_ports_in— Показывать отдельные порты входа для выполнения и данных вместо одного объединённого.split_ports_out— Показывать отдельные порты выхода для выполнения и данных вместо одного объединённого.