Gå til hovedinnhold

n8n-workflows

AI-School kan starte n8n-workflows via en produksjons-webhook. Dette er nyttig når du vil starte en automatisert prosess utenfor AI-School, for eksempel å opprette en oppgave, oppdatere en CRM-post, starte en rapporteringsflyt eller sende skjemadata videre til et annet system.

Eksempel: nyhetsartikkel på skolens nettside​

Anta at skolen har laget en n8n-workflow som publiserer en nyhetsartikkel på skolens WordPress-nettside. I AI-School fyller du da bare inn en kort tekst, for eksempel noen setninger om en prosjektuke, idrettsdag eller åpen dag. Med denne teksten starter du workflowen i n8n.

n8n-workflowen kan deretter for eksempel:

  1. Gjøre den korte teksten om til en pen utkasttekst med en LLM-node og en prompt som passer godt til skolens tone.
  2. Lage en passende illustrasjon med en andre LLM-node, for eksempel i skolens farger og i en gjenkjennelig illustrativ stil.
  3. Klargjøre eller publisere teksten og bildet som et blogginnlegg på WordPress-nettsiden.

Slik samarbeider AI-School og n8n: i AI-School velger brukeren workflowen og fyller inn nødvendig informasjon. n8n utfører deretter de automatiserte stegene og sørger for at nyhetsartikkelen havner pent på nettsiden.

Hva gjør denne integrasjonen?​

Du starter en n8n-workflow fra workflow-oversikten. Bare produksjons-webhooken, POST og Header Auth er obligatoriske. Felter og tilbakemeldinger fra n8n er valgfrie og kan konfigureres uavhengig av hverandre.

  • Hvis workflowen ikke har noen felter, kalles webhooken med en gang.
  • Hvis workflowen har felter, åpnes først et skjema. Brukeren fyller ut feltene og starter deretter workflowen med knappen.
  • De utfylte verdiene sendes som JSON i en POST-request til n8n-webhooken.
  • Uten tilbakemeldinger bekrefter AI-School bare at workflowen er startet og at den fortsetter i n8n. Vinduet viser ingen spinner og kan lukkes med en gang.
  • Hvis dette er slått på ved registreringen, kan workflowen sende mellomsteg eller slutten tilbake til AI-School.
  • Hvis godkjenning er slått på ved registreringen, kan brukeren gjøre et valg direkte i AI-School. n8n fortsetter deretter fra ventestegget.

Opprette n8n-workflow i AI-School​

En administrator registrerer workflowen slik:

  1. Gå til Assistenten.
  2. Åpne fanen Workflow-assistenter.
  3. Klikk på Ny workflow i kortet øverst og velg n8n-workflow.
  4. Fyll inn navnet på workflowen og n8n-produksjons-URL-en.
  5. Sett opp Header authentication med et headernavn og en hemmelig headerverdi.
  6. Kryss av under Tilbakemeldinger fra n8n bare for de delene som faktisk er bygget i denne n8n-workflowen: fremdrift, godkjenning og/eller slutten av workflowen.
  7. Legg eventuelt til feltene som skal sendes med i POST-requesten.
  8. Lagre workflowen.

Alle tre tilbakemeldingsalternativene er av som standard. Hvis du senere legger inn callbacks eller et godkjenningstrinn i n8n, må du også oppdatere registreringen i AI-School. Dialogen vet da om den bare skal vise en startbekreftelse eller fortsette å vente på flere signaler.

Felter​

  • Felter er valgfrie.
  • Hvert felt har ett feltnavn og en type.
  • Støttede felttyper er kort tekst, lang tekst, tall, ja/nei, dato, ett valg og flere valg.
  • Ved Ett valg og Flere valg legger du til de tilgjengelige alternativene. Ett valg vises som en kompakt nedtrekksliste; Flere valg viser avkrysningsbokser. Den valgte verdien eller de valgte verdiene sendes med i JSON-bodyen.
  • Obligatoriske felter må være fylt ut før workflowen kan startes.
  • Feltnavnet blir key-en i JSON-bodyen som sendes til n8n.

Lage en kompatibel workflow i n8n​

  1. Opprett en ny workflow i n8n.
  2. Legg til en Webhook-node som første node.
  3. Gi denne noden nøyaktig navnet Start workflow. Eksemplene videre bruker dette navnet.
  4. Sett HTTP Method til POST.
  5. Velg Header Auth under Authentication og velg en Header Auth-credential.
  6. Fyll inn samme headernavn og hemmelige verdi i denne credentialen som i workflowen i AI-School.
  7. Sett Respond eller Response Mode til Immediately. Appen får da umiddelbart en vellykket startbekreftelse, mens n8n fortsetter å arbeide.
  8. Kopier Production URL fra Webhook-noden til feltet n8n produksjons-url i AI-School. Ikke bruk test-URL-en med /webhook-test/.
  9. Aktiver workflowen i n8n.

