Ir al contenido principal

flujos de trabajo de n8n

AI-Public puede iniciar flujos de trabajo de n8n mediante un webhook de producción. Esto resulta útil cuando quieres iniciar un proceso automatizado fuera de AI-Public, por ejemplo crear una tarea, actualizar un registro de CRM, iniciar un flujo de informes o reenviar datos de formularios a otro sistema.

Ejemplo: artículo de noticias en el sitio web de la organización​

Supongamos que la organización ha creado un flujo de trabajo de n8n que publica un artículo de noticias en el sitio web de WordPress. En AI-Public solo introduces un breve texto, por ejemplo unas frases sobre una reunión, proyecto o anuncio público. Con ese texto inicias el flujo de trabajo en n8n.

Después, el flujo de trabajo de n8n puede, por ejemplo:

  1. Convertir el texto breve en un borrador pulido con un nodo LLM y un prompt que encaje bien con el tono de la organización.
  2. Generar una ilustración adecuada con un segundo nodo LLM, por ejemplo con los colores de la identidad visual y en un estilo ilustrativo reconocible.
  3. Dejar el texto y la imagen listos como entrada de blog o publicarlos en el sitio web de WordPress.

Así trabajan juntos AI-Public y n8n: en AI-Public el usuario elige el flujo de trabajo e introduce la información necesaria. n8n ejecuta después los pasos automatizados y se asegura de que el artículo de noticias llegue correctamente al sitio web.

¿Qué hace esta integración?​

Inicias un flujo de trabajo de n8n desde la vista general de flujos de trabajo. Solo el webhook de producción, POST y Header Auth son obligatorios. Los campos y las devoluciones de información de n8n son opcionales y pueden configurarse de forma independiente.

  • Si el flujo de trabajo no tiene campos, el webhook se llama inmediatamente.
  • Si el flujo de trabajo sí tiene campos, primero se abre un formulario. El usuario rellena los campos y después inicia el flujo de trabajo con el botón.
  • Los valores introducidos se envían como JSON en una solicitud POST al webhook de n8n.
  • Sin devoluciones de información, AI-Public solo confirma que el flujo de trabajo se ha iniciado y continúa en n8n. La ventana no muestra un spinner y puede cerrarse directamente.
  • Si esto se activó en el registro, el flujo de trabajo puede devolver pasos intermedios o el final a AI-Public.
  • Si se activó la aprobación en el registro, el usuario puede hacer una elección directamente en AI-Public. Después n8n continúa desde el paso en espera.

Crear un flujo de trabajo de n8n en AI-Public​

Un administrador registra el flujo de trabajo de la siguiente manera:

  1. Ve a Asistentes.
  2. Abre la pestaña Asistentes de flujo de trabajo.
  3. En la tarjeta superior, haz clic en Nuevo flujo de trabajo y elige flujo de trabajo de n8n.
  4. Introduce el nombre del flujo de trabajo y la URL de producción de n8n.
  5. Configura Header authentication con un nombre de cabecera y un valor secreto de cabecera.
  6. En Devoluciones de información de n8n, marca solo las partes que realmente están construidas en este flujo de trabajo de n8n: progreso, aprobación y/o el final del flujo de trabajo.
  7. Añade, si es necesario, los campos que deban enviarse en la solicitud POST.
  8. Guarda el flujo de trabajo.

Las tres opciones de devolución de información están desactivadas por defecto. Si más adelante añades callbacks o un paso de aprobación en n8n, actualiza también el registro en AI-Public. Así el diálogo sabrá si solo debe mostrar una confirmación de inicio o si debe seguir esperando más señales.

Campos​

  • Los campos son opcionales.
  • Cada campo tiene un nombre de campo y un tipo.
  • Los tipos de campo admitidos son texto corto, texto largo, número, sí/no, fecha, una opción y múltiples opciones.
  • En Una opción y Múltiples opciones añades las opciones disponibles. Una opción se muestra como una lista compacta; Múltiples opciones muestra casillas de verificación. El valor o los valores elegidos se envían en el cuerpo JSON.
  • Los campos obligatorios deben estar cumplimentados antes de que se pueda iniciar el flujo de trabajo.
  • El nombre del campo se convierte en la key del cuerpo JSON que se envía a n8n.

