Validación de mensajes y respuestas estructuradas con JavaScript
Clase 5 de 16 • Curso 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?