n8n-arbetsflöden
AI-School kan starta n8n-arbetsflöden via en produktions-webhook. Det är användbart när du vill starta en automatiserad process utanför AI-School, till exempel skapa en uppgift, uppdatera en CRM-post, starta ett rapportflöde eller skicka formulärdata vidare till ett annat system.
Exempel: nyhetsartikel på skolans webbplats
Anta att skolan har skapat ett n8n-arbetsflöde som publicerar en nyhetsartikel på skolans WordPress-webbplats. I AI-School fyller du då bara i en kort text, till exempel några meningar om en projektvecka, idrottsdag eller öppet hus. Med den texten startar du arbetsflödet i n8n.
n8n-arbetsflödet kan sedan till exempel:
- Göra om den korta texten till en snygg utkaststext med en LLM-node och en prompt som passar skolans ton.
- Låta en andra LLM-node skapa en passande illustration, till exempel i skolans färger och i en igenkännbar illustrativ stil.
- Förbereda eller publicera texten och bilden som ett blogginlägg på WordPress-webbplatsen.
Så fungerar AI-School och n8n tillsammans: i AI-School väljer användaren arbetsflödet och fyller i den information som behövs. n8n utför sedan de automatiserade stegen och ser till att nyhetsartikeln hamnar snyggt på webbplatsen.
Vad gör denna integration?
Du startar ett n8n-arbetsflöde från arbetsflödesöversikten. Endast produktions-webhooken, POST och Header Auth är obligatoriska. Fält och återkopplingar från n8n är valfria och kan konfigureras oberoende av varandra.
- Om arbetsflödet inte har några fält anropas webhooken direkt.
- Om arbetsflödet har fält öppnas först ett formulär. Användaren fyller i fälten och startar sedan arbetsflödet med knappen.
- De ifyllda värdena skickas som JSON i en POST-begäran till n8n-webhooken.
- Utan återkopplingar bekräftar AI-School bara att arbetsflödet har startats och fortsätter i n8n. Fönstret visar ingen spinner och kan stängas direkt.
- Om detta har aktiverats vid registreringen kan arbetsflödet skicka mellanliggande steg eller slutet tillbaka till AI-School.
- Om godkännande vid registreringen har aktiverats kan användaren göra ett val direkt i AI-School. n8n fortsätter därefter från väntestegen.
Skapa ett n8n-arbetsflöde i AI-School
En administratör registrerar arbetsflödet så här:
- Gå till Assistenter.
- Öppna fliken Arbetsflödesassistenter.
- Klicka i kortet högst upp på Nytt arbetsflöde och välj n8n-arbetsflöde.
- Fyll i arbetsflödets namn och n8n-produktions-URL:en.
- Ställ in Header authentication med ett header name och ett hemligt header value.
- Under Återkopplingar från n8n markerar du bara de delar som faktiskt har byggts i detta n8n-arbetsflöde: framsteg, godkännande och/eller arbetsflödets slut.
- Lägg eventuellt till de fält som ska skickas med i POST-begäran.
- Spara arbetsflödet.
Alla tre återkopplingsalternativ är avstängda som standard. Om du senare lägger till callbacks eller ett godkännandesteg i n8n, uppdatera även registreringen i AI-School. Dialogen vet då om den bara ska visa en startbekräftelse eller fortsätta vänta på fler signaler.
Fält
- Fält är valfria.
- Varje fält har ett fältnamn och en typ.
- Stödda fälttyper är kort text, lång text, tal, ja/nej, datum, ett val och flera val.
- För Ett val och Flera val lägger du till de tillgängliga alternativen. Ett val visas som en kompakt rullista; Flera val visar kryssrutor. Det valda värdet eller de valda värdena skickas med i JSON body.
- Obligatoriska fält måste vara ifyllda innan arbetsflödet kan startas.
- Fältnamnet blir nyckeln i JSON body som skickas till n8n.
Skapa ett kompatibelt arbetsflöde i n8n
- Skapa ett nytt arbetsflöde i n8n.
- Lägg till en Webhook-node som första node.
- Ge denna node exakt namnet Start workflow. Exemplen längre fram använder detta namn.
- Sätt HTTP Method till POST.
- Välj Header Auth under Authentication och välj ett Header Auth-credential.
- Fyll i samma header name och hemliga värde i det credentialet som i arbetsflödet i AI-School.
- Sätt Respond eller Response Mode till Immediately. Appen får då direkt en lyckad startbekräftelse, medan n8n fortsätter arbeta.
- Kopiera Production URL från Webhook-noden till fältet n8n-produktions-URL i AI-School. Använd inte test-URL:en med
/webhook-test/. - Aktivera arbetsflödet i n8n.
Data från AI-School finns i n8n under body. Integrationsdata finns därför under body.integration. Ta inte bort dessa data i en Edit Fields-, Set- eller Code-node. Exemplen nedan läser dem alltid direkt från noden Start workflow.
Exempel på JSON body
Om du definierar fält med namnen prompt, klantnaam, doelgroepen och datum, tar n8n emot till exempel denna JSON body. AI-School lägger automatiskt till objektet integration.
{
"prompt": "Maak een korte samenvatting van de aanvraag.",
"klantnaam": "Voorbeeldorganisatie",
"doelgroepen": ["medewerkers", "ouders"],
"datum": "2026-09-22",
"integration": {
"runId": "chat-document-id",
"tenant": "default",
"callbackUrl": "https://europe-west1-ai-school-pro.cloudfunctions.net/n8nWorkflowCallback",
"callbackToken": "tijdelijk-token-voor-deze-uitvoering"
}
}
Callback-token hör till en körning. Spara det inte i loggar, fast konfiguration eller andra system.
Valfritt: skicka tillbaka framsteg och slutförande
AI-School kan bara visa det som n8n återkopplar. Använd dessa callbacks endast om du vid registreringen har aktiverat Mellanliggande framsteg rapporteras och/eller Slutet av arbetsflödet rapporteras.
Ställa in HTTP Request-noden
-
Lägg till en HTTP Request-node och kalla den till exempel Meddela framsteg.
-
Sätt Method till POST.
-
Klicka på Expression vid URL.
-
Klistra in exakt detta uttryck:
{{ $('Start workflow').first().json.body.integration.callbackUrl }} -
Välj None under Authentication. Det tillfälliga tokenet läggs till som header i nästa steg.
-
Aktivera Send Headers och lägg till dessa två headers:
Name Value AuthorizationBearer {{ $('Start workflow').first().json.body.integration.callbackToken }}Content-Typeapplication/json -
Aktivera Send Body.
-
Välj Body Content Type: JSON och Specify Body: Using JSON.
-
Klistra in JSON nedan i fältet JSON:
{
"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": "Dokument skapas"
},
"message": "Dokumentet skapas."
}
- Välj Execute step medan du testar arbetsflödet via appen. Noden ska få status 200 tillbaka.
Kopiera denna HTTP Request-node för varje statusmeddelande. Anpassa per kopia minst eventId, step.id, step.label och message.
Ställa in sista callbacken
Om Slutet av arbetsflödet rapporteras är aktiverat måste det finnas en sista callback i slutet av varje möjlig väg. Använd type: "completed" vid lyckat resultat, type: "failed" för ett fel du själv hanterar och type: "rejected" när användaren avvisar arbetsflödet.
För en lyckad körning kan body se ut så här:
{
"tenant": "{{ $('Start workflow').first().json.body.integration.tenant }}",
"runId": "{{ $('Start workflow').first().json.body.integration.runId }}",
"eventId": "workflow-afgerond",
"type": "completed",
"executionId": "{{ $execution.id }}",
"step": {
"id": "afronding",
"label": "Arbetsflöde slutfört"
},
"message": "Arbetsflödet är slutfört.",
"output": {
"resultaat": "Kort beskrivning eller länk till resultatet"
}
}
Använd ett annat eventId för varje callback inom samma körning. Använd också alltid en tydlig step.label: användaren ser denna text i körningsfönstret.
Valfritt: be om godkännande i appen
Ställa in Wait-noden
- Lägg till en Wait-node där godkännande behövs.
- Välj On Webhook Call under Resume.
- Sätt HTTP Method till POST.
- Välj Header Auth under Authentication.
- Välj samma Header Auth-credential som för noden Start workflow.
- Placera en kopia av den tidigare konfigurerade HTTP Request-noden före Wait-noden och kalla den Fråga om godkännande.
- Använd samma dynamiska URL och headers i denna node. Ersätt bara JSON body med:
{
"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": "Kontrollera dokument"
},
"approval": {
"question": "Mag de workflow doorgaan?",
"context": "Kontrollera först det genererade dokumentet.",
"resumeUrl": "{{ $execution.resumeUrl }}",
"choices": [
{ "value": "approve", "label": "Godkänna" },
{ "value": "reject", "label": "Avvisa" }
]
}
}
Anslut Fråga om godkännande till Wait-noden. Användaren ser därefter knapparna i AI-School. Den hemliga resume-url:en ges inte till webbläsaren; servern skickar valet säkert till Wait-noden.
Bearbeta valet efter Wait-noden
-
Lägg till en Switch-node efter Wait-noden.
-
Använd detta som värde att kontrollera:
{{ $json.body.decision }} -
Skapa till exempel en väg för
approveoch en väg förreject. -
Låt varje väg avslutas med en passande
completed,rejectedellerfailedcallback.
Ett valvärde får bara innehålla bokstäver, siffror, _ och -. Labeln får däremot innehålla vanlig läsbar text.
Ställa in produktions callback-url
Produktions callback-url för AI-School är:
https://europe-west1-ai-school-pro.cloudfunctions.net/n8nWorkflowCallback
Klistra inte in denna URL som fast text i varje callback-node. Välj Expression i URL-fältet för HTTP Request-noden och använd:
{{ $('Start workflow').first().json.body.integration.callbackUrl }}
AI-School levererar därmed automatiskt rätt produktions-URL vid varje start. Den fasta URL:en ovan använder du bara för att kontrollera under testning att uttrycket pekar på AI-School.
Callables triggerCustomN8nWorkflow, triggerN8nWorkflow och resumeN8nWorkflow anropas av appen själv. Du behöver inte ställa in dessa URL:er i n8n.
Skicka oväntade fel tillbaka
En vanlig failed-callback fungerar bara när arbetsflödet når den aktuella HTTP Request-noden. Använd dessutom ett centralt n8n Error Workflow för oväntade nodefel.
Skapa ett centralt Error Workflow
-
Skapa ett separat arbetsflöde i n8n med namnet AI-School - fouten terugsturen.
-
Lägg till en Error Trigger-node.
-
Lägg därefter till en HTTP Request-node.
-
Sätt Method till POST.
-
Fyll i denna fasta produktions-URL under URL:
https://europe-west1-ai-school-pro.cloudfunctions.net/n8nWorkflowExecutionFailed -
Välj Authentication: None.
-
Aktivera Send Headers och lägg till:
Name Value n8n-handihow-namede hemliga standardvärde som du får från plattformsadministratören Content-Typeapplication/json -
Aktivera Send Body, välj JSON och klistra in denna body:
{
"executionId": "{{ $json.execution.id }}",
"workflowId": "{{ $json.workflow.id }}",
"workflowName": "{{ $json.workflow.name }}",
"lastNode": "{{ $json.execution.lastNodeExecuted }}",
"message": "{{ $json.execution.error.message }}"
}
- Aktivera Error Workflow.
- Öppna inställningarna för det vanliga arbetsflödet och välj detta nya Error Workflow under Error Workflow.
Skicka direkt efter Start workflow alltid minst en framstegscallback med executionId: "{{ $execution.id }}". Då vet appen vilken körning en oväntad n8n-fel tillhör.
Viktiga begränsningar
- Endast webhook-triggers stöds.
- Endast produktions-webhook-URL:er stöds.
- Test-webhook-URL:er med
/webhook-test/avvisas. - Endast POST stöds.
- Endast generic header authentication stöds.
- Header-värdet behandlas som hemligt i applikationen.
- Callback-token och resume-url:er behandlas endast server-side och är inte direkt tillgängliga för användare.
- Tenant bestäms server-side utifrån den inloggade användaren, inte utifrån ett värde som webbläsaren skickar med.
Felsökning
- 404 eller webhook inte registrerad: aktivera arbetsflödet i n8n och använd produktions-URL:en.
- Autentiseringsfel: kontrollera att header name och value är exakt desamma i båda systemen.
- Saknade data: kontrollera att fältnamnen i applikationen överensstämmer med de keys som n8n förväntar sig.
- Ingen request i n8n: kontrollera att arbetsflödet börjar med en webhook trigger och använder POST.
- Körningsfönstret fortsätter snurra: har du aktiverat Slutet av arbetsflödet rapporteras, kontrollera då att n8n skickar en sista
completed,failedellerrejectedcallback. Förväntar du dig inga återkopplingar, stäng av alla tre alternativen vid registreringen. - Ingen framstegsvisning: kontrollera att Mellanliggande framsteg rapporteras är aktiverat vid registreringen, att
integration-objektet behålls och att varje callback har ett unikteventId. - Godkännandeknapparna fungerar inte: kontrollera Wait-noden,
resumeUrl, header authentication och de tillåtna tecknen ichoices[].value.