Crear un flujo de trabajo compatible en n8n​

  1. Crea un nuevo flujo de trabajo en n8n.
  2. Añade como primer nodo un Webhook.
  3. Dale exactamente el nombre Start workflow. Las expresiones de ejemplo siguientes usan ese nombre.
  4. Configura HTTP Method en POST.
  5. Elige Authentication: Header Auth y usa el mismo nombre de cabecera y valor secreto que en AI-Public.
  6. Configura Respond o Response Mode en Immediately.
  7. Copia la Production URL al campo n8n productie-url en AI-Public. No uses la URL de prueba con /webhook-test/.
  8. Activa el flujo de trabajo.

Los datos recibidos están bajo body; los datos técnicos de integración están bajo body.integration. No los elimines en un nodo Edit Fields, Set o Code.

Ejemplo del cuerpo JSON​

Si defines campos con los nombres prompt, klantnaam, doelgroepen y datum, n8n recibe por ejemplo este cuerpo JSON. AI-Public añade automáticamente el objeto integration.

{
"prompt": "Maak een korte samenvatting van de aanvraag.",
"klantnaam": "Voorbeeldorganisatie",
"doelgroepen": ["inwoners", "medewerkers"],
"datum": "2026-09-22",
"integration": {
"runId": "chat-document-id",
"tenant": "default",
"callbackUrl": "https://europe-west1-ai-public-pro.cloudfunctions.net/n8nWorkflowCallback",
"callbackToken": "tijdelijk-token-voor-deze-uitvoering"
}
}

El token de callback pertenece a una sola ejecución. No lo guardes en logs, configuraciones fijas ni otros sistemas.

Opcional: enviar progreso y finalización​

AI-Public solo puede mostrar lo que n8n devuelva. Usa estos callbacks solo si en el registro activaste Informar progreso intermedio y/o Informar el final del flujo de trabajo.

Configura cada nodo de callback de la siguiente manera:

  1. Elige Method: POST.

  2. En URL, haz clic en Expression y pega:

    {{ $('Start workflow').first().json.body.integration.callbackUrl }}
  3. Elige Authentication: None.

  4. Activa Send Headers y añade las cabeceras siguientes.

  5. Activa Send Body y elige Body Content Type: JSON y Specify Body: Using JSON.

Usa estas cabeceras:

Authorization: Bearer {{ $('Start workflow').first().json.body.integration.callbackToken }}
Content-Type: application/json

Por ejemplo, envía este mensaje cuando comience un paso:

{
"tenant": "{{ $('Start workflow').first().json.body.integration.tenant }}",
"runId": "{{ $('Start workflow').first().json.body.integration.runId }}",
"eventId": "document-maken-gestart",
"type": "progress",
"executionId": "{{ $execution.id }}",
"step": {
"id": "document_maken",
"label": "Crear documento"
},
"message": "Se está creando el documento."
}
  • Usa un eventId único para cada evento dentro de la misma ejecución.
  • Usa un step.label claro en neerlandés; este texto se muestra en la app.
  • Si activaste Informar el final del flujo de trabajo, envía al final siempre type: "completed", type: "failed" o type: "rejected".
  • Con completed, añade opcionalmente un objeto output con el resultado.
  • Con failed, envía un mensaje de error comprensible. La ejecución se detiene también en la app.

Opcional: pedir aprobación en la app​

Usa un nodo Wait de n8n con On Webhook Call cuando el flujo de trabajo solo deba continuar después de una elección. Antes del nodo Wait, envía un callback con type: "approval_required":

Configura el nodo Wait en Resume: On Webhook Call, HTTP Method: POST y Authentication: Header Auth. Selecciona la misma credencial Header Auth que en Start workflow. Añade después del nodo Wait un nodo Switch y comprueba en él {{ $json.body.decision }}.

{
"tenant": "{{ $('Start workflow').first().json.body.integration.tenant }}",
"runId": "{{ $('Start workflow').first().json.body.integration.runId }}",
"eventId": "controle-document",
"type": "approval_required",
"executionId": "{{ $execution.id }}",
"step": {
"id": "controle_document",
"label": "Revisar documento"
},
"approval": {
"question": "¿Puede continuar el flujo de trabajo?",
"context": "Revisa primero el documento generado.",
"resumeUrl": "{{ $execution.resumeUrl }}",
"choices": [
{ "value": "approve", "label": "Aprobar" },
{ "value": "reject", "label": "Rechazar" }
]
}
}

