Skip to main content
El nodo Código te permite ejecutar JavaScript personalizado dentro de tu flujo. Es útil para operaciones que no se pueden lograr con los nodos estándar: transformar datos, hacer cálculos, manipular textos, firmar peticiones o integrar lógica de negocio personalizada. El panel del nodo se organiza en tres pestañas:
  • Configuración — el editor de JavaScript, formateo, cheat sheet, autocompletado y la sección DLP.
  • Avanzado — el manejo del error por defecto para decidir a dónde va el flujo si la ejecución del script falla.
  • Eventos — registra eventos de seguimiento que se disparan cuando el nodo se ejecuta, para alimentar tus métricas.

Configuración del editor

El editor de código incluye herramientas para agilizar la escritura y depuración:
  • Formatear: aplica Prettier al script y agrega automáticamente await en los métodos asincrónicos que lo requieran.
  • Cheat sheet: abre una referencia rápida con los objetos globales disponibles ($context, $memory, $user, $message, $input, $output, $utils) y sus métodos.
  • Autocompletado: al escribir $, el editor sugiere las funciones y namespaces disponibles con su descripción.
  • Modo claro / oscuro: cambia el tema del editor desde el selector en la esquina superior derecha.
  • Validación en vivo: el editor marca errores comunes de lint y advierte cuando falta await en un método asincrónico.

Acceso a variables

Dentro del nodo Código puedes leer y escribir variables del flujo usando objetos globales predefinidos.

Contexto ($context)

Variables que persisten solo durante la ejecución actual del flujo:

Memoria ($memory)

Variables que persisten entre workflows, tools y nodos. Soportan tiempo de vida (TTL):

Lectura

Eliminación

Límites por tipo de dato

Los métodos $memory.setFile(), $memory.getFile().toBase64() y $memory.getFile().toRaw() son asincrónicos. Debes usar await al llamarlos.

Migración desde nodos legacy

  1. Crea un nuevo nodo Código (Memory V2).
  2. Copia y pega el script del nodo legacy.
  3. Usa los nuevos métodos disponibles ($memory.setJson, $memory.setFile, etc.) si lo necesitas.

Usuario ($user)

Información del contacto que interactúa con tu flujo:

Mensaje ($message)

El último mensaje que envió el usuario:

Input/Output ($input, $output)

Para comunicación entre tools y workflows:

Respuestas HTTP

Si guardaste la respuesta de un nodo API:
La llave en $context.getHttpResponse() debe coincidir exactamente con la que configuraste en el campo “Guardar respuesta” del nodo API.

Utilidades disponibles ($utils)

Logger

Registra valores para depuración en formato clave-valor. Los logs aparecen en el historial de ejecuciones:
Cada nodo permite un máximo de 5 registros. El valor de cada registro tiene un límite de 2,000 caracteres.

Crypto

Funciones criptográficas estándar:

Lodash

Utilidades para manipular arrays, objetos y strings:

DLP (Prevención de pérdida de datos)

Al final de la pestaña Configuración encuentras la sección DLP, que enmascara automáticamente los datos sensibles que el nodo escribe en los logs. Activa el toggle “Habilitar DLP” para elegir qué tipos de información se enmascaran (número de tarjeta, correo, teléfono, etc.). Es la protección recomendada cuando tu script trabaja con datos personales, financieros o de identidad.

Pestaña Avanzado

Configura el camino de error por defecto. Si la ejecución del script lanza una excepción no capturada (por ejemplo, un JSON inválido o un await faltante), el flujo continúa por el camino configurado en lugar de detenerse. Úsalo para mostrar un mensaje amigable al usuario o para escalar a un humano cuando el script falla.

Pestaña Eventos

Registra eventos de seguimiento que se disparan cuando el nodo se ejecuta. Sirven para alimentar tus métricas y correlacionar el paso por este nodo con conversiones o abandonos. Consulta la guía de Eventos para conocer cómo configurarlos y consumirlos.

Casos de uso

Un workflow donde un nodo AI Agent genera una respuesta estructurada (por ejemplo, un JSON con intencion, producto y sentimiento) y la guarda en contexto con la opción Guardar respuesta activada. El nodo Código posterior lee ese objeto, valida sus campos y los deja en variables independientes para que los nodos siguientes puedan reaccionar sin volver a llamar al modelo.
Usa $utils._.get(obj, 'ruta.anidada', valorPorDefecto) para leer campos anidados sin romper si el modelo omite alguno.
Un workflow donde un nodo API devuelve una lista de pedidos con nombres de campo en inglés y los nodos siguientes esperan español. El nodo Código transforma la respuesta antes de continuar.
Un workflow donde un nodo Pregunta anterior recolectó el correo del usuario y lo guardó en contexto. El nodo Código lo valida y lo enmascara antes de guardarlo o mostrarlo, y devuelve solo lo estrictamente necesario.
Un workflow que necesita procesar una lista grande (por ejemplo, 300 contactos) llamando a una API que solo acepta 50 por request. El nodo Código divide la lista en lotes y los deja en memoria para que un nodo posterior itere sobre ellos.
Tipos MIME permitidos para $memory.setFile():

Siguientes pasos

Nodo AI Agent

Configura un agente y guarda su respuesta en contexto para procesarla con Código.

Nodo API

Llama a servicios externos y lee la respuesta con $context.getHttpResponse().

Variables de Contexto

Cómo funcionan las variables temporales del flujo que lees con $context.

Variables de Memoria

Persiste datos entre workflows, tools y conversaciones.