Dataene fra AI-School ligger i n8n under body. Integrasjonsdataene ligger derfor under body.integration. Ikke fjern disse dataene i en Edit Fields-, Set- eller Code-node. Eksemplene nedenfor leser dem alltid direkte tilbake fra noden Start workflow.

Eksempel på JSON-body​

Hvis du definerer felter med navnene prompt, klantnaam, doelgroepen og datum, mottar n8n for eksempel denne JSON-bodyen. AI-School legger automatisk til integration-objektet.

{
"prompt": "Lag et kort sammendrag av forespørselen.",
"klantnaam": "Eksempelorganisasjon",
"doelgroepen": ["ansatte", "foreldre"],
"datum": "2026-09-22",
"integration": {
"runId": "chat-document-id",
"tenant": "default",
"callbackUrl": "https://europe-west1-ai-school-pro.cloudfunctions.net/n8nWorkflowCallback",
"callbackToken": "midlertidig-token-for-denne-kjøringen"
}
}

Callback-tokenet gjelder for én kjøring. Ikke lagre det i logger, fast konfigurasjon eller andre systemer.

Valgfritt: sende tilbake fremdrift og fullføring​

AI-School kan bare vise det n8n melder tilbake. Bruk disse callbackene bare hvis du ved registreringen har slått på Meld mellomliggende fremdrift og/eller Meld slutten av workflowen.

Sette opp HTTP Request-node​

  1. Legg til en HTTP Request-node og kall den for eksempel Meld fremdrift.

  2. Sett Method til POST.

  3. Klikk på Expression ved URL.

  4. Lim inn nøyaktig dette uttrykket:

    {{ $('Start workflow').first().json.body.integration.callbackUrl }}
  5. Velg None under Authentication. Det midlertidige tokenet legges til som header i neste steg.

  6. Slå på Send Headers og legg til disse to headerne:

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

  8. Velg Body Content Type: JSON og Specify Body: Using JSON.

  9. Lim inn JSON-en nedenfor i feltet JSON:

{
"tenant": "{{ $('Start workflow').first().json.body.integration.tenant }}",
"runId": "{{ $('Start workflow').first().json.body.integration.runId }}",
"eventId": "document-maken-startet",
"type": "progress",
"executionId": "{{ $execution.id }}",
"step": {
"id": "document_maken",
"label": "Lage dokument"
},
"message": "Dokumentet blir laget."
}
  1. Velg Execute step mens du tester workflowen via appen. Noden skal få status 200 tilbake.

Kopier denne HTTP Request-noden for hver statusmelding. Juster minst eventId, step.id, step.label og message i hver kopi.

Sette opp siste callback​

Hvis Meld slutten av workflowen er slått på, må det stå en siste callback ved slutten av hver mulige rute. Bruk type: "completed" ved suksess, type: "failed" ved en feil du håndterer selv, og type: "rejected" når brukeren avviser workflowen.

For en vellykket kjøring kan bodyen se slik ut:

{
"tenant": "{{ $('Start workflow').first().json.body.integration.tenant }}",
"runId": "{{ $('Start workflow').first().json.body.integration.runId }}",
"eventId": "workflow-fullfort",
"type": "completed",
"executionId": "{{ $execution.id }}",
"step": {
"id": "afronding",
"label": "Workflow fullført"
},
"message": "Workflowen er fullført.",
"output": {
"resultaat": "Kort beskrivelse eller lenke til resultatet"
}
}

Bruk en annen eventId for hver callback innen samme kjøring. Bruk også alltid en tydelig step.label: denne teksten ser brukeren i kjøringsvinduet.

Valgfritt: be om godkjenning i appen​

Sette opp Wait-node​

  1. Legg til en Wait-node på stedet der godkjenning trengs.
  2. Velg On Webhook Call under Resume.
  3. Sett HTTP Method til POST.
  4. Velg Header Auth under Authentication.
  5. Velg samme Header Auth-credential som ved noden Start workflow.
  6. Plasser en kopi av den tidligere konfigurerte HTTP Request-noden før Wait-noden og kall den Be om godkjenning.
  7. Bruk samme dynamiske URL og headers i denne noden. Erstatt bare JSON-bodyen med:
{
"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_document",
"label": "Kontrollere dokument"
},
"approval": {
"question": "Kan workflowen fortsette?",
"context": "Kontroller først det genererte dokumentet.",
"resumeUrl": "{{ $execution.resumeUrl }}",
"choices": [
{ "value": "approve", "label": "Godkjenn" },
{ "value": "reject", "label": "Avvis" }
]
}
}

