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:
- Să transforme textul scurt într-un draft elegant cu un nod LLM și un prompt potrivit tonului organizației.
- Să genereze o ilustrație potrivită cu un al doilea nod LLM, de exemplu în culorile brandului și într-un stil ilustrativ recognoscibil.
- 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:
- Mergi la Asistenți.
- Deschide fila Asistenți workflow.
- În cardul de sus, apasă Workflow nou și alege workflow n8n.
- Completează numele workflow-ului și URL-ul de producție n8n.
- Configurează Header authentication cu un nume de header și o valoare secretă a header-ului.
- 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.
- Adaugă opțional câmpurile care trebuie trimise în request-ul POST.
- 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
- Creează un workflow nou în n8n.
- Adaugă ca prim nod un Webhook.
- Dă acestui nod exact numele Start workflow. Expresiile de exemplu de mai jos folosesc acest nume.
- Setează HTTP Method la POST.
- Alege Authentication: Header Auth și folosește același nume de header și aceeași valoare secretă ca în AI-Corporate.
- Setează Respond sau Response Mode la Immediately.
- Copiază Production URL în câmpul n8n productie-url din AI-Corporate. Nu folosi test-url-ul cu
/webhook-test/. - 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:
-
Alege Method: POST.
-
La URL, apasă Expression și lipsește:
{{ $('Start workflow').first().json.body.integration.callbackUrl }} -
Alege Authentication: None.
-
Activează Send Headers și adaugă antetele de mai jos.
-
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
eventIdunic. - Folosește un
step.labelclar î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"sautype: "rejected". - La
completed, poți adăuga opțional un obiectoutputcu 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:
-
Creează un workflow nou cu un nod Error Trigger.
-
Adaugă apoi un nod HTTP Request cu Method: POST.
-
La URL completează acest URL fix de producție:
https://europe-west1-ai-corporate.cloudfunctions.net/n8nWorkflowExecutionFailed -
Alege Authentication: None și adaugă headerul
n8n-handihow-namecu valoarea secretă implicită a administratorului platformei. -
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 }}"
}
- Activează Error Workflow.
- 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,failedsaurejected. 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
integrationeste păstrat și dacă fiecare callback are uneventIdunic. - Butoanele de aprobare nu funcționează: verifică nodul Wait,
resumeUrl, autentificarea prin header și caracterele permise închoices[].value.