Sari la conținutul principal

workflow-uri n8n

AI-Public poate porni workflow-uri n8n printr-un webhook de producție. Acest lucru este util atunci când vrei să pornești un proces automatizat din afara AI-Public, de exemplu crearea unei sarcini, actualizarea unei înregistrări CRM, pornirea unui flux de raportare sau trimiterea datelor dintr-un formular către un alt sistem.

Exemplu: articol de știri pe site-ul organizației​

Să presupunem că organizația a creat un workflow n8n care publică un articol de știri pe site-ul WordPress. În AI-Public completezi doar un scurt text, de exemplu câteva fraze despre o întâlnire, un proiect sau un anunț public. Cu acel text pornești workflow-ul în n8n.

Workflow-ul n8n poate apoi, de exemplu:

  1. Să transforme textul scurt într-un text de schiță bine redactat cu un nod LLM și un prompt potrivit tonului organizației.
  2. Să genereze o ilustrație adecvată cu un al doilea nod LLM, de exemplu în culorile brandului și într-un stil ilustrativ recognoscibil.
  3. Să pregătească sau să publice textul și imaginea ca articol de blog pe site-ul WordPress.

Așa colaborează AI-Public și n8n: în AI-Public, utilizatorul alege workflow-ul și completează informațiile necesare. n8n execută apoi pașii automatizați și se asigură că articolul ajunge ordonat pe site.

Ce face această integrare?​

Pornești un workflow n8n din lista de workflow-uri. Doar webhook-ul de producție, POST și Header Auth sunt obligatorii. Câmpurile și notificările de revenire din n8n sunt opționale și pot fi configurate independent unele de altele.

  • Dacă workflow-ul nu are câmpuri, webhook-ul este apelat imediat.
  • Dacă workflow-ul are câmpuri, se deschide mai întâi un formular. Utilizatorul completează câmpurile și apoi pornește workflow-ul cu butonul.
  • Valorile completate sunt trimise ca JSON într-un POST-request către webhook-ul n8n.
  • Fără notificări de revenire, AI-Public confirmă doar că workflow-ul a fost pornit și continuă în n8n. Fereastra nu afișează un spinner și poate fi închisă imediat.
  • Dacă acest lucru a fost activat la înregistrare, workflow-ul poate trimite înapoi către AI-Public pași intermediari sau finalizarea.
  • Dacă aprobarea a fost activată la înregistrare, utilizatorul poate face o alegere direct în AI-Public. n8n continuă apoi de la pasul de așteptare.

Crearea unui workflow n8n în AI-Public​

Un administrator înregistrează workflow-ul astfel:

  1. Mergi la Asistenți.
  2. Deschide fila Asistenți workflow.
  3. În cardul din partea de sus, apasă pe New workflow și alege n8n workflow.
  4. Completează numele workflow-ului și URL-ul de producție n8n.
  5. Configurează Header authentication cu un nume de header și o valoare secretă pentru header.
  6. Sub Notificări de revenire din n8n, bifează doar componentele care sunt într-adevăr construite în acest workflow n8n: progres, aprobare și/sau finalul workflow-ului.
  7. Adaugă, opțional, câmpurile care trebuie trimise în POST-request.
  8. Salvează workflow-ul.

Toate cele trei opțiuni de notificare de revenire sunt dezactivate implicit. Dacă mai târziu adaugi callback-uri sau un pas de aprobare în n8n, actualizează și înregistrarea în AI-Public. Dialogul știe astfel dacă trebuie să afișeze doar o confirmare de pornire sau să aștepte semnale suplimentare.

Câmpuri​

  • Câmpurile sunt opționale.
  • Fiecare câmp are un singur nume de câmp și un tip.
  • Tipurile de câmpuri acceptate sunt text scurt, text lung, număr, da/nu, dată, o singură alegere și mai multe alegeri.
  • La O singură alegere și Mai multe alegeri adaugi opțiunile disponibile. O singură alegere este afișată ca o listă compactă; Mai multe alegeri afișează casete de selectare. Valoarea sau valorile alese sunt trimise în body-ul JSON.
  • Câmpurile obligatorii trebuie completate înainte ca workflow-ul să poată fi pornit.
  • Numele câmpului devine cheia din body-ul JSON trimis către n8n.

Crearea unui workflow compatibil în n8n​

  1. Creează în n8n un workflow nou.
  2. Adaugă ca prim nod un Webhook.
  3. Dă acestui nod exact numele Start workflow. Exemplele de expresii de mai jos folosesc acest nume.
  4. Setează HTTP Method la POST.
  5. Alege Authentication: Header Auth și folosește același nume de header și aceeași valoare secretă ca în AI-Public.
  6. Setează Respond sau Response Mode la Immediately.
  7. Copiază Production URL în câmpul n8n productie-url din AI-Public. Nu folosi URL-ul de test cu /webhook-test/.
  8. Activează workflow-ul.

Datele primite se află sub body; datele tehnice de integrare se află sub body.integration. Nu le elimina într-un nod Edit Fields, Set sau Code.

Exemplu de body JSON​

Dacă definești câmpuri cu numele prompt, klantnaam, doelgroepen și datum, n8n primește de exemplu acest body JSON. AI-Public adaugă automat obiectul integration.

{
"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"
}
}

Tokenul de callback aparține unei singure execuții. Nu îl salva în loguri, configurații fixe sau alte sisteme.

Opțional: trimiterea progresului și a finalizării​