Koble Be om godkjenning til Wait-noden. Brukeren ser deretter knappene i AI-School. Den hemmelige resume-URL-en gis ikke til nettleseren; serveren sender valget trygt til Wait-noden.

Behandle valget etter Wait-noden​

  1. Legg til en Switch-node etter Wait-noden.

  2. Bruk denne verdien som skal kontrolleres:

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

  4. La hver rute ende med en passende completed, rejected eller failed callback.

En valgverdi kan bare inneholde bokstaver, tall, _ og -. Labelen kan derimot inneholde vanlig lesbar tekst.

Sette produksjons callback-url​

Produksjons callback-url for AI-School er:

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

Ikke lim inn denne URL-en som fast tekst i hver callback-node. Velg Expression i URL-feltet i HTTP Request-noden og bruk:

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

AI-School leverer dermed automatisk riktig produksjons-URL ved hver start. Den faste URL-en over bruker du bare til å kontrollere under testing at uttrykket peker til AI-School.

Callable-ene triggerCustomN8nWorkflow, triggerN8nWorkflow og resumeN8nWorkflow kalles av appen selv. Disse URL-ene trenger du ikke å sette opp i n8n.

Sende tilbake uventede feil​

En vanlig failed callback fungerer bare når workflowen når den aktuelle HTTP Request-noden. Bruk i tillegg en sentral n8n Error Workflow for uventede nodefeil.

Lage sentral Error Workflow​

  1. Lag en egen workflow i n8n med navnet AI-School - feil tilbakemelding.

  2. Legg til en Error Trigger-node.

  3. Legg deretter til en HTTP Request-node.

  4. Sett Method til POST.

  5. Fyll inn denne faste produksjons-URL-en under URL:

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

  7. Slå på Send Headers og legg til:

    NameValue
    n8n-handihow-nameden hemmelige standardverdien du får fra plattformadministratoren
    Content-Typeapplication/json
  8. Slå på Send Body, velg JSON og lim inn denne bodyen:

{
"executionId": "{{ $json.execution.id }}",
"workflowId": "{{ $json.workflow.id }}",
"workflowName": "{{ $json.workflow.name }}",
"lastNode": "{{ $json.execution.lastNodeExecuted }}",
"message": "{{ $json.execution.error.message }}"
}
  1. Aktiver Error Workflow.
  2. Åpne innstillingene for den vanlige workflowen og velg denne nye Error Workflow under Error Workflow.

Send alltid minst én fremdriftscallback rett etter Start workflow med executionId: "{{ $execution.id }}". Da vet appen hvilken kjøring en uventet n8n-feil tilhører.

Viktige begrensninger​

  • Bare webhook-triggere støttes.
  • Bare produksjons-webhook-URL-er støttes.
  • Test-webhook-URL-er med /webhook-test/ blir avvist.
  • Bare POST støttes.
  • Bare generell header-authentisering støttes.
  • Headerverdien behandles som hemmelig i applikasjonen.
  • Callback-tokens og resume-URL-er behandles bare på serversiden og er ikke direkte tilgjengelige for brukere.
  • Tenant bestemmes på serversiden ut fra innlogget bruker, ikke ut fra en verdi som nettleseren sender.

Feilsøking​

  • 404 eller webhook ikke registrert: aktiver workflowen i n8n og bruk produksjons-URL-en.
  • Autentiseringsfeil: kontroller at headername og value er helt like i begge systemer.
  • Manglende data: kontroller at feltnavnene i applikasjonen samsvarer med key-ene n8n forventer.
  • Ingen request i n8n: kontroller at workflowen starter med en webhook-trigger og bruker POST.
  • Kjøringsvinduet fortsetter å snurre: har du slått på Meld slutten av workflowen, kontroller at n8n sender en siste completed, failed eller rejected callback. Hvis du ikke forventer tilbakemeldinger, slå av alle tre alternativene ved registreringen.
  • Ingen fremdrift synlig: kontroller at Meld mellomliggende fremdrift er slått på ved registreringen, at integration-objektet beholdes og at hver callback har en unik eventId.
  • Godkjenningsknappene virker ikke: kontroller Wait-noden, resumeUrl, header authentication og de tillatte tegnene i choices[].value.