跳到主要内容

n8n workflows

AI-Public kan n8n workflows starten via een productie-webhook. Dit is handig wanneer je buiten AI-Public een geautomatiseerd proces wilt starten, bijvoorbeeld het aanmaken van een taak, bijwerken van een CRM-record, starten van een rapportageflow of doorzetten van formuliergegevens naar een ander systeem.

Voorbeeld: nieuwsartikel op de website van de organisatie

Stel dat de organisatie een n8n workflow heeft gemaakt die een nieuwsartikel publiceert op de WordPress website. In AI-Public vul je dan alleen een kort stukje tekst in, bijvoorbeeld een paar zinnen over een bijeenkomst, project of publieke aankondiging. Met die tekst start je de workflow in n8n.

De n8n workflow kan daarna bijvoorbeeld:

  1. Van de korte tekst een nette concepttekst maken met een LLM node en een prompt die goed past bij de toon van de organisatie.
  2. Een passende illustratie laten maken met een tweede LLM node, bijvoorbeeld in de huisstijlkleuren en in een herkenbare illustratieve stijl.
  3. De tekst en afbeelding als blogbericht klaarzetten of publiceren op de WordPress website.

Zo werken AI-Public en n8n samen: in AI-Public kiest de gebruiker de workflow en vult de benodigde informatie in. n8n voert daarna de geautomatiseerde stappen uit en zorgt dat het nieuwsartikel netjes op de website terechtkomt.

Wat doet deze integratie?

Je start een n8n workflow vanuit het workflow-overzicht. Alleen de productie-webhook, POST en Header Auth zijn verplicht. Velden en terugmeldingen vanuit n8n zijn optioneel en kunnen onafhankelijk van elkaar worden ingesteld.

  • Heeft de workflow geen velden, dan wordt de webhook meteen aangeroepen.
  • Heeft de workflow wel velden, dan opent eerst een formulier. De gebruiker vult de velden in en start daarna de workflow met de knop.
  • De ingevulde waarden worden als JSON meegestuurd in een POST-request naar de n8n webhook.
  • Zonder terugmeldingen bevestigt AI-Public alleen dat de workflow is gestart en verder loopt in n8n. Het venster toont geen spinner en kan direct worden gesloten.
  • Als dit bij de registratie is aangezet, kan de workflow tussentijdse stappen of het einde terugsturen naar AI-Public.
  • Als goedkeuring bij de registratie is aangezet, kan de gebruiker een keuze rechtstreeks in AI-Public maken. n8n gaat daarna verder vanaf de wachtende stap.

n8n workflow aanmaken in AI-Public

Een beheerder registreert de workflow als volgt:

  1. Ga naar Assistenten.
  2. Open Workflows.
  3. Kies Nieuwe n8n workflow.
  4. Vul de naam van de workflow en de n8n productie-url in.
  5. Stel Header authentication in met een header name en geheime header value.
  6. Vink onder Terugmeldingen uit n8n alleen de onderdelen aan die werkelijk in deze n8n-workflow zijn gebouwd: voortgang, goedkeuring en/of het einde van de workflow.
  7. Voeg eventueel de velden toe die moeten worden meegestuurd in het POST-request.
  8. Sla de workflow op.

Alle drie de terugmeldingsopties staan standaard uit. Zet je later callbacks of een goedkeuringsstap in n8n, werk dan ook de registratie in AI-Public bij. De dialog weet daardoor of hij alleen een startbevestiging moet tonen of op verdere signalen moet blijven wachten.

Velden

  • Velden zijn optioneel.
  • Elk veld heeft één veldnaam en een type.
  • Ondersteunde veldtypes zijn korte tekst, lange tekst, getal, ja/nee, datum, één keuze en meerdere keuzes.
  • Bij Eén keuze en Meerdere keuzes voeg je de beschikbare opties toe. Eén keuze wordt als compacte keuzelijst getoond; Meerdere keuzes toont selectievakjes. De gekozen waarde of waarden worden in de JSON body meegestuurd.
  • Verplichte velden moeten zijn ingevuld voordat de workflow kan worden gestart.
  • De veldnaam wordt de key in de JSON body die naar n8n wordt gestuurd.