AI-Public poate afișa doar ceea ce raportează n8n. Folosește aceste callback-uri numai dacă la înregistrare ai activat Raportează progresul intermediar și/sau Raportează finalul workflow-ului.

Configurează fiecare nod de callback astfel:

  1. Alege Method: POST.

  2. La URL, apasă pe Expression și lipește:

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

  4. Activează Send Headers și adaugă header-ele de mai jos.

  5. Activează Send Body și alege Body Content Type: JSON și Specify Body: Using JSON.

Folosește aceste header-e:

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

Trimite, de exemplu, acest mesaj când începe un pas:

{
"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."
}
  • Folosește pentru fiecare eveniment din aceeași execuție un eventId unic.
  • Folosește un step.label clar în limba neerlandeză; acest text este afișat în aplicație.
  • Dacă ai activat Raportează finalul workflow-ului, trimite la final întotdeauna type: "completed", type: "failed" sau type: "rejected".
  • La completed, poți adăuga opțional un obiect output cu rezultatul.
  • La failed, trimite un mesaj de eroare ușor de înțeles. Execuția se oprește atunci și în aplicație.

Opțional: cererea de aprobare în aplicație​

Folosește un nod n8n Wait cu On Webhook Call atunci când workflow-ul poate continua doar după o alegere. Trimite înainte de nodul Wait un callback cu type: "approval_required":

Configurează nodul Wait la Resume: On Webhook Call, HTTP Method: POST și Authentication: Header Auth. Selectează același credential Header Auth ca la Start workflow. Adaugă după nodul Wait un nod Switch și verifică în el {{ $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" }
]
}
}

Utilizatorul vede opțiunile în fereastra de execuție. După o alegere, nodul Wait primește printre altele decision. Folosește apoi, de exemplu, un nod Switch pentru a determina continuarea corectă.

O valoare de alegere poate conține doar litere, cifre, _ și -. Eticheta poate conține text lizibil obișnuit.

Setarea URL-ului de callback de producție​

URL-ul de callback de producție pentru AI-Public este:

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

Nu lipi acest URL ca text fix în fiecare nod de callback. În câmpul URL al nodului HTTP Request alege Expression și folosește:

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

Astfel, AI-Public furnizează automat la fiecare pornire URL-ul corect de producție. URL-ul fix de mai sus îl folosești pentru a verifica în timpul testării dacă expresia indică spre AI-Public și nu spre AI-School sau AI-Corporate.

Callable-urile triggerCustomN8nWorkflow, triggerN8nWorkflow și resumeN8nWorkflow sunt apelate de aplicație în mod automat. Nu trebuie să configurezi aceste URL-uri în n8n.

Tratarea erorilor​

Trimite erorile așteptate cu un callback de tip failed. Pentru erorile neașteptate ale nodurilor, creează și un Error Workflow central:

  1. Creează un workflow nou cu un nod Error Trigger.

  2. Adaugă apoi un nod HTTP Request cu Method: POST.

  3. Completează la URL această adresă fixă de producție:

    https://europe-west1-ai-public-pro.cloudfunctions.net/n8nWorkflowExecutionFailed
  4. Alege Authentication: None și adaugă header-ul n8n-handihow-name cu valoarea secretă standard a administratorului platformei.

  5. Alege un body JSON și lipește:

{
"executionId": "{{ $json.execution.id }}",
"workflowId": "{{ $json.workflow.id }}",
"workflowName": "{{ $json.workflow.name }}",
"lastNode": "{{ $json.execution.lastNodeExecuted }}",
"message": "{{ $json.execution.error.message }}"
}
  1. Activează Error Workflow.
  2. Deschide setările workflow-ului obișnuit și selectează-l la Error Workflow.

Trimite imediat după Start workflow cel puțin un callback cu executionId: "{{ $execution.id }}". Doar astfel AI-Public poate lega o eroare neașteptată de execuția corectă.

Limitări importante​

  • Sunt acceptate doar trigger-e webhook.
  • Sunt acceptate doar URL-uri de webhook de producție.
  • URL-urile de test webhook cu /webhook-test/ sunt respinse.
  • Este acceptat doar POST.
  • Este acceptată doar autentificarea generică prin header.
  • Valoarea header-ului este tratată ca secret în aplicație.
  • Tokenurile de callback și URL-urile de resume sunt procesate doar server-side și nu sunt disponibile direct utilizatorilor.
  • Tenant-ul este determinat server-side din utilizatorul autentificat, nu dintr-o valoare trimisă de browser.

Rezolvarea problemelor​

  • 404 sau webhook neregistrat: activează workflow-ul în n8n și folosește URL-ul de producție.
  • Eroare de autentificare: verifică dacă numele și valoarea header-ului sunt exact identice în ambele sisteme.
  • Date lipsă: verifică dacă numele câmpurilor din aplicație corespund cu cheile așteptate de n8n.
  • Nu apare nicio cerere în n8n: verifică dacă workflow-ul începe cu un webhook trigger și folosește POST.
  • Fereastra de execuție rămâne deschisă: dacă ai activat Raportează finalul workflow-ului, verifică dacă n8n trimite un ultim callback completed, failed sau rejected. Dacă nu aștepți notificări de revenire, dezactivează toate cele trei opțiuni la înregistrare.
  • Nu este vizibil niciun progres: verifică dacă Raportează progresul intermediar este activat la înregistrare, dacă obiectul integration este păstrat și dacă fiecare callback are un eventId unic.
  • Butoanele de aprobare nu funcționează: verifică nodul Wait, resumeUrl, autentificarea prin header și caracterele permise în choices[].value.