Gå til hovedindhold

n8n-workflows

AI-School kan n8n-workflows starte via en produktions-webhook. Det er nyttigt, når du vil starte en automatiseret proces uden for AI-School, for eksempel oprettelse af en opgave, opdatering af en CRM-post, start af en rapporteringsflow eller videresendelse af formularoplysninger til et andet system.

Eksempel: nyhedsartikel på skolens hjemmeside​

Lad os antage, at skolen har oprettet en n8n-workflow, som publicerer en nyhedsartikel på skolens WordPress-hjemmeside. I AI-School udfylder du så kun en kort tekst, for eksempel et par sætninger om en projektuge, sportsdag eller åbent hus. Med den tekst starter du workflowet i n8n.

n8n-workflowet kan derefter for eksempel:

  1. Lave en pæn kladde fra den korte tekst med en LLM-node og en prompt, der passer godt til skolens tone.
  2. Få lavet en passende illustration med en anden LLM-node, for eksempel i skolens farver og i en genkendelig illustrativ stil.
  3. Gøre teksten og billedet klar som blogindlæg eller publicere dem på WordPress-hjemmesiden.

Sådan arbejder AI-School og n8n sammen: I AI-School vælger brugeren workflowet og udfylder de nødvendige oplysninger. n8n udfører derefter de automatiserede trin og sørger for, at nyhedsartiklen havner pænt på hjemmesiden.

Hvad gør denne integration?​

Du starter en n8n-workflow fra workflow-oversigten. Kun produktions-webhooken, POST og Header Auth er påkrævet. Felter og tilbagemeldinger fra n8n er valgfrie og kan konfigureres uafhængigt af hinanden.

  • Hvis workflowet ikke har felter, kaldes webhooken med det samme.
  • Hvis workflowet har felter, åbnes først en formular. Brugeren udfylder felterne og starter derefter workflowet med knappen.
  • De udfyldte værdier sendes som JSON i en POST-request til n8n-webhooken.
  • Uden tilbagemeldinger bekræfter AI-School kun, at workflowet er startet og fortsætter i n8n. Vinduet viser ingen spinner og kan lukkes med det samme.
  • Hvis dette er slået til ved registreringen, kan workflowet sende mellemtrin eller afslutningen tilbage til AI-School.
  • Hvis godkendelse er slået til ved registreringen, kan brugeren træffe et valg direkte i AI-School. n8n fortsætter derefter fra ventetrinnet.

Opret n8n-workflow i AI-School​

En administrator registrerer workflowet sådan:

  1. Gå til Assistenter.
  2. Åbn fanen Workflow-assistenter.
  3. Klik på Ny workflow i kortet øverst, og vælg n8n-workflow.
  4. Udfyld workflowets navn og n8n-produktions-URL.
  5. Konfigurer Header authentication med et header name og en hemmelig header value.
  6. Under Tilbagemeldinger fra n8n skal du kun markere de dele, som faktisk er bygget ind i denne n8n-workflow: fremdrift, godkendelse og/eller workflowets afslutning.
  7. Tilføj eventuelt de felter, der skal medsendes i POST-requesten.
  8. Gem workflowet.

Alle tre tilbagemeldingsmuligheder er som standard slået fra. Hvis du senere tilføjer callbacks eller et godkendelsestrin i n8n, skal du også opdatere registreringen i AI-School. Dialogen ved dermed, om den kun skal vise en startbekræftelse eller fortsat vente på flere signaler.

Felter​

  • Felter er valgfrie.
  • Hvert felt har ét feltnavn og en type.
  • Understøttede felttyper er kort tekst, lang tekst, tal, ja/nej, dato, ét valg og flere valg.
  • Ved Ét valg og Flere valg tilføjer du de tilgængelige muligheder. Ét valg vises som en kompakt valgliste; Flere valg viser afkrydsningsfelter. Den valgte værdi eller de valgte værdier sendes med i JSON-bodyen.
  • Obligatoriske felter skal være udfyldt, før workflowet kan startes.
  • Feltnavnet bliver key i JSON-bodyen, der sendes til n8n.

