Przejdź do głównej treści

n8n workflows

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

Przykład: artykuł informacyjny na stronie firmowej

Załóżmy, że organizacja stworzyła przepływ n8n, który publikuje artykuł informacyjny na stronie WordPress firmy. W AI-Corporate wpisujesz wtedy jedynie krótki fragment tekstu, na przykład kilka zdań o studium przypadku klienta, wydarzeniu lub wewnętrznym kamieniu milowym. Z tym tekstem uruchamiasz przepływ w n8n.

Przepływ n8n może następnie zrobić między innymi:

  1. Z krótkiego tekstu stworzyć ładny szkic tekstu za pomocą węzła LLM i promptu dopasowanego do tonu organizacji.
  2. Zlecić stworzenie odpowiedniej ilustracji za pomocą drugiego węzła LLM, na przykład w kolorach marki i w rozpoznawalnym stylu ilustracyjnym.
  3. Przygotować lub opublikować tekst i obraz jako wpis na blogu na stronie WordPress.

Tak AI-Corporate i n8n współpracują: w AI-Corporate użytkownik wybiera przepływ i wprowadza niezbędne informacje. Następnie n8n wykonuje zautomatyzowane kroki i zapewnia, że artykuł pojawi się na stronie w odpowiedni sposób.

Co robi ta integracja?

Uruchamiasz przepływ n8n z widoku przepływu. Tylko produkcyjny webhook, POST i autoryzacja nagłówkami są obowiązkowe. Pola i potwierdzenia zwrotne z n8n są opcjonalne i mogą być skonfigurowane niezależnie od siebie.

  • Jeśli przepływ nie ma pól, webhook zostanie wywołany od razu.
  • Jeśli przepływ ma pola, najpierw otworzy się formularz. Użytkownik wypełnia pola i uruchamia przepływ przyciskiem.
  • Wartości wypełnione są przesyłane jako JSON w żądaniu POST do webhooka n8n.
  • Bez zwrotnych potwierdzeń AI-Corporate potwierdza tylko, że przepływ został uruchomiony i działa dalej w n8n. Okno nie pokazuje spinnera i można je natychmiast zamknąć.
  • Jeśli to w rejestracji włączono, przepływ może wysyłać pośrednie kroki lub koniec z powrotem do AI-Corporate.
  • Jeśli zatwierdzenie w rejestracji jest włączone, użytkownik może dokonać wyboru bezpośrednio w AI-Corporate. Następnie n8n kontynuuje od stanu oczekującego.

Jak działa ta integracja w AI-Corporate?

Administrator rejestruje przepływ następująco:

  1. Przejdź do Asystenci.
  2. Otwórz Przepływy.
  3. Wybierz Nowy przepływ n8n.
  4. Wpisz nazwę przepływu i adres produkcyjny n8n.
  5. Skonfiguruj Header authentication z nazwą nagłówka i sekretnego wartości nagłówka.
  6. W sekcji Powiadomienia z n8n zaznacz tylko te elementy, które faktycznie zostały zbudowane w tym przepływie n8n: postęp, zatwierdzenie i/lub koniec przepływu.
  7. Opcjonalnie dodaj pola, które mają być wysyłane w żądaniu POST.
  8. Zapisz przepływ.

Wszystkie trzy opcje zwrotów domyślnie są 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 jedynie wyświetlać potwierdzenie uruchomienia, czy ma czekać na dalsze sygnały.

Pól

  • Pola są opcjonalne.
  • Każde pole ma nazwę pola i 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 Jeden wybór i Wiele wyborów dodaj dostępne opcje. Jeden wybór będzie wyświetlany jako kompaktowa lista rozwijana; Wiele wyborów wyświetla pola wyboru. Wybrana wartość (lub wartości) są przesyłane w JSON body.
  • Pola obowiązkowe muszą być wypełnione przed uruchomieniem przepływu.
  • Nazwa pola staje się kluczem w JSON body wysyłanym do n8n.

Tworzenie kompatybilnego przepływu w n8n

  1. Utwórz nowy przepływ w n8n.
  2. Dodaj na początku węzeł Webhook.
  3. Nadaj temu węzł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 i wartości sekretnych co w AI-Corporate.
  6. Ustaw Respond lub Response Mode na Immediately.
  7. Skopiuj Production URL do pola n8n production-url w AI-Corporate. Nie używaj testowego URL z /webhook-test/.
  8. Aktywuj przepływ.

Odebrane dane znajdują się pod body; dane techniczne integracji pod body.integration. Nie usuwaj ich w edytorze pól, ustawianym lub węźle Code.

Przykład JSON body

Gdy definiujesz pola o nazwach prompt, klantnaam, doelgroepen i datum, n8n otrzymuje na przykład następujący JSON body. AI-Corporate automatycznie dodaje obiekt integration.

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

Token callbacka powinien być przypisany do jednego uruchomienia. Nie zapisuj go w logach, w stałej konfiguracji ani w innych systemach.

Opcjonalnie: zwrotnie info o postępie i zakończeniu

