Przejdź do głównej treści

n8n workflows

AI-Corporate może uruchamiać workflowy n8n za pośrednictwem webhooka produkcyjnego. Jest to przydatne, gdy chcesz uruchomić zautomatyzowany proces poza AI-Corporate, na przykład utworzenie zadania, aktualizację rekordu CRM, uruchomienie przepływu raportowania lub przekazanie danych z formularza do innego systemu.

Przykład: artykuł newsowy na stronie firmowej​

Załóżmy, że organizacja utworzyła workflow n8n, który publikuje artykuł newsowy na stronie WordPress firmy. W AI-Corporate wpisujesz wtedy tylko krótki fragment tekstu, na przykład kilka zdań o case study klienta, wydarzeniu lub wewnętrznym kamieniu milowym. Na podstawie tego tekstu uruchamiasz workflow w n8n.

Workflow n8n może następnie na przykład:

  1. Zamienić krótki tekst na dopracowany szkic za pomocą noda LLM i promptu dobrze pasującego do tonu organizacji.
  2. Wygenerować odpowiednią ilustrację za pomocą drugiego noda LLM, na przykład w kolorach marki i w rozpoznawalnym stylu ilustracyjnym.
  3. Przygotować lub opublikować tekst i obraz jako wpis blogowy na stronie WordPress.

Tak współpracują AI-Corporate i n8n: w AI-Corporate użytkownik wybiera workflow i wypełnia potrzebne informacje. Następnie n8n wykonuje zautomatyzowane kroki i dba o to, aby artykuł newsowy trafił na stronę w uporządkowany sposób.

Co robi ta integracja?​

Uruchamiasz workflow n8n z poziomu przeglądu workflowów. Wymagane są tylko produkcyjny webhook, POST i Header Auth. Pola oraz callbacki z n8n są opcjonalne i można je konfigurować niezależnie od siebie.

  • Jeśli workflow nie ma pól, webhook zostanie wywołany od razu.
  • Jeśli workflow ma pola, najpierw otworzy się formularz. Użytkownik wypełnia pola, a następnie uruchamia workflow przyciskiem.
  • Wprowadzone wartości są wysyłane jako JSON w żądaniu POST do webhooka n8n.
  • Bez callbacków AI-Corporate jedynie potwierdza, że workflow został uruchomiony i dalej działa w n8n. Okno nie pokazuje spinnera i można je od razu zamknąć.
  • Jeśli zostało to włączone przy rejestracji, workflow może odsyłać do AI-Corporate informacje o etapach pośrednich lub o zakończeniu.
  • Jeśli zostało włączone zatwierdzanie przy rejestracji, użytkownik może podjąć decyzję bezpośrednio w AI-Corporate. n8n kontynuuje następnie od oczekującego kroku.

Tworzenie workflow n8n w AI-Corporate​

Administrator rejestruje workflow w następujący sposób:

  1. Przejdź do Assistanten.
  2. Otwórz kartę Workflow assistenten.
  3. W karcie u góry kliknij Nieuwe workflow i wybierz n8n workflow.
  4. Wpisz nazwę workflow i produkcyjny URL n8n.
  5. Skonfiguruj Header authentication za pomocą nazwy nagłówka i tajnej wartości nagłówka.
  6. W sekcji Terugmeldingen uit n8n zaznacz tylko te elementy, które rzeczywiście zostały zbudowane w tym workflow n8n: postęp, zatwierdzenie i/lub koniec workflow.
  7. Opcjonalnie dodaj pola, które mają być przesyłane w żądaniu POST.
  8. Zapisz workflow.

Wszystkie trzy opcje callbacków są domyślnie wyłączone. Jeśli później dodasz callbacki lub krok zatwierdzania w n8n, zaktualizuj również rejestrację w AI-Corporate. Dialog dzięki temu wie, czy ma tylko pokazać potwierdzenie startu, czy dalej czekać na kolejne sygnały.

Pola​

  • Pola są opcjonalne.
  • Każde pole ma jedną nazwę pola i jeden typ.
  • Obsługiwane typy pól to krótki tekst, długi tekst, liczba, tak/nie, data, jeden wybór i wiele wyborów.
  • W przypadku Jeden wybór i Wiele wyborów dodaj dostępne opcje. Jeden wybór jest pokazany jako kompaktowa lista wyboru; Wiele wyborów pokazuje pola wyboru. Wybrana wartość lub wartości są przesyłane w body JSON.
  • Pola wymagane muszą być wypełnione, zanim workflow będzie można uruchomić.
  • Nazwa pola staje się kluczem w body JSON wysyłanym do n8n.

