Saltearse al contenido

JS Code

JS Code te permite resolver con unas líneas de JavaScript lo que ningún otro componente hace exactamente como necesitas: calcular un valor, reorganizar una lista, combinar datos de varios pasos o consultar un servicio web. Lo que devuelvas con return es el resultado del componente.

También puede convertirse en una herramienta para un agente: el agente decide cuándo usarla y con qué datos, y tu código hace el trabajo.

Cuándo usarlo

  • Calcular totales, descuentos o fechas de vencimiento a partir de los datos de un pedido.
  • Cambiar la forma de una lista antes de enviarla a otro sistema.
  • Consultar la API de un proveedor para la que no hay un componente específico.
  • Dar a un agente una herramienta propia, por ejemplo “calcular el precio de envío según el peso y el destino”.

Configuración

CampoQué hace
Input DataLos datos que recibe tu código. Puede ser un mensaje, un registro o una lista. Dentro del código están en $data.
JavaScript CodeEl código que se ejecuta. Termina con return seguido del resultado. El campo viene con ejemplos comentados de todo lo que puedes usar.

Dentro del código tienes disponible:

NombrePara qué sirve
$dataLos datos de Input Data.
$argsLos datos que envía el agente cuando el componente se usa como herramienta.
$componentsLos resultados de otros componentes del flujo, por su nombre, cuando el componente trabaja como paso del flujo.
$envLas variables del entorno vinculado al flujo, por ejemplo $env.URL_API_PEDIDOS. Está vacío si el flujo no tiene entorno.
$fetch(url, opciones)Hace una petición a un servicio web y devuelve su respuesta: si fue bien, el código de estado y el contenido.
$tools["nombre"](datos)Usa una herramienta conectada en Tools.
$models["nombre"](texto)Envía un texto a un modelo conectado en Model y devuelve su respuesta.
$wait(milisegundos)Espera el tiempo indicado antes de seguir.
$log(...)Escribe un mensaje en el registro de la ejecución, útil para revisar qué ha pasado.

$tools y $models devuelven siempre un resultado con dos partes: result con la respuesta y error si algo falló.

Opciones avanzadas

CampoQué hace
Enable Tools InputAñade el conector Tools para que el código pueda usar herramientas. Desactivado por defecto.
Enable Models InputAñade el conector Model para que el código pueda consultar modelos de lenguaje. Desactivado por defecto.

Pestaña Tool

Estos campos se usan cuando conectas la salida Tool a un agente.

CampoQué hace
Tool NameEl nombre con el que el agente ve la herramienta. Por defecto, js_tool.
Tool DescriptionExplica al agente qué hace la herramienta y cuándo usarla. Cuanto más clara, mejor la usará.
Tool Input SchemaLos datos que el agente debe enviar al usar la herramienta, con su nombre y tipo. Llegan al código en $args.
Allow update agent statePermite que el código modifique el estado del agente que lo usa. Desactivado por defecto.

Resultado

  • Processed Data: lo que devuelve tu código con return. Conéctalo al siguiente paso del flujo.
  • Tool: el componente como herramienta, para conectarlo a un agente.

Usas una salida u otra: al conectar una, la otra se oculta.

Ejemplo

Una tienda quiere calcular el total con IVA de cada pedido antes de generar la factura.

  1. Conecta el pedido a Input Data.

  2. En JavaScript Code, escribe:

    const base = $data.lineas.reduce((suma, l) => suma + l.precio * l.cantidad, 0);
    return { pedido: $data.id, base, total: Math.round(base * 1.21 * 100) / 100 };
  3. Conecta Processed Data al componente que genera la factura.

Buenas prácticas

  • Empieza con return $data; para ver qué recibe el componente y escribe el código a partir de ahí.
  • Para probar las herramientas conectadas, devuelve $tools: verás las disponibles y qué datos esperan. Con return $env; ves las variables del entorno.
  • No escribas tokens ni contraseñas en el código: guárdalos como variables secretas del entorno y léelos con $env.
  • Hay un límite de llamadas a servicios web, herramientas y modelos por ejecución, y un tiempo máximo de ejecución.

Componentes relacionados