n8n Workflows
AI-Public kann n8n-Workflows über einen Produktions-Webhook starten. Das ist nützlich, wenn du außerhalb von AI-Public einen automatisierten Prozess starten möchtest, z. B. das Anlegen einer Aufgabe, das Aktualisieren eines CRM-Eintrags, das Starten eines Reporting-Flow oder das Weiterleiten von Formulardaten an ein anderes System.
Beispiel: Nachrichtenartikel auf der Website der Organisation
Angenommen, die Organisation hat einen n8n-Workflow erstellt, der einen Nachrichtenartikel auf der WordPress-Website veröffentlicht. In AI-Public gibst du dann nur einen kurzen Textabschnitt ein, z. B. ein paar Sätze über eine Besprechung, ein Projekt oder eine öffentliche Ankündigung. Mit diesem Text startest du den Workflow in n8n.
Der n8n-Workflow kann dann zum Beispiel:
- Aus dem kurzen Text einen fertigen Textentwurf mit einer LLM-Node und einer Prompt, die zum Ton der Organisation passt.
- Eine passende Illustration erstellen lassen, z. B. in den Corporate-Colors und in einem erkennbaren illustrativen Stil.
- Den Text und das Bild als Blogbeitrag vorbereiten oder auf der WordPress-Website veröffentlichen.
So arbeiten AI-Public und n8n zusammen: In AI-Public wählt der Benutzer den Workflow und gibt die benötigten Informationen ein. n8n führt anschließend die automatisierten Schritte aus und sorgt dafür, dass der Newsartikel ordentlich auf der Website landet.
Was macht diese Integration?
Du startest einen n8n-Workflow aus derWorkflow-Übersicht. Nur der Produktions-Webhook, POST und Header-Auth sind Pflicht. Felder und Rückmeldungen aus n8n sind optional und können unabhängig voneinander eingerichtet werden.
- Hat der Workflow keine Felder, wird der Webhook sofort aufgerufen.
- Hat der Workflow Felder, öffnet sich zuerst ein Formular. Der Benutzer füllt die Felder aus und startet danach den Workflow mit dem Button.
- Die ausgefüllten Werte werden als JSON im POST-Request an den n8n-Webhook mitgesendet.
- Ohne Rückmeldungen bestätigt AI-Public nur, dass der Workflow gestartet wurde und in n8n weiterläuft. Das Fenster zeigt keinen Spinner und kann direkt geschlossen werden.
- Wenn dies bei der Registrierung aktiviert ist, kann der Workflow Zwischen- oder Endsignale zurücksenden.
- Wenn Freigabe bei der Registrierung aktiviert ist, kann der Benutzer eine Wahl direkt in AI-Public treffen. n8n fährt danach ab dem wartenden Schritt fort.
n8n-Workflow in AI-Public erstellen
Ein Administrator registriert den Workflow wie folgt:
- Gehe zu Assistenten.
- Öffne Workflows.
- Wähle Neue n8n-Workflow.
- Gib den Namen des Workflows und die n8n-Produktions-URL ein.
- Stelle Header-Authentifizierung mit einem Header-Namen und einem geheimen Header-Wert ein.
- Unter Rückmeldungen aus n8n wähle nur die Teile aus, die tatsächlich in diesem n8n-Workflow gebaut wurden: Fortschritt, Freigabe und/oder das Ende des Workflows.
- Füge ggf. die Felder hinzu, die im POST-Request mitgesendet werden sollen.
- Speichere den Workflow.
Alle drei Rückmeldungsoptionen stehen standardmäßig aus. Wenn du später Callback oder einen Freigabeschritt in n8n hinzufügst, aktualisiere auch die Registrierung in AI-Public. Der Dialog weiß dann, ob er nur eine Startbestätigung anzeigen soll oder auf weitere Signale warten muss.
Felder
- Felder sind optional.
- Jedes Feld hat einen Feldnamen und einen Typ.
- Unterstützte Feldtypen sind kurze Text, langer Text, Zahl, ja/nein, Datum, eine Auswahl und mehrere Auswahlen.
- Bei Eine Auswahl und Mehrere Auswahlen füge die verfügbaren Optionen hinzu. Eine Auswahl wird als kompakte Auswahlliste angezeigt; Mehrere Auswahlen zeigt Kontrollkästchen. Der gewählte Wert bzw. die Werte werden im JSON-Body mitgesendet.
- Pflichtfelder müssen ausgefüllt werden, bevor der Workflow gestartet werden kann.
- Der Feldname wird zum Key im JSON-Body, der an n8n gesendet wird.
Compatible Workflow in n8n erstellen
- Erstelle in n8n einen neuen Workflow.
- Füge als erste Node einen Webhook hinzu.
- Gib dieser Node exakt den Namen Start workflow. Die Beispielausdrücke unten verwenden diesen Namen.
- Setze HTTP Method auf POST.
- Wähle Authentication: Header Auth und verwende denselben Header-Namen und denselben geheimen Wert wie in AI-Public.
- Setze Respond bzw. Response Mode auf Immediately.
- Kopiere die Production URL in das Feld n8n Produktion-URL in AI-Public. Verwende nicht die Test-URL mit
/webhook-test/. - Aktiviere den Workflow.
Die empfangenen Daten stehen unter body; die technischen Integrationsdaten stehen unter body.integration. Entferne diese nicht in einem Edit Fields-, Set- oder Code-Node.
Beispiel für den JSON-Body
Wenn du Felder mit den Namen prompt, kundename, zielgruppen und datum definierst, erhält n8n zum Beispiel diesen JSON-Body. AI-Public fügt das integration-Objekt automatisch hinzu.
{
"prompt": "Mach eine kurze Zusammenfassung der Anfrage.",
"kundename": "Beispielorganisation",
"zielgruppen": ["Bürger", "Mitarbeiter"],
"datum": "2026-09-22",
"integration": {
"runId": "chat-dokument-id",
"tenant": "default",
"callbackUrl": "https://europe-west1-ai-public-pro.cloudfunctions.net/n8nWorkflowCallback",
"callbackToken": "vorübergehendes-token-für-die-durchführung"
}
}
Der Callback-Token gehört zu einer einzelnen Ausführung. Nicht in Logs, festen Konfigurationen oder anderen Systemen speichern.
Optional: Fortschritt und Abschluss zurücksenden
AI-Public kann nur das anzeigen, was n8n zurückmeldet. Verwende diese Callbacks nur, wenn du bei der Registrierung Zwischenfortschritt melden und/oder Das Ende des Workflows melden aktiviert hast.
Stelle jeden Callback-Node wie folgt ein:
-
Wähle Methode: POST.
-
Klicke bei URL auf Expression und füge ein:
{{ $('Start workflow').first().json.body.integration.callbackUrl }} -
Wähle Authentication: None.
-
Aktiviere Send Headers und füge die folgenden Header hinzu.
-
Aktiviere Send Body und wähle Body Content Type: JSON und Specify Body: Using JSON.
Verwende diese Header:
Authorization: Bearer {{ $('Start workflow').first().json.body.integration.callbackToken }}
Content-Type: application/json
Sende z. B. diese Nachricht, wenn ein Schritt beginnt:
{
"tenant": "{{ $('Start workflow').first().json.body.integration.tenant }}",
"runId": "{{ $('Start workflow').first().json.body.integration.runId }}",
"eventId": "document-erstellt",
"type": "progress",
"executionId": "{{ $execution.id }}",
"step": {
"id": "document_maken",
"label": "Dokument erstellen"
},
"message": "Das Dokument wird erstellt."
}
- Verwende für jedes Ereignis innerhalb derselben Ausführung eine eindeutige
eventId. - Verwende eine klare niederländische
step.label; dieser Text wird in der App angezeigt. - Wenn du Das Ende des Workflows melden aktiviert hast, sende am Ende immer
type: "completed",type: "failed"odertype: "rejected". - Füge bei
completedggf. einoutput-Objekt mit dem Ergebnis hinzu. - Sende bei
failedeine verständliche Fehlermeldung mit. Die Ausführung stoppt dann auch in der App.
Optional: Freigabe in der App anfordern
Verwende einen n8n Wait-Knoten mit On Webhook Call, wenn der Workflow erst nach einer Entscheidung fortgesetzt werden darf. Sende vor dem Wait-Knoten einen Callback mit type: "approval_required":
Stelle den Wait-Knoten ein auf Resume: On Webhook Call, HTTP Method: POST und Authentication: Header Auth. Wähle denselben Header-Auth-Credentials wie bei Start workflow. Füge nach dem Wait-Knoten einen Switch-Knoten hinzu und überpr üfe darin {{ $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": "Dokument prüfen"
},
"approval": {
"question": "Darf der Workflow fortfahren?",
"context": "Überprüfe zuerst das generierte Dokument.",
"resumeUrl": "{{ $execution.resumeUrl }}",
"choices": [
{ "value": "approve", "label": "Freigeben" },
{ "value": "reject", "label": "Ablehnen" }
]
}
}
Der Benutzer sieht die Wahlmöglichkeiten im Ausführungsfenster. Nach einer Wahl erhält der Wait-Knoten unter anderem decision. Danach z. B. einen Switch-Knoten, um den richtigen Fortgang zu bestimmen.
Eine Auswahl darf nur Buchstaben, Ziffern, _ und - enthalten. Das Label darf normale lesbare Texte enthalten.
Produktions-Callback-URL einstellen
Die Produktions-Callback-URL für AI-Public lautet:
https://europe-west1-ai-public-pro.cloudfunctions.net/n8nWorkflowCallback
Kopiere diese URL nicht als festen Text in jeden Callback-Knoten. Wähle im URL-Feld des HTTP Request-Knotens Expression und verwende:
{{ $('Start workflow').first().json.body.integration.callbackUrl }}
AI-Public liefert damit bei jedem Start automatisch die richtige Produktions-URL. Die feste URL oben verwendest du, um während des Testens zu prüfen, ob der Ausdruck auf AI-Public verweist und nicht auf AI-School oder AI-Corporate.
Die Callables triggerCustomN8nWorkflow, triggerN8nWorkflow und resumeN8nWorkflow werden von der App selbst aufgerufen. Diese URLs musst du in n8n nicht konfigurieren.
Fehler behandeln
Sende erwartete Fehler mit einem Callback des Typs failed. Lege außerdem eine zentrale Error-Workflow an:
-
Erstelle einen neuen Workflow mit einem Error Trigger-Knoten.
-
Füge anschließend einen HTTP Request-Knoten hinzu mit Method: POST.
-
Trage bei URL diese feste Produktions-URL ein:
https://europe-west1-ai-public-pro.cloudfunctions.net/n8nWorkflowExecutionFailed -
Wähle Authentication: None und füge den Header
n8n-handihow-namemit dem geheimen Standardwert des Plattform-Administrators hinzu. -
Wähle einen JSON-Body und füge ein:
{
"executionId": "{{ $json.execution.id }}",
"workflowId": "{{ $json.workflow.id }}",
"workflowName": "{{ $json.workflow.name }}",
"lastNode": "{{ $json.execution.lastNodeExecuted }}",
"message": "{{ $json.execution.error.message }}"
}
- Aktiviere den Error-Workflow.
- Öffne die Einstellungen der normalen Workflow-Datei und wähle diesen unter Error Workflow aus.
Sende direkt nach dem Start workflow mindestens einen Callback mit executionId: "{{ $execution.id }}". Nur dann kann AI-Public einen unerwarteten Fehler der richtigen Ausführung zuordnen.
Wichtige Einschränkungen
- Nur Webhook-Trigger werden unterstützt.
- Nur Produktions-Webhook-URLs werden unterstützt.
- Test-Webhook-URLs mit
/webhook-test/werden verweigert. - Nur POST wird unterstützt.
- Nur generische Header-Authentifizierung wird unterstützt.
- Der Header-Wert wird in der Anwendung als Geheimnis behandelt.
- Callback-Tokens und Resume-URLs werden nur serverseitig verarbeitet und sind nicht direkt für Benutzer zugänglich.
- Die Tenant-Zuordnung erfolgt serverseitig aus dem angemeldeten Benutzer, nicht aus einem Wert, den der Browser sendet.
Probleme beheben
- 404 oder Webhook nicht registriert: Aktiviere den Workflow in n8n und verwende die Production-URL.
- Authentifizierungsfehler: Überprüfe, ob Header-Name und -Wert in beiden Systemen exakt übereinstimmen.
- Fehlende Daten: Prüfe, ob die Feldnamen in der Anwendung mit den Keys übereinstimmen, die n8n erwartet.
- Kein Request in n8n: Prüfe, ob der Workflow mit einem Webhook-Trigger beginnt und POST verwendet.
- Das Ausführungsfenster läuft weiter: Hast du Das Ende des Workflows melden aktiviert, prüfe, ob n8n einen letzten
completed,failedoderrejectedCallback sendet. Wenn du keine Rückmeldungen erwartest, schalte alle drei Optionen bei der Registrierung aus. - Keine Fortschritte sichtbar: Prüfe, ob Zwischenfortschritt melden bei der Registrierung aktiviert ist, oder ob das
integration-Objekt bestehen bleibt und ob jeder Callback eine eindeutigeeventIdhat. - Freigabe-Schaltflächen funktionieren nicht: Prüfe den Wait-Knoten,
resumeUrl, die Header-Authentifizierung und die zulässigen Zeichen inchoices[].value.