Sari la conținutul principal

workflow-uri n8n

AI-Corporate 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 în afara AI-Corporate, de exemplu crearea unei sarcini, actualizarea unui înregistrări CRM, pornirea unui flux de raportare sau trimiterea datelor dintr-un formular către alt sistem.

Exemplu: articol de știri pe site-ul companiei​

Să presupunem că organizația a creat un workflow n8n care publică un articol de știri pe site-ul WordPress al companiei. În AI-Corporate completezi doar un scurt fragment de text, de exemplu câteva propoziții despre un caz de client, un eveniment sau o realizare internă. Cu acel text pornești workflow-ul în n8n.

Workflow-ul n8n poate apoi, de exemplu:

  1. Să transforme textul scurt într-un draft elegant cu un nod LLM și un prompt potrivit tonului organizației.
  2. Să genereze o ilustrație potrivită 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 lucrează împreună AI-Corporate și n8n: în AI-Corporate utilizatorul alege workflow-ul și completează informațiile necesare. n8n execută apoi pașii automatizați și se asigură că articolul de știri ajunge frumos pe site.

Ce face această integrare?​

Pornești un workflow n8n din prezentarea generală a workflow-urilor. Doar webhook-ul de producție, POST și Header Auth sunt obligatorii. Câmpurile și confirmările 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 request POST către webhook-ul n8n.
  • Fără confirmări, AI-Corporate 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 pași intermediari sau finalul către AI-Corporate.
  • Dacă aprobarea a fost activată la înregistrare, utilizatorul poate face o alegere direct în AI-Corporate. n8n continuă apoi de la pasul de așteptare.

Crearea unui workflow n8n în AI-Corporate​

Un administrator înregistrează workflow-ul astfel:

  1. Mergi la Asistenți.
  2. Deschide fila Asistenți workflow.
  3. În cardul de sus, apasă Workflow nou și alege workflow n8n.
  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ă a header-ului.
  6. La Confirmări 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 request-ul POST.
  8. Salvează workflow-ul.

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

Câmpuri​

  • Câmpurile sunt opționale.
  • Fiecare câmp are un nume de câmp și un tip.
  • Tipurile de câmpuri acceptate sunt text scurt, text lung, număr, da/nu, dată, o singură opțiune și mai multe opțiuni.
  • La O singură opțiune și Mai multe opțiuni adaugi opțiunile disponibile. O singură opțiune este afișată ca o listă compactă; Mai multe opțiuni afișează căsuțe de selecție. 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ă un workflow nou în n8n.
  2. Adaugă ca prim nod un Webhook.
  3. Dă acestui nod exact numele Start workflow. Expresiile de exemplu 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-Corporate.
  6. Setează Respond sau Response Mode la Immediately.
  7. Copiază Production URL în câmpul n8n productie-url din AI-Corporate. Nu folosi test-url-ul 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-Corporate adaugă automat obiectul integration.

{
"prompt": "Fă un rezumat scurt al solicitării.",
"klantnaam": "Organizație exemplu",
"doelgroepen": ["angajați", "clienți"],
"datum": "2026-09-22",
"integration": {
"runId": "chat-document-id",
"tenant": "default",
"callbackUrl": "https://europe-west1-ai-corporate.cloudfunctions.net/n8nWorkflowCallback",
"callbackToken": "token-temporar-pentru-această-execuție"
}
}

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-Corporate poate afișa doar ceea ce raportează n8n. Folosește aceste callback-uri doar 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ă Expression și lipsește:

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

  4. Activează Send Headers și adaugă antetele de mai jos.

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

Folosește aceste antete:

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

De exemplu, trimite 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": "Creare document"
},
"message": "Documentul este creat."
}
  • Pentru fiecare eveniment din aceeași execuție folosește un eventId unic.
  • Folosește un step.label clar în limba română; acest text este afișat în aplicație.
  • Dacă ai activat Raportează finalul workflow-ului, trimite întotdeauna la final 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 și în aplicație.

Opțional: solicitarea aprobării în aplicație​

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

Configurează nodul Wait pe Resume: On Webhook Call, HTTP Method: POST și Authentication: Header Auth. Selectează aceeași credențială 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": "Verificare document"
},
"approval": {
"question": "Poate workflow-ul să continue?",
"context": "Verifică mai întâi documentul generat.",
"resumeUrl": "{{ $execution.resumeUrl }}",
"choices": [
{ "value": "approve", "label": "Aprobare" },
{ "value": "reject", "label": "Respingere" }
]
}
}

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 următorul pas corect.

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

Configurarea URL-ului de callback de producție​

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

https://europe-west1-ai-corporate.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 }}

AI-Corporate furnizează astfel 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-Corporate și nu spre AI-School sau AI-Public.

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

Gestionarea erorilor​

Trimite erorile așteptate printr-un callback de tipul failed. Pentru erori 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. La URL completează acest URL fix de producție:

    https://europe-west1-ai-corporate.cloudfunctions.net/n8nWorkflowExecutionFailed
  4. Alege Authentication: None și adaugă headerul n8n-handihow-name cu valoarea secretă implicită 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.

Imediat după Start workflow, trimite cel puțin un callback cu executionId: "{{ $execution.id }}". Numai așa poate AI-Corporate să lege o eroare neașteptată de execuția corectă.

Limitări importante​

  • Sunt acceptate doar webhook triggers.
  • Sunt acceptate doar URL-uri de webhook de producție.
  • URL-urile de test cu /webhook-test/ sunt respinse.
  • Este acceptat doar POST.
  • Este acceptată doar autentificarea generică prin header.
  • Valoarea headerului este tratată ca secret în aplicație.
  • Tokenurile de callback și URL-urile 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.

Depanare​

  • 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 headerului sunt identice în ambele sisteme.
  • Date lipsă: verifică dacă numele câmpurilor din aplicație corespund cu cheile așteptate de n8n.
  • 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 confirmări, dezactivează toate cele trei opțiuni la înregistrare.
  • Niciun progres vizibil: 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.