Opret en kompatibel workflow i n8n​

  1. Opret en ny workflow i n8n.
  2. Tilføj som første node en Webhook.
  3. Giv denne node det præcise navn Start workflow. Eksemplerne længere nede bruger dette navn.
  4. Sæt HTTP Method til POST.
  5. Vælg Header Auth under Authentication, og vælg en Header Auth-credential.
  6. Indtast i den credential den samme headername og hemmelige værdi som i workflowet i AI-School.
  7. Sæt Respond eller Response Mode til Immediately. Appen får så straks en bekræftelse på, at startanmodningen er modtaget, mens n8n fortsætter arbejdet.
  8. Kopiér Production URL fra Webhook-noden til feltet n8n-produktions-URL i AI-School. Brug ikke test-URL'en med /webhook-test/.
  9. Aktivér workflowet i n8n.

Data fra AI-School ligger i n8n under body. Integrationsoplysningerne ligger derfor under body.integration. Fjern ikke disse data i en Edit Fields-, Set- eller Code-node. Eksemplerne herunder læser dem altid direkte tilbage fra noden Start workflow.

Eksempel på JSON-body​

Hvis du definerer felter med navnene prompt, klantnaam, doelgroepen og datum, modtager n8n for eksempel denne JSON-body. AI-School tilføjer automatisk integration-objektet.

{
"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-tokenet gælder for én enkelt udførelse. Gem det ikke i logs, fast konfiguration eller andre systemer.

Valgfrit: send fremdrift og afslutning tilbage​

AI-School kan kun vise det, n8n melder tilbage. Brug kun disse callbacks, hvis du ved registreringen har slået Meld mellemliggende fremdrift og/eller Meld workflowets afslutning til.

Konfigurer HTTP Request-node​

  1. Tilføj en HTTP Request-node og kald den for eksempel Meld fremdrift.

  2. Sæt Method til POST.

  3. Klik på Expression ved URL.

  4. Indsæt præcis dette udtryk:

    {{ $('Start workflow').first().json.body.integration.callbackUrl }}
  5. Vælg None under Authentication. Det midlertidige token tilføjes som header i næste trin.

  6. Slå Send Headers til, og tilføj disse to headers:

    NameValue
    AuthorizationBearer {{ $('Start workflow').first().json.body.integration.callbackToken }}
    Content-Typeapplication/json
  7. Slå Send Body til.

  8. Vælg Body Content Type: JSON og Specify Body: Using JSON.

  9. Indsæt nedenstående JSON i feltet 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 oprette"
},
"message": "Dokumentet bliver oprettet."
}
  1. Vælg Execute step, mens du tester workflowet via appen. Noden skal returnere status 200.

Kopiér denne HTTP Request-node til hver statusmeddelelse. Tilpas mindst eventId, step.id, step.label og message i hver kopi.

Konfigurer sidste callback​

Hvis Meld workflowets afslutning er slået til, skal der ligge en sidste callback i slutningen af hver mulig rute. Brug type: "completed" ved succes, type: "failed" ved en fejl, du selv håndterer, og type: "rejected" når brugeren afviser workflowet.

For en vellykket udførelse kan bodyen se sådan ud:

{
"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": "Workflow afsluttet"
},
"message": "Workflowet er afsluttet.",
"output": {
"resultaat": "Kort beskrivelse eller link til resultatet"
}
}

Brug et forskelligt eventId for hver callback inden for den samme udførelse. Brug også altid en tydelig step.label: Denne tekst ser brugeren i udførelsesvinduet.

Valgfrit: bed om godkendelse i appen​

Konfigurer Wait-node​

  1. Tilføj en Wait-node der, hvor godkendelse er nødvendig.
  2. Vælg On Webhook Call under Resume.
  3. Sæt HTTP Method til POST.
  4. Vælg Header Auth under Authentication.
  5. Vælg den samme Header Auth-credential som ved noden Start workflow.
  6. Placer en kopi af den tidligere konfigurerede HTTP Request-node før Wait-noden, og kald den Bed om godkendelse.
  7. Brug den samme dynamiske URL og de samme headers i denne node. Udskift kun JSON-bodyen med:
{
"tenant": "{{ $('Start workflow').first().json.body.integration.tenant }}",
"runId": "{{ $('Start workflow').first().json.body.integration.runId }}",
"eventId": "kontrol-dokument",
"type": "approval_required",
"executionId": "{{ $execution.id }}",
"step": {
"id": "kontrol_document",
"label": "Kontrollere dokument"
},
"approval": {
"question": "Må workflowet fortsætte?",
"context": "Kontrollér først det genererede dokument.",
"resumeUrl": "{{ $execution.resumeUrl }}",
"choices": [
{ "value": "approve", "label": "Godkende" },
{ "value": "reject", "label": "Afvise" }
]
}
}

