▸ // rozdziały lekcji

Automatyzacja, która pada po cichu, jest gorsza od jej braku, bo myślisz, że działa. Raport „przychodzi codziennie", tylko od dwóch tygodni nie przyszedł, a ty zauważasz to wtedy, kiedy klient pyta, gdzie są dane.
W tej lekcji zbudujesz jeden workflow, który pilnuje wszystkich pozostałych. Gdy którykolwiek się wywali, na kanale Discord dostajesz wiadomość: który workflow, na którym węźle, z jakim komunikatem i link prosto do tamtego wykonania. U mnie taki kanał nazywa się „alerty" i to pierwsza rzecz, którą stawiam na każdej nowej instancji n8n.
Jak to działa
W n8n każdy workflow ma w ustawieniach pole Error Workflow (to notify when this one errors). Wskazujesz tam workflow, który zaczyna się od węzła Error Trigger. Kiedy pilnowany workflow się wywali, n8n uruchamia workflow błędów i przekazuje mu wszystko o awarii.
Workflow z tej lekcji ma trzy węzły:
- Error Trigger - odbiera informację o błędzie.
- Tresc alertu - składa wiadomość z nazwy workflow, węzła, komunikatu i linku.
- Wyslij na Discord - wysyła ją na kanał przez webhook Discorda.

Jeden workflow błędów możesz podpiąć pod dowolnie wiele innych.
Krok 1: Webhook na Discordzie
Webhook to adres, pod który n8n wysyła wiadomość. Nie potrzebujesz bota ani aplikacji deweloperskiej. Te same kroki, z uwagami o bezpieczeństwie adresu, są w lekcji Credentials Discord.
- Na swoim serwerze Discord utwórz kanał, na przykład „alerty".
- Wejdź w ustawienia kanału, potem Integracje i Webhooki.
- Utwórz nowy webhook i skopiuj jego adres URL.
Pro-tip. Zrób osobny, wyciszony kanał tylko na błędy. Alert, który wpada między memy i rozmowy, to alert, którego nikt nie czyta.
Krok 2: Workflow błędów w n8n
- Wklej workflow z tej lekcji na pustą kanwę.
- Otwórz węzeł Wyslij na Discord i w polu poświadczenia utwórz nowe typu Discord Webhook.
- W polu Webhook URL wklej adres z Discorda. Nazwij poświadczenie „Discord - alerty".
- Kliknij Publish.
Ostatni krok jest obowiązkowy. W n8n 2.x workflow błędów, który nie jest opublikowany, zostanie pominięty. Sprawdziłem to na wersji 2.40.6 - w logach pojawia się komunikat, że workflow błędów „is not active and cannot be executed", i alert nie przychodzi. W starszych poradnikach przeczytasz, że workflow błędów nie trzeba aktywować. W 2.x trzeba.
Krok 3: Podepnij pilnowane workflow
W każdym workflow, który ma być pilnowany:
- Trzy kropki obok nazwy workflow, potem Settings.
- W polu Error Workflow (to notify when this one errors) wybierz „Alert bledow na Discord".
- Zapisz ustawienia.