Tworzenie kompatybilnego workflow w n8n​

  1. Utwórz nowy workflow w n8n.
  2. Dodaj jako pierwszy node Webhook.
  3. Nadaj temu node’owi dokładnie nazwę Start workflow. Poniższe przykładowe wyrażenia używają tej nazwy.
  4. Ustaw HTTP Method na POST.
  5. Wybierz Authentication: Header Auth i użyj tej samej nazwy nagłówka oraz tajnej wartości co w AI-Corporate.
  6. Ustaw Respond lub Response Mode na Immediately.
  7. Skopiuj Production URL do pola n8n productie-url w AI-Corporate. Nie używaj testowego URL z /webhook-test/.
  8. Aktywuj workflow.

Odebrane dane znajdują się pod body; techniczne dane integracji znajdują się pod body.integration. Nie usuwaj ich w nodzie Edit Fields, Set ani Code.

Przykład body JSON​

Jeśli zdefiniujesz pola o nazwach prompt, klantnaam, doelgroepen i datum, n8n otrzyma na przykład takie body JSON. AI-Corporate automatycznie dodaje obiekt integration.

{
"prompt": "Stwórz krótkie podsumowanie zgłoszenia.",
"klantnaam": "Przykładowa organizacja",
"doelgroepen": ["pracownicy", "klienci"],
"datum": "2026-09-22",
"integration": {
"runId": "chat-document-id",
"tenant": "default",
"callbackUrl": "https://europe-west1-ai-corporate.cloudfunctions.net/n8nWorkflowCallback",
"callbackToken": "tymczasowy-token-dla-tego-uruchomienia"
}
}

Token callbacku należy do jednego uruchomienia. Nie zapisuj go w logach, stałej konfiguracji ani innych systemach.

Opcjonalnie: odsyłanie postępu i zakończenia​

AI-Corporate może pokazywać tylko to, co zwróci n8n. Używaj tych callbacków tylko wtedy, gdy przy rejestracji włączono Tussentijdse voortgang melden i/lub Het einde van de workflow melden.

Skonfiguruj każdy node callbacku w następujący sposób:

  1. Wybierz Method: POST.

  2. Przy URL kliknij Expression i wklej:

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

  4. Włącz Send Headers i dodaj poniższe nagłówki.

  5. Włącz Send Body i wybierz Body Content Type: JSON oraz Specify Body: Using JSON.

Użyj tych nagłówków:

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

Na przykład wyślij taką wiadomość, gdy krok się rozpocznie:

{
"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": "Tworzenie dokumentu"
},
"message": "Dokument jest tworzony."
}
  • Dla każdego zdarzenia w ramach tego samego uruchomienia użyj unikalnego eventId.
  • Używaj czytelnej holenderskiej wartości step.label; ten tekst będzie wyświetlany w aplikacji.
  • Jeśli włączono Het einde van de workflow melden, na końcu zawsze wysyłaj type: "completed", type: "failed" lub type: "rejected".
  • W przypadku completed można opcjonalnie dodać obiekt output z wynikiem.
  • W przypadku failed dołącz zrozumiały komunikat o błędzie. Uruchomienie zostanie wtedy także zatrzymane w aplikacji.

Opcjonalnie: proszenie o zatwierdzenie w aplikacji​

Użyj noda n8n Wait z On Webhook Call, gdy workflow może przejść dalej dopiero po wyborze. Przed nodem Wait wyślij callback z type: "approval_required":

Ustaw node Wait na Resume: On Webhook Call, HTTP Method: POST oraz Authentication: Header Auth. Wybierz te same poświadczenia Header Auth co dla Start workflow. Po nodzie Wait dodaj node Switch i sprawdzaj w nim {{ $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": "Sprawdzanie dokumentu"
},
"approval": {
"question": "Czy workflow może kontynuować?",
"context": "Najpierw sprawdź wygenerowany dokument.",
"resumeUrl": "{{ $execution.resumeUrl }}",
"choices": [
{ "value": "approve", "label": "Zatwierdź" },
{ "value": "reject", "label": "Odrzuć" }
]
}
}