El usuario ve las opciones en la ventana de ejecución. Después de elegir, el nodo Wait recibe, entre otros, decision. Luego puedes usar por ejemplo un nodo Switch para determinar el siguiente paso correcto.

Un valor de opción solo puede contener letras, números, _ y -. La etiqueta sí puede contener texto normal legible.

Configurar la URL de callback de producción​

La URL de callback de producción para AI-Public es:

https://europe-west1-ai-public-pro.cloudfunctions.net/n8nWorkflowCallback

No pegues esta URL como texto fijo en cada nodo de callback. En el campo URL del nodo HTTP Request, elige Expression y usa:

{{ $('Start workflow').first().json.body.integration.callbackUrl }}

AI-Public proporciona así automáticamente la URL de producción correcta en cada inicio. La URL fija anterior la usas para comprobar durante las pruebas que la expresión apunta a AI-Public y no a AI-School o AI-Corporate.

Las callables triggerCustomN8nWorkflow, triggerN8nWorkflow y resumeN8nWorkflow son invocadas por la propia app. No necesitas configurar estas URLs en n8n.

Gestionar errores​

Devuelve los errores previstos con un callback de tipo failed. Para errores de nodo inesperados, crea además un Error Workflow central:

  1. Crea un nuevo flujo de trabajo con un nodo Error Trigger.

  2. Añade después un nodo HTTP Request con Method: POST.

  3. En URL, introduce esta URL fija de producción:

    https://europe-west1-ai-public-pro.cloudfunctions.net/n8nWorkflowExecutionFailed
  4. Elige Authentication: None y añade la cabecera n8n-handihow-name con el valor secreto predeterminado del administrador de la plataforma.

  5. Elige un cuerpo JSON y pega:

{
"executionId": "{{ $json.execution.id }}",
"workflowId": "{{ $json.workflow.id }}",
"workflowName": "{{ $json.workflow.name }}",
"lastNode": "{{ $json.execution.lastNodeExecuted }}",
"message": "{{ $json.execution.error.message }}"
}
  1. Activa el Error Workflow.
  2. Abre la configuración del flujo de trabajo normal y selecciónalo en Error Workflow.

Envía justo después de Start workflow al menos un callback con executionId: "{{ $execution.id }}". Solo así AI-Public puede vincular un error inesperado con la ejecución correcta.

Limitaciones importantes​

  • Solo se admiten triggers de webhook.
  • Solo se admiten URLs de webhook de producción.
  • Las URLs de webhook de prueba con /webhook-test/ se rechazan.
  • Solo se admite POST.
  • Solo se admite autenticación de cabecera genérica.
  • El valor de la cabecera se trata como secreto en la aplicación.
  • Los tokens de callback y las URLs de reanudación solo se procesan del lado del servidor y no están disponibles directamente para los usuarios.
  • El tenant se determina del lado del servidor a partir del usuario conectado, no a partir de un valor enviado por el navegador.

Solución de problemas​

  • 404 o webhook no registrado: activa el flujo de trabajo en n8n y usa la URL de producción.
  • Error de autenticación: comprueba que el nombre y el valor de la cabecera sean exactamente iguales en ambos sistemas.
  • Datos faltantes: comprueba que los nombres de campo en la aplicación coinciden con las keys que espera n8n.
  • No hay solicitud en n8n: comprueba que el flujo de trabajo empiece con un trigger de webhook y use POST.
  • La ventana de ejecución sigue girando: si activaste Informar el final del flujo de trabajo, comprueba que n8n envíe un último callback completed, failed o rejected. Si no esperas devoluciones, desactiva las tres opciones en el registro.
  • No se ve progreso: comprueba si Informar progreso intermedio está activado en el registro, si se conserva el objeto integration y si cada callback tiene un eventId único.
  • Los botones de aprobación no funcionan: comprueba el nodo Wait, resumeUrl, la autenticación por cabecera y los caracteres permitidos en choices[].value.