AI-Corporate może pokazywać tylko to, co zwraca n8n. Używaj tych callbacków tylko wtedy, gdy w rejestracji włączysz opcje Powiadamiaj o postępie w trakcie i/lub Powiadom o zakończeniu przepływu.

Skonfiguruj każdy węzeł callback następująco:

  1. Wybierz Method: POST.

  2. W polu 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 następujących nagłówków:

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

Na przykład wyślij ten komunikat, gdy krok się zaczyna:

{
"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."
}
  • Dla każdego zdarzenia w tej samej realizacji użyj unikalnego eventId.
  • Użyj jasnego polskiego step.label; ten tekst będzie wyświetlany w aplikacji.
  • Jeśli włączono Powiadamianie o zakończeniu przepływu, na końcu zawsze wyślij type: "completed", type: "failed" lub type: "rejected".
  • Do completed dodaj opcjonalnie obiekt output z wynikiem.
  • W przypadku failed wyślij zrozumiały komunikat błędu. Wykonanie zakończy się również w aplikacji.

Opcjonalnie: prośba o zatwierdzenie w aplikacji

Użyj węzła n8n Wait z opcją On Webhook Call, gdy przepływ może kontynuować dopiero po wyborze. Wyślij przed węzłem Wait callback z type: "approval_required":

Skonfiguruj węzeł Wait na Resume: On Webhook Call, HTTP Method: POST i Authentication: Header Auth. Wybierz tę samą wiarygodność Header Auth co przy Start workflow. Dodaj po w Wait węzeł Switch i sprawdź 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": "Document controleren"
},
"approval": {
"question": "Mag przepływ kontynuować?",
"context": "Najpierw sprawdź wygenerowany dokument.",
"resumeUrl": "{{ $execution.resumeUrl }}",
"choices": [
{ "value": "approve", "label": "Zatwierdzić" },
{ "value": "reject", "label": "Odrzucić" }
]
}
}

Użytkownik widzi wybory w oknie wykonania. Po dokonaniu wyboru Wait node otrzymuje między innymi decision. Następnie użyj np. węzła Switch, aby określić właściwy dalszy krok.

Wartość wyboru może zawierać tylko litery, cyfry, _ i -; etykieta może zawierać zwykły, czytelny tekst.

Produkcyjny ustawienie URL-a callback

Produkcja callback-url dla AI-Corporate to:

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

Nie wklejaj tego URL-a jako stałego tekstu w każdej węzł callbacka. W polu URL w węźle HTTP Request wybierz Expression i użyj:

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

AI-Corporate dostarcza przy każdym uruchomieniu właściwy production-url. Stały URL powyżej służy podczas testów do weryfikacji, czy wyrażenie odnosi się do AI-Corporate, a nie do AI-School lub AI-Public.

Wywołujące triggerCustomN8nWorkflow, triggerN8nWorkflow i resumeN8nWorkflow są wywoływane przez samą aplikację. Nie trzeba ich konfigurować w n8n.

Obsługa błędów

Zwracaj spodziewane błędy za pomocą callbacka o typie failed. Dla nieoczekiwanych błędów węzłów utwórz centralny przepływ błędów:

  1. Utwórz nowy przepływ z węzłem Error Trigger.

  2. Dodaj następnie węzeł HTTP Request z metodą POST.

  3. Wypełnij w polu URL stały URL produkcyjny:

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

  5. Wybierz JSON body 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 przepływu i wybierz ten przepływ przy Error Workflow.

Wysyłaj bezpośrednio po Start workflow co najmniej jeden callback z executionId: "{{ $execution.id }}". Tylko wtedy AI-Corporate będzie mogło powiązać nieoczekiwany błąd z właściwym uruchomieniem.

Ważne ograniczenia

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

Rozwiązywanie problemów

  • 404 lub webhook nie zarejestrowany: aktywuj przepływ w n8n i użyj produkcyjnego URL.
  • Błąd uwierzytelniania: sprawdź, czy nazwa nagłówka i wartość są identyczne w obu systemach.
  • Brak danych: sprawdź, czy nazwy pól w aplikacji odpowiadają kluczom, które n8n oczekuje.
  • Brak żądania w n8n: sprawdź, czy przepływ zaczyna się od wyzwalacza webhook i czy używany jest POST.
  • Okno wykonania kręci się w nieskończoność: jeśli włączona jest opcja zakończenia przepływu, sprawdź, czy n8n wysyła ostatni callback completed, failed lub rejected. Jeśli nie spodziewasz się zwrotnych informacji, wyłącz wszystkie trzy opcje w rejestracji.
  • Brak widocznego postępu: sprawdź, czy w rejestracji włączono Powiadamianie o postępie w trakcie, lub czy obiekt integration jest zachowany i czy każdy callback ma unikalny eventId.
  • Przyciski zatwierdzania nie działają: sprawdź węzeł Wait, resumeUrl, uwierzytelnianie nagłówków i dozwolone znaki w choices[].value.
WhatsApp