n8n arbetsflöden
AI-School kan starta n8n-arbetsflöden via en produktions-webhook. Detta är användbart när du utanför AI-School vill påbörja en automatiserad process, till exempel skapa en uppgift, uppdatera en CRM-post, starta en rapporteringsflöde eller vidarebefordra formulärdata 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å endast 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.
Sedan kan n8n-arbetsflödet till exempel:
- Från den korta texten skapa en snygg utkast-text med en LLM-nod och en prompt som passar skolans ton.
- Låt en passande illustration skapas med en andra LLM-nod, till exempel i skolans färger och i en igenkännbar illustrativ stil.
- Förbered 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 nödvändig information. 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, kallas webhooken direkt upp.
- 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-förfrågan till n8n-webhooken.
- Utan återkoppling bekräftar AI-School endast att arbetsflödet har startats och körs vidare i n8n. Fönstret visar ingen spinner och kan stängas direkt.
- Om detta aktiverats i registreringen kan arbetsflödet skicka tillbaka mellansteget eller slutet till AI-School.
- Om godkännande aktiverats i registreringen kan användaren göra ett val direkt i AI-School. Därefter fortsätter n8n från det väntande steget.
Skapa n8n-arbetsflöde i AI-School
En administratör registrerar arbetsflödet på följande sätt:
- Gå till Assistenter.
- Öppna Arbetsflöden.
- Välj Nytt n8n-arbetsflöde.
- Fyll i namnet på arbetsflödet och n8n-produktions-URL.
- Ange Header authentication med ett header-namn och hemligt header-värde.
- Under Återkopplingar från n8n markera endast de delar som faktiskt har byggts in i detta n8n-arbetsflöde: framsteg, godkännande och/eller slutet av arbetsflödet.
- Lägg till eventuellt fält som ska skickas i POST-förfrågan.
- Spara arbetsflödet.
Alla tre återkopplingsalternativ står som standard avstängda. Om du senare lägger till callbacks eller ett godkännandasteg i n8n, uppdatera även registreringen i AI-School. Dialogen vet då om den bara ska visa en startbekräftelse eller vänta på vidare signaler.
Fält
- Fält är valfria.
- Varje fält har ett fält-namn och en typ.
- Stödta fält-typer är kort text, långt text, tal, ja/nej, datum, ett val och flera val.
- Vid Ett val och Flera val läggs till de tillgängliga alternativen. Ett val visas som en kompakt rullgardinsmeny; Flera val visar kryssrutor. Det valda värdet eller värdena skickas i JSON-kroppen.
- Obligatoriska fält måste fyllas i innan arbetsflödet kan startas.
- Fältets namn blir nyckeln i JSON-kroppen som skickas till n8n.
Kompatibelt arbetsflöde i n8n
- Skapa ett nytt arbetsflöde i n8n.
- Lägg till som första nod en Webhook.
- Ge denna nod exakt namnet Start workflow. Följande exempel använder detta namn.
- Sätt HTTP Method till POST.
- Välj Authentication som Header Auth och välj ett Header Auth-referens.
- Ange i den referensen samma header-namn och hemliga värde som i arbetsflödet i AI-School.
- Sätt Respond eller Response Mode till Immediately. Appen får då omedelbart en framgångsrik startbekräftelse medan n8n fortsätter arbeta.
- Kopiera produktions-URL:en 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 uppgifter i en Edit Fields-, Set- eller Code-nod. Nedan följer exemplen som läser dem direkt från noden Start workflow.
Exempel på JSON-kroppen
Om du definierar fält med namnen prompt, kundnamn, målgrupper och datum, får n8n till exempel denna JSON-kropp. AI-School lägger automatiskt till integration-objektet.
{
"prompt": "Gör en kort sammanfattning av begäran.",
"kundnamn": "Exempelorganisation",
"målgrupper": ["medarbetare", "föräldrar"],
"datum": "2026-09-22",
"integration": {
"runId": "chat-dokument-id",
"tenant": "default",
"callbackUrl": "https://europe-west1-ai-school-pro.cloudfunctions.net/n8nWorkflowCallback",
"callbackToken": "tillfälligt-token-för-denna-körningen"
}
}
Callback-tokenet hör till en enda körning. Lagra det inte i loggar, fast konfiguration eller andra system.
Valfritt: återkoppling om framsteg och avslutning
AI-School kan bara visa vad n8n återkopplar. Använd dessa callbacks endast om registreringen har aktiverat Meddela mellanliggande framsteg och/eller Meddela arbetsflödets slut.
Inställning av HTTP Request-nod
-
Lägg till en HTTP Request-nod och döp den till exempel till Meddela framsteg.
-
Sätt Method till POST.
-
Klicka på URL och välj Expression.
-
Klistra in exakt denna uttryck:
{{ $('Start workflow').first().json.body.integration.callbackUrl }} -
Välj Authentication till None. Det tillfälliga tokenet läggs till som header i nästa steg.
-
Sätt Send Headers på och lägg till dessa två headers:
Name Value AuthorizationBearer {{ $('Start workflow').first().json.body.integration.callbackToken }}Content-Typeapplication/json -
Sätt Send Body på.
-
Välj Body Content Type: JSON och Specify Body: Using JSON.
-
Klistra in nedanstående JSON i fältet JSON:
{
"tenant": "{{ $('Start workflow').first().json.body.integration.tenant }}",
"runId": "{{ $('Start workflow').first().json.body.integration.runId }}",
"eventId": "document-skapa-startad",
"type": "progress",
"executionId": "{{ $execution.id }}",
"step": {
"id": "document_skapas",
"label": "Dokument skapas"
},
"message": "Dokumentet håller på att skapas."
}
- Välj Execute step medan du testar arbetsflödet i appen. Nodens status bör returnera 200.
Kopiera denna HTTP Request-nod för varje statusmeddelande. Anpassa i varje kopia åtminstone eventId, step.id, step.label och message.
Slutlig callback
Om Meddela arbetsflödets slut är aktiverat, ska vid slutet av varje möjlig rutt en sista callback finnas. Använd type: "completed" vid framgång, type: "failed" vid ett fel du själv hanterar och type: "rejected" när användaren avvisar arbetsflödet.
För en lyckad körning kan kroppen se ut så här:
{
"tenant": "{{ $('Start workflow').first().json.body.integration.tenant }}",
"runId": "{{ $('Start workflow').first().json.body.integration.runId }}",
"eventId": "arbetsflöde-avslutat",
"type": "completed",
"executionId": "{{ $execution.id }}",
"step": {
"id": "avslutning",
"label": "Arbetsflöde avslutat"
},
"message": "Arbetsflödet är avslutat.",
"output": {
"resultat": "Kort beskrivning eller länk till resultatet"
}
}
Använd vid varje callback ett annat eventId. Ge också alltid en tydlig step.label: denna text visas i körningsfönstret.
Valfritt: bekräftelse i appen
Wait-nod inställning
- Lägg till en Wait-nod där bekräftelse behövs.
- Välj i Resume alternativet On Webhook Call.
- Sätt HTTP Method till POST.
- Välj Authentication till Header Auth.
- Välj samma Header Auth-referens som vid noden Start workflow.
- Placera före Wait-noden en kopia av den tidigare konfigurerade HTTP Request-noden och kalla den Fråga om bekräftelse.
- Använd i denna nod samma dynamiska URL och headers. Ändra endast JSON-kroppen till:
{
"tenant": "{{ $('Start workflow').first().json.body.integration.tenant }}",
"runId": "{{ $('Start workflow').first().json.body.integration.runId }}",
"eventId": "kontroll-dokument",
"type": "approval_required",
"executionId": "{{ $execution.id }}",
"step": {
"id": "kontroll_dokument",
"label": "Kontrollera dokument"
},
"approval": {
"question": "Ska arbetsflödet fortsätta?",
"context": "Kontrollera det genererade dokumentet först.",
"resumeUrl": "{{ $execution.resumeUrl }}",
"choices": [
{ "value": "approve", "label": "Godkänn" },
{ "value": "reject", "label": "Avvisa" }
]
}
}
Koppla Fråga om bekräftelse till Wait-noden. Användaren ser sedan knapparna i AI-School. Den hemliga resume-URL:en ges inte till webbläsaren; servern skickar valet säkert till Wait-noden.
Bearbeta val efter Wait-noden
-
Lägg till en Switch-nod efter Wait-noden.
-
Använd värdet som ska kontrolleras:
{{ $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 lämplig
completed,rejectedellerfailedcallback.
Ett valvärde får endast innehålla bokstäver, siffror, _ och -. Etiketten får gärna vara vanlig läsbar text.
Produktions callback-url inställs
Produktions callback-url för AI-School är:
https://europe-west1-ai-school-pro.cloudfunctions.net/n8nWorkflowCallback
Klistra inte in denna URL som vanlig text i varje callback-nod. Välj i URL-fältet för HTTP Request-noden Expression och använd:
{{ $('Start workflow').first().json.body.integration.callbackUrl }}
AI-School levererar därmed vid varje start automatiskt rätt produktions-URL. Den fasta URL:en ovan använder du endast för att under testningen kontrollera att uttrycket hänvisar till AI-School.
Anropande funktioner triggerCustomN8nWorkflow, triggerN8nWorkflow och resumeN8nWorkflow kallas av appen själv. Dessa URL:er behöver du inte konfigurera i n8n.
Oväntade fel tillbaka
En vanlig failed-callback fungerar endast när arbetsflödet når motsvarande HTTP Request-nod. Använd för oväntade nodfel även en central n8n Error Workflow.
Central Error Workflow
-
Skapa i n8n en separat arbetsflöde med namnet AI-School - fel tillbaka.
-
Lägg till en Error Trigger-nod.
-
Lägg därefter till en HTTP Request-nod.
-
Sätt Method till POST.
-
Ange denna fasta produktions-URL i URL:
https://europe-west1-ai-school-pro.cloudfunctions.net/n8nWorkflowExecutionFailed -
Välj Authentication: None.
-
Sätt Send Headers på och lägg till:
Name Value n8n-handihow-nameden hemliga standardvärdet du får av plattformens administratör Content-Typeapplication/json -
Sätt Send Body på, välj JSON och klistra in 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 i Error Workflow denna nya Error Workflow.
Skicka direkt efter Start workflow alltid minst en framstegs callback med executionId: "{{ $execution.id }}". Då vet appen vilken körning en oväntad n8n-fel tillhör.
Viktiga begränsningar
- Endast webhook-utlösare stöds.
- Endast produktions-webhook-URL:er stöds.
- Test-webhook-URL:er med
/webhook-test/avvisas. - Endast POST stöds.
- Endast generisk header-autentisering 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.
- Tenanten bestäms server-side utifrån inloggad användare, inte utifrån ett värde som webbläsaren skickar.
Felsökning
- 404 eller webhook inte registrerad: aktivera arbetsflödet i n8n och använd produktions-URL:en.
- Autentiseringsfel: kontrollera att header-namn och värde i båda systemen är exakt lika.
- Saknade data: kontrollera att fältnamnen i applikationen matchar nycklarna som n8n förväntar.
- Ingen begäran i n8n: kontrollera att arbetsflödet börjar med en webhook-trigg och använder POST.
- Körningsfönstret fortsätter att köra: om du aktiverat Meddela arbetsflödets slut, kontrollera om n8n skickar en sista
completed,failedellerrejected-callback. Om du inte förväntar dig återkopplingar, stäng av alla tre alternativen i registreringen. - Inget framsteg synligt: kontrollera att Meddela mellanliggande framsteg är aktiverat i registreringen, eller att
integration-objektet behålls och att varje callback har ett unikteventId. - Godkännandeknappar fungerar inte: kontrollera Wait-noden,
resumeUrl, header-auth och tillåtna tecken ichoices[].value.