Validación de mensajes y respuestas estructuradas con JavaScript

Clase 5 de 16Curso de Workflows Profesionales con n8n

Resumen

Mejora la calidad de tus automatizaciones con expresiones de sistema y JavaScript: valida el contenido, clasifica la prioridad y devuelve una respuesta estructurada por webhook con trazabilidad. Verás cómo combinar el nodo IF, funciones como length e includes, la condición ternaria y campos del workflow para un flujo más dinámico y claro.

¿Cómo validar mensaje y longitud con JavaScript en el nodo IF?

Para evitar respuestas pobres, se comprueba que el mensaje no esté vacío y que tenga al menos 10 caracteres. Se elige la condición Y en el nodo IF y se aplica la función de JavaScript para medir la longitud con autocompletado al pulsar el punto.

  • Activa la condición Y: mensaje no vacío y longitud mínima.
  • Usa la función: mensaje.length para contar caracteres.
  • Compara como número: mayor que 10.
  • Ejecuta y verifica que la condición se cumple.

Ejemplo de lógica en la condición:

mensaje !== '' && mensaje.length > 10

Así te aseguras de filtrar mensajes demasiado cortos antes de seguir.

¿Cómo detectar y asignar prioridad con condición ternaria?

En Edit Fields, añade el campo Prioridad como expresión. Inserta el mensaje y aplica includes para detectar si contiene la palabra “urgente”. Luego usa la condición ternaria para etiquetar: alta o normal.

  • Convierte el campo a expresión con “=”.
  • Inserta el mensaje y aplica includes: busca “urgente”.
  • Devuelve “alta” o “normal” con la ternaria.

Ejemplo:

mensaje.includes('urgente') ? 'alta' : 'normal'

Si el texto no contiene “urgente”, la prioridad resultará normal.

¿Cómo enriquecer la respuesta con fecha, flujo y ejecución para el webhook?

Suma contexto a la respuesta agregando Fecha, Flujo y Ejecución_id. Trabaja con expresiones del sistema y devuelve un objeto claro. Esto aporta trazabilidad y mejora la lectura.

¿Cómo generar la fecha con NOW y formato ISO?

Crea el campo Fecha como texto y usa la variable de sistema NOW. Dale un formato legible con toISO.

  • Escribe “=” y abre llaves para activar la expresión.
  • Inserta NOW y convierte con toISO.

Ejemplo:

{{ $now.toISO() }}

Obtendrás la fecha actual en formato estándar, fácil de interpretar.

¿Cómo identificar workflow y execution id en la respuesta?

Añade el nombre del workflow y el identificador de ejecución. Cuando se ejecute, el id aparecerá automáticamente.

  • Campo Flujo: toma el nombre del workflow.
  • Campo ejecución_id: usa execution.id y define el tipo correcto.

Ejemplos:

{{ $workflow.name }}
{{ $execution.id }}

Si ves que ejecución_id sale como texto, cambia a número para mantener consistencia.

¿Cómo construir el cuerpo JSON y probar con pin?

Puedes mapear manualmente o devolver todo con JSON desde el nodo anterior. Si no dominas JavaScript, arrastra campo por campo y previsualiza.

  • Construye el objeto con: mensaje, prioridad, fecha, flujo, ejecución_id.
  • Alternativa avanzada: devolver el JSON completo del nodo anterior.
  • Usa botón derecho: pin para congelar datos y probar sin reenviar.
  • Luego unpin para volver a datos en vivo.
  • Activa Execute workflow para escuchar en modo test.
  • Observa que ejecución_id se incrementa en cada petición.
  • Maneja errores: indica cuando el mensaje está vacío o demasiado corto.

Ejemplo de respuesta estructurada para el webhook:

{
  "mensaje": "Crear tarea en proyecto del backend",
  "prioridad": "normal",
  "fecha": "2024-01-01T12:00:00.000Z",
  "flujo": "NombreDelWorkflow",
  "ejecucion_id": 270
}

Puntos clave que aplicarás de inmediato:

  • Expresiones de sistema para enriquecer datos.
  • Funciones de JavaScript: length, includes, toISO.
  • Condición ternaria para clasificar prioridad.
  • Campos de contexto: workflow.name y execution.id.
  • Buenas prácticas: prueba con pin/unpin, ajusta tipos y valida entradas.

¿Te gustaría compartir cómo etiquetas la prioridad o qué campos extra añadirías a tu respuesta por webhook?