Compatibele workflow maken in n8n

  1. Maak in n8n een nieuwe workflow.
  2. Voeg als eerste node een Webhook toe.
  3. Geef deze node exact de naam Start workflow. De voorbeeldexpressies hieronder gebruiken deze naam.
  4. Zet HTTP Method op POST.
  5. Kies Authentication: Header Auth en gebruik dezelfde headernaam en geheime waarde als in AI-Public.
  6. Zet Respond of Response Mode op Immediately.
  7. Kopieer de Production URL naar het veld n8n productie-url in AI-Public. Gebruik niet de test-url met /webhook-test/.
  8. Activeer de workflow.

De ontvangen gegevens staan onder body; de technische integratiegegevens staan onder body.integration. Verwijder die niet in een Edit Fields-, Set- of Code-node.

Voorbeeld van de JSON body

Als je velden definieert met de namen prompt, klantnaam, doelgroepen en datum, ontvangt n8n bijvoorbeeld deze JSON body. AI-Public voegt het integration-object automatisch toe.

{
"prompt": "Maak een korte samenvatting van de aanvraag.",
"klantnaam": "Voorbeeldorganisatie",
"doelgroepen": ["inwoners", "medewerkers"],
"datum": "2026-09-22",
"integration": {
"runId": "chat-document-id",
"tenant": "default",
"callbackUrl": "https://europe-west1-ai-public-pro.cloudfunctions.net/n8nWorkflowCallback",
"callbackToken": "tijdelijk-token-voor-deze-uitvoering"
}
}

Het callbacktoken hoort bij één uitvoering. Sla het niet op in logs, vaste configuratie of andere systemen.

Optioneel: voortgang en afronding terugsturen

AI-Public kan alleen tonen wat n8n terugmeldt. Gebruik deze callbacks alleen als je bij de registratie Tussentijdse voortgang melden en/of Het einde van de workflow melden hebt aangezet.

Stel iedere callbacknode als volgt in:

  1. Kies Method: POST.

  2. Klik bij URL op Expression en plak:

    {{ $('Start workflow').first().json.body.integration.callbackUrl }}
  3. Kies Authentication: None.

  4. Zet Send Headers aan en voeg onderstaande headers toe.

  5. Zet Send Body aan en kies Body Content Type: JSON en Specify Body: Using JSON.

Gebruik deze headers:

Authorization: Bearer {{ $('Start workflow').first().json.body.integration.callbackToken }}
Content-Type: application/json

Stuur bijvoorbeeld dit bericht wanneer een stap begint:

{
"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": "Document maken"
},
"message": "Het document wordt gemaakt."
}
  • Gebruik voor iedere gebeurtenis binnen dezelfde uitvoering een unieke eventId.
  • Gebruik een duidelijke Nederlandse step.label; deze tekst wordt in de app getoond.
  • Heb je Het einde van de workflow melden aangezet, stuur dan aan het einde altijd type: "completed", type: "failed" of type: "rejected".
  • Voeg bij completed eventueel een output-object met het resultaat toe.
  • Stuur bij failed een begrijpelijke foutmelding mee. De uitvoering stopt dan ook in de app.

Optioneel: goedkeuring vragen in de app

Gebruik een n8n Wait node met On Webhook Call wanneer de workflow pas na een keuze verder mag. Stuur vóór de Wait node een callback met type: "approval_required":

Stel de Wait node in op Resume: On Webhook Call, HTTP Method: POST en Authentication: Header Auth. Selecteer dezelfde Header Auth credential als bij Start workflow. Voeg na de Wait node een Switch node toe en controleer daarin {{ $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": "Document controleren"
},
"approval": {
"question": "Mag de workflow doorgaan?",
"context": "Controleer eerst het gegenereerde document.",
"resumeUrl": "{{ $execution.resumeUrl }}",
"choices": [
{ "value": "approve", "label": "Goedkeuren" },
{ "value": "reject", "label": "Afwijzen" }
]
}
}