Forbind Bed om godkendelse med Wait-noden. Brugeren ser derefter knapperne i AI-School. Den hemmelige resume-URL gives ikke til browseren; serveren sender valget sikkert til Wait-noden.

Håndter valget efter Wait-noden​

  1. Tilføj en Switch-node efter Wait-noden.

  2. Brug denne værdi til kontrol:

    {{ $json.body.decision }}
  3. Opret for eksempel en rute for approve og en rute for reject.

  4. Lad hver rute slutte med en passende completed, rejected eller failed callback.

En valgværdi må kun indeholde bogstaver, tal, _ og -. Labelen må gerne indeholde almindelig læsbar tekst.

Konfigurer produktions callback-URL​

Produktions callback-URL'en for AI-School er:

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

Indsæt ikke denne URL som fast tekst i hver callback-node. Vælg Expression i URL-feltet på HTTP Request-noden, og brug:

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

AI-School leverer dermed automatisk den rigtige produktions-URL ved hver start. Den faste URL ovenfor bruger du kun til at kontrollere under test, om udtrykket peger på AI-School.

Callables triggerCustomN8nWorkflow, triggerN8nWorkflow og resumeN8nWorkflow kaldes af appen selv. Du behøver ikke at konfigurere disse URL'er i n8n.

Send uventede fejl tilbage​

En almindelig failed callback virker kun, når workflowet når den pågældende HTTP Request-node. Brug derfor også et centralt n8n Error Workflow til uventede nodefejl.

Opret centralt Error Workflow​

  1. Opret en separat workflow i n8n med navnet AI-School - fejl terugsturen.

  2. Tilføj en Error Trigger-node.

  3. Tilføj derefter en HTTP Request-node.

  4. Sæt Method til POST.

  5. Indtast denne faste produktions-URL under URL:

    https://europe-west1-ai-school-pro.cloudfunctions.net/n8nWorkflowExecutionFailed
  6. Vælg Authentication: None.

  7. Slå Send Headers til, og tilføj:

    NameValue
    n8n-handihow-nameden hemmelige standardværdi, du modtager fra platformadministratoren
    Content-Typeapplication/json
  8. Slå Send Body til, vælg JSON, og indsæt denne body:

{
"executionId": "{{ $json.execution.id }}",
"workflowId": "{{ $json.workflow.id }}",
"workflowName": "{{ $json.workflow.name }}",
"lastNode": "{{ $json.execution.lastNodeExecuted }}",
"message": "{{ $json.execution.error.message }}"
}
  1. Aktivér Error Workflowet.
  2. Åbn indstillingerne for den almindelige workflow, og vælg dette nye Error Workflow under Error Workflow.

Send altid mindst én fremdrifts-callback straks efter Start workflow med executionId: "{{ $execution.id }}". Dermed ved appen, hvilken udførelse en uventet n8n-fejl hører til.

Vigtige begrænsninger​

  • Kun webhook-triggers understøttes.
  • Kun produktions-webhook-URL'er understøttes.
  • Test-webhook-URL'er med /webhook-test/ afvises.
  • Kun POST understøttes.
  • Kun generisk header authentication understøttes.
  • Header value behandles som hemmelig i applikationen.
  • Callback-tokens og resume-URL'er behandles kun server-side og er ikke direkte tilgængelige for brugere.
  • Tenant bestemmes server-side ud fra den indloggede bruger, ikke ud fra en værdi, browseren sender med.

Fejlfinding​

  • 404 eller webhook ikke registreret: aktivér workflowet i n8n, og brug produktions-URL'en.
  • Autentificeringsfejl: kontroller, at header name og value er helt ens i begge systemer.
  • Manglende data: kontroller, at feltnavnene i applikationen svarer til de keys, som n8n forventer.
  • Ingen request i n8n: kontroller, at workflowet starter med en webhook-trigger og bruger POST.
  • Udførelsesvinduet bliver ved med at køre: har du slået Meld workflowets afslutning til, så kontrollér, at n8n sender en sidste completed, failed eller rejected callback. Hvis du ikke forventer tilbagemeldinger, så slå alle tre muligheder fra ved registreringen.
  • Ingen fremdrift vises: kontroller, at Meld mellemliggende fremdrift er slået til ved registreringen, at integration-objektet bevares, og at hver callback har et unikt eventId.
  • Godkendelsesknapper virker ikke: kontroller Wait-noden, resumeUrl, header authentication og de tilladte tegn i choices[].value.