Użytkownik zobaczy wybory w oknie wykonania. Po dokonaniu wyboru node Wait otrzyma między innymi decision. Następnie użyj na przykład noda Switch, aby określić właściwy dalszy przebieg.

Wartość wyboru może zawierać wyłącznie litery, cyfry, _ i -. Etykieta może zawierać zwykły czytelny tekst.

Ustawianie produkcyjnego callback URL​

Produkcjny callback URL dla AI-Corporate to:

https://europe-west1-ai-corporate.cloudfunctions.net/n8nWorkflowCallback

Nie wklejaj tego URL jako stałego tekstu do każdego node’a callbacku. W polu URL noda HTTP Request wybierz Expression i użyj:

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

AI-Corporate automatycznie dostarcza przy każdym uruchomieniu właściwy produkcyjny URL. Stałego URL powyżej użyj, aby podczas testów sprawdzić, czy wyrażenie wskazuje na AI-Corporate, a nie na AI-School lub AI-Public.

Callable triggerCustomN8nWorkflow, triggerN8nWorkflow i resumeN8nWorkflow są wywoływane przez samą aplikację. Nie musisz ustawiać tych URL-i w n8n.

Obsługa błędów​

Przewidywane błędy wysyłaj jako callback typu failed. Dla nieoczekiwanych błędów node’ów utwórz dodatkowo centralny Error Workflow:

  1. Utwórz nowy workflow z node’em Error Trigger.

  2. Dodaj następnie node HTTP Request z Method: POST.

  3. W polu URL wpisz ten stały produkcyjny URL:

    https://europe-west1-ai-corporate.cloudfunctions.net/n8nWorkflowExecutionFailed
  4. Wybierz Authentication: None i dodaj nagłówek n8n-handihow-name z tajną domyślną wartością administratora platformy.

  5. Wybierz body JSON i wklej:

{
"executionId": "{{ $json.execution.id }}",
"workflowId": "{{ $json.workflow.id }}",
"workflowName": "{{ $json.workflow.name }}",
"lastNode": "{{ $json.execution.lastNodeExecuted }}",
"message": "{{ $json.execution.error.message }}"
}
  1. Aktywuj Error Workflow.
  2. Otwórz ustawienia zwykłego workflow i wybierz go w sekcji Error Workflow.

Bezpośrednio po Start workflow wyślij co najmniej jeden callback z executionId: "{{ $execution.id }}". Tylko wtedy AI-Corporate może powiązać nieoczekiwany błąd z właściwym uruchomieniem.

Ważne ograniczenia​

  • Obsługiwane są tylko triggery webhook.
  • Obsługiwane są tylko produkcyjne URL-e webhooków.
  • Testowe URL-e webhooków z /webhook-test/ są odrzucane.
  • Obsługiwany jest tylko POST.
  • Obsługiwane jest tylko ogólne uwierzytelnianie nagłówkiem.
  • Wartość nagłówka jest w aplikacji traktowana jako sekret.
  • Tokeny callbacków i URL-e resume są przetwarzane wyłącznie po stronie serwera i nie są bezpośrednio dostępne dla użytkowników.
  • Tenant jest ustalany po stronie serwera na podstawie zalogowanego użytkownika, a nie na podstawie wartości wysyłanej przez przeglądarkę.

Rozwiązywanie problemów​

  • 404 lub webhook nie jest zarejestrowany: aktywuj workflow w n8n i użyj produkcyjnego URL.
  • Błąd uwierzytelniania: sprawdź, czy nazwa nagłówka i wartość w obu systemach są dokładnie takie same.
  • Brak danych: sprawdź, czy nazwy pól w aplikacji odpowiadają kluczom oczekiwanym przez n8n.
  • Brak żądania w n8n: sprawdź, czy workflow zaczyna się od webhook trigger i używa POST.
  • Okno wykonania pozostaje otwarte: jeśli włączyłeś Het einde van de workflow melden, sprawdź, czy n8n wysyła końcowy callback completed, failed lub rejected. Jeśli nie oczekujesz callbacków, wyłącz wszystkie trzy opcje przy rejestracji.
  • Brak widocznego postępu: sprawdź, czy przy rejestracji włączono Tussentijdse voortgang melden, czy obiekt integration został zachowany i czy każdy callback ma unikalny eventId.
  • Przyciski zatwierdzania nie działają: sprawdź node Wait, resumeUrl, uwierzytelnianie nagłówkiem i dozwolone znaki w choices[].value.