De gebruiker ziet de keuzes in het uitvoeringsvenster. Na een keuze ontvangt de Wait node onder andere decision. Gebruik daarna bijvoorbeeld een Switch node om het juiste vervolg te bepalen.

Een keuzewaarde mag alleen letters, cijfers, _ en - bevatten. Het label mag wel gewone leesbare tekst bevatten.

Productie callback-url instellen

De productie callback-url voor AI-Public is:

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

Plak deze URL niet als vaste tekst in iedere callbacknode. Kies in het URL-veld van de HTTP Request node Expression en gebruik:

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

AI-Public levert daarmee bij iedere start automatisch de juiste productie-url aan. De vaste URL hierboven gebruik je om tijdens het testen te controleren of de expressie naar AI-Public verwijst en niet naar AI-School of AI-Corporate.

De callables triggerCustomN8nWorkflow, triggerN8nWorkflow en resumeN8nWorkflow worden door de app zelf aangeroepen. Deze URL's hoef je niet in n8n in te stellen.

Fouten afhandelen

Stuur verwachte fouten terug met een callback van het type failed. Maak voor onverwachte nodefouten daarnaast een centrale Error Workflow:

  1. Maak een nieuwe workflow met een Error Trigger node.

  2. Voeg daarna een HTTP Request node toe met Method: POST.

  3. Vul bij URL deze vaste productie-url in:

    https://europe-west1-ai-public-pro.cloudfunctions.net/n8nWorkflowExecutionFailed
  4. Kies Authentication: None en voeg de header n8n-handihow-name toe met de geheime standaardwaarde van de platformbeheerder.

  5. Kies een JSON body en plak:

{
"executionId": "{{ $json.execution.id }}",
"workflowId": "{{ $json.workflow.id }}",
"workflowName": "{{ $json.workflow.name }}",
"lastNode": "{{ $json.execution.lastNodeExecuted }}",
"message": "{{ $json.execution.error.message }}"
}
  1. Activeer de Error Workflow.
  2. Open de instellingen van de gewone workflow en selecteer deze bij Error Workflow.

Stuur direct na Start workflow minimaal één callback met executionId: "{{ $execution.id }}". Alleen dan kan AI-Public een onverwachte fout aan de juiste uitvoering koppelen.

Belangrijke beperkingen

  • Alleen webhook triggers worden ondersteund.
  • Alleen productie-webhook-urls worden ondersteund.
  • Test-webhook-urls met /webhook-test/ worden geweigerd.
  • Alleen POST wordt ondersteund.
  • Alleen generic header authentication wordt ondersteund.
  • De header value wordt in de applicatie als geheim behandeld.
  • Callbacktokens en resume-url's worden alleen server-side verwerkt en zijn niet rechtstreeks beschikbaar voor gebruikers.
  • De tenant wordt server-side bepaald vanuit de ingelogde gebruiker, niet vanuit een waarde die de browser meestuurt.

Problemen oplossen

  • 404 of webhook niet geregistreerd: activeer de workflow in n8n en gebruik de productie-url.
  • Authenticatiefout: controleer of header name en value in beide systemen exact gelijk zijn.
  • Ontbrekende data: controleer of de veldnamen in de applicatie overeenkomen met de keys die n8n verwacht.
  • Geen request in n8n: controleer of de workflow begint met een webhook trigger en POST gebruikt.
  • Het uitvoeringsvenster blijft draaien: heb je Het einde van de workflow melden aangezet, controleer dan of n8n een laatste completed, failed of rejected callback verstuurt. Verwacht je geen terugmeldingen, zet dan alle drie de opties bij de registratie uit.
  • Geen voortgang zichtbaar: controleer of Tussentijdse voortgang melden bij de registratie aanstaat, of het integration-object behouden blijft en of iedere callback een unieke eventId heeft.
  • Goedkeuringsknoppen werken niet: controleer de Wait node, resumeUrl, header authentication en de toegestane tekens in choices[].value.
WhatsApp