Robisz to raz na workflow. Od tej chwili każdy jego błąd trafia na Discord.
Krok 4: Sprawdź, czy działa
Nie czekaj na prawdziwą awarię. Wywołaj ją. Pod lekcją jest drugi plik: workflow, który rusza po wejściu na adres i od razu zgłasza błąd.
- Wklej „Test alertu - celowy blad" na nową kanwę.
- W jego ustawieniach wskaż jako Error Workflow „Alert bledow na Discord".
- Opublikuj go przyciskiem Publish.
- Otwórz węzeł Webhook, skopiuj adres produkcyjny (Production URL) i wklej go w przeglądarkę.
Po kilku sekundach na kanale pojawi się wiadomość:
Błąd w workflow: Test alertu - celowy blad
Węzeł: Stop and Error
Komunikat: Celowy błąd do testu alertu
Szczegóły: http://localhost:5678/workflow/.../executions/7Po teście zdejmij workflow testowy przyciskiem Unpublish, żeby nikt przypadkiem nie wywoływał błędów.
Haczyk. Link w alercie prowadzi pod adres, pod którym n8n myśli, że działa. W Dockerze na laptopie to
localhost:5678i taki link zadziała tylko na tym komputerze. Na serwerze trzeba ustawić n8n jego prawdziwy adres, inaczej link z alertu na telefonie nigdzie cię nie zaprowadzi. Pokazuję to w dziale o n8n na serwerze.
Haczyk. Workflow błędów pilnuje innych, ale nie pilnuje sam siebie. Jeśli webhook Discorda przestanie działać, bo ktoś usunie kanał, alerty przestaną przychodzić po cichu. Raz na jakiś czas puść workflow testowy.
Kiedy tego nie używać
Discord jest dla ciebie i twojego zespołu. Jeśli o błędzie ma się dowiedzieć klient, wysyłasz mu maila albo SMS, i to raczej informację „przetwarzamy twoje zgłoszenie z opóźnieniem" niż surowy komunikat błędu. Ten sam Error Trigger obsłuży oba przypadki - zmieniasz tylko ostatni węzeł.
Pokaż JSON do skopiowania - alert-bledow-discord.json
{
"name": "Alert bledow na Discord",
"nodes": [
{
"parameters": {},
"type": "n8n-nodes-base.errorTrigger",
"typeVersion": 1,
"position": [0, 0],
"id": "a7d1e001-0000-4000-8000-000000000001",
"name": "Error Trigger"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "a7d1e001-0000-4000-8000-0000000000a1",
"name": "tresc",
"value": "=**Błąd w workflow:** {{ $json.workflow.name }}\n**Węzeł:** {{ $json.execution.lastNodeExecuted }}\n**Komunikat:** {{ $json.execution.error.message }}\n**Szczegóły:** {{ $json.execution.url }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [220, 0],
"id": "a7d1e001-0000-4000-8000-000000000002",
"name": "Tresc alertu"
},
{
"parameters": {
"authentication": "webhook",
"content": "={{ $json.tresc }}",
"options": {
"username": "n8n alerty"
}
},
"type": "n8n-nodes-base.discord",
"typeVersion": 2,
"position": [440, 0],
"id": "a7d1e001-0000-4000-8000-000000000003",
"name": "Wyslij na Discord"
}
],
"connections": {
"Error Trigger": {
"main": [[{ "node": "Tresc alertu", "type": "main", "index": 0 }]]
},
"Tresc alertu": {
"main": [[{ "node": "Wyslij na Discord", "type": "main", "index": 0 }]]
}
},
"settings": {
"executionOrder": "v1"
},
"active": false
}Pokaż JSON do skopiowania - test-alertu-celowy-blad.json
{
"name": "Test alertu - celowy blad",
"nodes": [
{
"parameters": {
"path": "test-alertu",
"options": {}
},
"type": "n8n-nodes-base.webhook",
"typeVersion": 2.1,
"position": [
0,
0
],
"id": "a7d1e002-0000-4000-8000-000000000001",
"name": "Webhook",
"webhookId": "a7d1e002-0000-4000-8000-0000000000ff"
},
{
"parameters": {
"errorMessage": "Celowy błąd do testu alertu"
},
"type": "n8n-nodes-base.stopAndError",
"typeVersion": 1,
"position": [
220,
0
],
"id": "a7d1e002-0000-4000-8000-000000000002",
"name": "Stop and Error"
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "Stop and Error",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
},
"active": false
}Podsumowanie
Masz jeden workflow błędów, który pilnuje wszystkich pozostałych: Error Trigger odbiera awarię, Edit Fields składa wiadomość, Discord ją wysyła. Workflow błędów musi być opublikowany, a w każdym pilnowanym workflow wskazujesz go w ustawieniach. Działanie sprawdzasz celowym błędem, zanim zdarzy się prawdziwy.
To koniec działu Start. W kolejnym dziale bierzemy węzły jeden po drugim, zaczynając od wyzwalaczy - bo to one decydują, kiedy twoja automatyzacja w ogóle rusza.