نود Error Trigger در N8N
نود Error Trigger یکی از مهمترین نودهای n8n برای ساخت سیستمهای پایدار، قابل مانیتورینگ و حرفهای است. این نود زمانی اجرا میشود که یک ورکفلو دیگر در n8n با خطا متوقف شود. به کمک آن میتوانید بهصورت خودکار خطاها را ثبت کنید، برای تیم فنی پیام هشدار بفرستید، تیکت پشتیبانی بسازید، لاگ خطا را در دیتابیس ذخیره کنید یا حتی سناریوهای بازیابی و تلاش مجدد طراحی کنید.
اگر در n8n ورکفلوهایی دارید که سفارشها، پرداختها، APIها، ایمیلها، فایلها یا دادههای مهم را پردازش میکنند، استفاده از Error Trigger باعث میشود خطاها بیصدا از دست نروند و سریعتر قابل بررسی باشند.
معرفی نود در N8N
نود Error Trigger یک نود از نوع Trigger است. یعنی شروعکننده یک ورکفلو محسوب میشود و زمانی اجرا میشود که یک رویداد خاص اتفاق بیفتد. رویداد مورد نظر این نود، شکست یا خطا خوردن یک ورکفلو دیگر در n8n است.
دستهبندی نود
- نوع نود: Trigger
- کارکرد اصلی: اجرای خودکار یک ورکفلو هنگام خطا خوردن ورکفلوهای دیگر
- نیاز به Credential: ندارد
- نیاز به ورودی از نود قبلی: ندارد، چون باید بهعنوان اولین نود ورکفلو استفاده شود
- خروجی اصلی: اطلاعات مربوط به خطای رخداده، نام ورکفلو، شناسه اجرای ناموفق، پیام خطا و اطلاعات تکمیلی
Error Trigger چه مشکلی را حل میکند؟
در پروژههای واقعی، ممکن است یک ورکفلو به دلایل مختلف شکست بخورد؛ برای مثال API مقصد در دسترس نباشد، توکن احراز هویت منقضی شده باشد، داده ورودی ساختار درستی نداشته باشد یا یک نود به دلیل محدودیت زمانی اجرا نشود. اگر این خطاها مانیتور نشوند، ممکن است فرآیندهای مهم کسبوکار بدون اطلاع متوقف شوند.
نود Error Trigger کمک میکند یک سیستم متمرکز برای مدیریت خطاها بسازید. به جای اینکه برای هر ورکفلو بهصورت جداگانه نودهای اطلاعرسانی خطا اضافه کنید، میتوانید یک Error Workflow مرکزی ایجاد کنید و خطاهای چندین ورکفلو را در آن مدیریت کنید.
نحوه کلی استفاده
- یک ورکفلو جدید برای مدیریت خطاها ایجاد کنید.
- نود Error Trigger را بهعنوان اولین نود قرار دهید.
- بعد از آن نودهایی مثل Slack، Telegram، Email، Google Sheets، Notion، Jira، HTTP Request یا Database اضافه کنید.
- در تنظیمات ورکفلویی که میخواهید خطاهای آن مانیتور شود، این ورکفلو را بهعنوان Error Workflow انتخاب کنید.
- ورکفلوها را ذخیره و در محیط عملیاتی فعال کنید.
موارد استفاده
نود Error Trigger بیشتر در سناریوهایی استفاده میشود که نیاز دارید شکستهای یک ورکفلو را سریع، ساختارمند و قابل پیگیری مدیریت کنید.
ارسال هشدار به Slack یا Telegram
یکی از رایجترین کاربردهای Error Trigger ارسال پیام هشدار به تیم فنی است. برای مثال اگر ورکفلوی پردازش سفارش با خطا مواجه شود، Error Trigger فعال میشود و یک پیام شامل نام ورکفلو، پیام خطا، نود مشکلدار و لینک اجرای ناموفق به کانال Slack یا گروه Telegram ارسال میکند.
- نودهای پیشنهادی: Error Trigger، Set، Slack یا Telegram
- کاربرد عملی: اطلاع فوری به تیم فنی هنگام خطای سیستم
- نمونه پیام: خطا در ورکفلوی ثبت سفارش، نود HTTP Request، پیام: 500 Internal Server Error
ثبت خطاها در Google Sheets یا دیتابیس
برای تحلیل بلندمدت خطاها بهتر است همه خطاها در یک محل ذخیره شوند. میتوانید بعد از Error Trigger، اطلاعات خطا را در Google Sheets، Airtable، PostgreSQL، MySQL یا یک سیستم لاگ مرکزی ذخیره کنید.
- نودهای پیشنهادی: Error Trigger، Set، Google Sheets یا PostgreSQL
- کاربرد عملی: ساخت گزارش ماهانه از خطاهای پرتکرار
- فیلدهای مفید برای ذخیره: نام ورکفلو، شناسه اجرا، نود خطادار، پیام خطا، زمان خطا، لینک اجرا
ساخت تیکت خودکار در Jira، Trello یا Linear
اگر تیم شما برای مدیریت باگها از ابزارهایی مثل Jira، Trello، ClickUp یا Linear استفاده میکند، میتوانید با Error Trigger بهصورت خودکار برای خطاهای مهم تیکت ایجاد کنید.
- نودهای پیشنهادی: Error Trigger، IF یا Switch، Jira یا Trello
- کاربرد عملی: تبدیل خطاهای مهم به تسک قابل پیگیری
- نکته مهم: بهتر است برای جلوگیری از ایجاد تیکتهای تکراری، ابتدا خطاها را بر اساس نام ورکفلو و پیام خطا دستهبندی کنید.
دستهبندی خطاها بر اساس شدت
همه خطاها اهمیت یکسانی ندارند. خطای مربوط به پرداخت آنلاین ممکن است بسیار مهمتر از خطای ارسال ایمیل تبلیغاتی باشد. میتوانید بعد از Error Trigger از نودهای IF یا Switch استفاده کنید و بر اساس نام ورکفلو، نام نود خطادار یا متن پیام خطا، شدت خطا را مشخص کنید.
- خطای بحرانی: خطا در پرداخت، ثبت سفارش، ارسال اطلاعات به CRM
- خطای متوسط: خطا در ارسال ایمیل اطلاعرسانی
- خطای کماهمیت: خطا در بهروزرسانی یک گزارش داخلی
اجرای فرآیند جایگزین یا بازیابی
در برخی موارد میتوانید بعد از رخ دادن خطا، یک فرآیند جایگزین اجرا کنید. برای مثال اگر ارسال اطلاعات به API اصلی شکست خورد، دادهها را در یک صف، دیتابیس یا Google Sheets ذخیره کنید تا بعداً دوباره پردازش شوند.
- نودهای پیشنهادی: Error Trigger، Database، HTTP Request، Execute Workflow
- کاربرد عملی: جلوگیری از از دست رفتن داده هنگام خطای موقت سرویس خارجی
- نمونه: اگر API حسابداری در دسترس نبود، فاکتور ناموفق در جدول pending_invoices ذخیره شود.
پارامترها و تنظیمات
نود Error Trigger برخلاف بسیاری از نودهای n8n پارامتر پیچیدهای ندارد. این نود فقط باید در ابتدای یک ورکفلو قرار بگیرد و سپس آن ورکفلو بهعنوان Error Workflow برای ورکفلوهای دیگر انتخاب شود.
پارامترهای خود نود Error Trigger
- نام پارامتر: ندارد
نوع داده: ندارد
توضیح کاربرد: این نود به تنظیمات داخلی خاصی نیاز ندارد و هنگام خطا خوردن ورکفلوهای متصل به آن، بهصورت خودکار اجرا میشود.
مثال عملی: کافی است این نود را در ابتدای ورکفلوی مدیریت خطا قرار دهید و بعد از آن نود Telegram را برای ارسال هشدار اضافه کنید.
تنظیمات مرتبط در ورکفلوی اصلی
اگرچه خود Error Trigger پارامتری ندارد، اما برای فعال شدن آن باید در تنظیمات ورکفلویی که میخواهید خطاهای آن را مدیریت کنید، Error Workflow را مشخص کنید.
- نام تنظیم: Error Workflow
نوع داده: انتخاب از لیست ورکفلوها
توضیح کاربرد: مشخص میکند هنگام خطا خوردن این ورکفلو، کدام ورکفلو بهعنوان مدیریتکننده خطا اجرا شود.
مثال عملی: در ورکفلوی Process Orders، از بخش Settings، ورکفلوی Central Error Handler را بهعنوان Error Workflow انتخاب کنید. - نام تنظیم: Save Failed Executions
نوع داده: Boolean یا تنظیم سطح ورکفلو/سیستم
توضیح کاربرد: ذخیره اجرای ناموفق باعث میشود بعداً بتوانید جزئیات اجرای خطادار را بررسی کنید و لینک اجرای ناموفق در خروجی Error Trigger کاربردیتر باشد.
مثال عملی: برای ورکفلوهای مالی یا سفارش، ذخیره اجرای ناموفق را فعال نگه دارید تا امکان بررسی دقیق وجود داشته باشد. - نام تنظیم: Active Status
نوع داده: Boolean
توضیح کاربرد: در محیط عملیاتی بهتر است هم ورکفلوی اصلی و هم ورکفلوی مدیریت خطا فعال و ذخیرهشده باشند تا اجرای خطا بهدرستی انجام شود.
مثال عملی: بعد از ساخت Central Error Handler، آن را ذخیره و فعال کنید، سپس در ورکفلوهای مهم بهعنوان Error Workflow انتخاب کنید.
نکات مهم هنگام پیکربندی
- نود Error Trigger باید شروعکننده ورکفلو باشد و معمولاً بهعنوان اولین نود قرار میگیرد.
- یک ورکفلو که با Error Trigger شروع میشود، برای مدیریت خطای ورکفلوهای دیگر استفاده میشود، نه برای اجرای عادی با Webhook یا Schedule.
- اگر در نودهای ورکفلوی اصلی گزینه Continue On Fail را فعال کرده باشید، ممکن است آن خطا باعث شکست کل ورکفلو نشود؛ در نتیجه Error Trigger اجرا نمیشود.
- برای تست مطمئن، یک ورکفلوی آزمایشی بسازید که عمداً خطا تولید کند، سپس Error Workflow را برای آن تنظیم کنید.
- بهتر است در ورکفلوی مدیریت خطا، نودهای اطلاعرسانی و ثبت لاگ را ساده، پایدار و کمریسک نگه دارید.
- برای جلوگیری از حلقه خطا، بهتر است خود ورکفلوی مدیریت خطا بهگونهای طراحی شود که در صورت شکست نودهای جانبی، مشکل جدیدی ایجاد نکند.
ورودیها و خروجیها
ورودی نود Error Trigger
نود Error Trigger ورودی معمولی از نود قبلی دریافت نمیکند، چون شروعکننده ورکفلو است. ورودی واقعی آن رویداد خطای یک ورکفلو دیگر است. وقتی یک ورکفلو که برای آن Error Workflow تنظیم شده است با شکست مواجه شود، n8n اطلاعات خطا را به ورکفلوی دارای Error Trigger ارسال میکند.
- Input از نود قبلی: ندارد
- نوع ورودی: رویداد داخلی n8n هنگام شکست اجرای یک ورکفلو
- زمان اجرا: بعد از ناموفق شدن اجرای ورکفلوی اصلی
خروجی نود Error Trigger
خروجی این نود معمولاً شامل یک آیتم JSON است که اطلاعاتی درباره اجرای ناموفق، خطای رخداده و ورکفلوی اصلی دارد. ساختار دقیق خروجی ممکن است با توجه به نسخه n8n، نوع خطا و نحوه اجرای ورکفلو کمی متفاوت باشد، اما معمولاً شامل بخشهای زیر است.
- execution.id: شناسه اجرای ناموفق
- execution.url: لینک مشاهده اجرای ناموفق در محیط n8n
- execution.retryOf: اگر این اجرا تلاش مجدد یک اجرای قبلی باشد، شناسه اجرای اصلی را نشان میدهد
- execution.error.message: پیام اصلی خطا
- execution.error.stack: جزئیات فنی خطا برای دیباگ
- execution.lastNodeExecuted: آخرین نودی که قبل از شکست اجرا شده است
- execution.mode: حالت اجرای ورکفلو، مانند trigger یا manual
- workflow.id: شناسه ورکفلوی خطادار
- workflow.name: نام ورکفلوی خطادار
نمونه خروجی JSON
{ "execution": { "id": "12345", "url": "https://n8n.example.com/workflow/7/executions/12345", "retryOf": null, "error": { "message": "Request failed with status code 500", "name": "NodeApiError", "stack": "NodeApiError: Request failed with status code 500..." }, "lastNodeExecuted": "HTTP Request", "mode": "trigger" }, "workflow": { "id": "7", "name": "Process Orders" }}
استفاده از دادههای خروجی در نودهای بعدی
در نودهای بعدی میتوانید از Expressionهای n8n برای خواندن اطلاعات خروجی استفاده کنید.
- نام ورکفلوی خطادار:
{{$json.workflow.name}} - شناسه اجرای ناموفق:
{{$json.execution.id}} - پیام خطا:
{{$json.execution.error.message}} - آخرین نود اجراشده:
{{$json.execution.lastNodeExecuted}} - لینک اجرای ناموفق:
{{$json.execution.url}}
نمونه متن پیام برای Slack یا Telegram
خطا در ورکفلو: {{$json.workflow.name}}شناسه اجرا: {{$json.execution.id}}نود مشکلدار: {{$json.execution.lastNodeExecuted}}پیام خطا: {{$json.execution.error.message}}لینک بررسی: {{$json.execution.url}}
نکات پیشرفته و ترفندها
ساخت Error Workflow مرکزی
به جای اینکه برای هر ورکفلو مسیر جداگانهای برای مدیریت خطا طراحی کنید، میتوانید یک ورکفلوی مرکزی با نامی مثل Central Error Handler بسازید. سپس آن را در تنظیمات چندین ورکفلو بهعنوان Error Workflow انتخاب کنید.
- مدیریت خطاها یکپارچه میشود.
- فرمت پیامهای هشدار استاندارد میشود.
- ثبت لاگها در یک دیتابیس یا فایل واحد سادهتر میشود.
- نگهداری و تغییرات آینده راحتتر خواهد بود.
دستهبندی خطا با IF و Switch
برای ایجاد منطق حرفهای، بعد از Error Trigger از IF یا Switch استفاده کنید. برای مثال اگر نام ورکفلو شامل عبارت Payment بود، پیام به کانال خطاهای بحرانی ارسال شود؛ اگر خطا مربوط به Email بود، فقط در دیتابیس ثبت شود.
- شرط بر اساس نام ورکفلو:
{{$json.workflow.name}} - شرط بر اساس پیام خطا:
{{$json.execution.error.message}} - شرط بر اساس نود خطادار:
{{$json.execution.lastNodeExecuted}}
جلوگیری از هشدارهای تکراری
اگر یک سرویس خارجی برای چند دقیقه قطع شود، ممکن است دهها یا صدها خطا پشت سر هم رخ دهد. برای جلوگیری از ارسال هشدارهای تکراری، میتوانید یک اثر انگشت یا fingerprint از خطا بسازید و قبل از ارسال پیام بررسی کنید آیا همان خطا اخیراً ثبت شده است یا نه.
- نمونه fingerprint: ترکیب نام ورکفلو، نام نود خطادار و پیام خطا
- نودهای پیشنهادی: Code، Data Store، Redis، PostgreSQL، IF
- کاربرد: ارسال فقط یک هشدار برای خطاهای تکراری در بازه زمانی مشخص
غنیسازی اطلاعات خطا با n8n API
خروجی Error Trigger اطلاعات اصلی خطا را ارائه میدهد، اما اگر به جزئیات بیشتری از اجرای ناموفق نیاز داشته باشید، میتوانید با نود HTTP Request و API خود n8n اطلاعات execution را دریافت کنید. این روش برای ذخیره ورودی و خروجی نودهای مختلف یا بررسی دقیقتر مسیر اجرا مفید است.
- نودهای پیشنهادی: Error Trigger، HTTP Request، Set، Database
- نیازمندی: دسترسی امن و احراز هویتشده به API n8n
- نکته امنیتی: اطلاعات execution ممکن است شامل دادههای حساس باشد؛ آن را بدون فیلتر در ابزارهای عمومی ارسال نکنید.
طراحی پیامهای خوانا و کوتاه
پیام خطا نباید بیش از حد طولانی و فنی باشد. برای کانالهای اطلاعرسانی مثل Slack یا Telegram، یک پیام کوتاه و کاربردی ارسال کنید و لینک اجرای کامل را برای بررسی جزئیات قرار دهید.
- نام ورکفلو
- نام نود خطادار
- پیام کوتاه خطا
- زمان رخداد
- لینک اجرای ناموفق
استفاده از Continue On Fail با دقت
گزینه Continue On Fail در نودهای n8n باعث میشود ورکفلو حتی بعد از خطای آن نود ادامه پیدا کند. این ویژگی گاهی مفید است، اما اگر انتظار دارید Error Trigger اجرا شود، باید توجه کنید که فعال بودن Continue On Fail ممکن است مانع شکست کل ورکفلو شود.
- برای خطاهای قابل چشمپوشی از Continue On Fail استفاده کنید.
- برای خطاهای مهم، اجازه دهید ورکفلو واقعاً fail شود تا Error Trigger فعال شود.
- اگر از Continue On Fail استفاده میکنید، میتوانید خودتان با IF مسیر خطا را مدیریت و لاگ کنید.
ایمنسازی ورکفلوی مدیریت خطا
ورکفلوی مدیریت خطا باید تا حد امکان پایدار باشد. اگر خود این ورکفلو هم به دلیل خطای Slack، Telegram یا دیتابیس شکست بخورد، فرآیند مانیتورینگ قابل اعتماد نخواهد بود.
- برای نودهای اطلاعرسانی جایگزین در نظر بگیرید.
- در صورت نیاز، خطاها را ابتدا در یک ذخیرهساز ساده و پایدار ثبت کنید.
- از ارسال دادههای بسیار حجیم در پیامهای هشدار خودداری کنید.
- دسترسیها و توکنهای مورد استفاده در Error Workflow را مرتب بررسی کنید.
محدودیتها و خطاها
محدودیتهای نود Error Trigger
- این نود برای شروع ورکفلوهای عادی طراحی نشده و فقط برای مدیریت خطا استفاده میشود.
- خود نود پارامتر قابل تنظیم خاصی ندارد.
- برای فعال شدن باید ورکفلوی دارای Error Trigger بهعنوان Error Workflow در ورکفلوی اصلی انتخاب شود.
- اگر خطا در یک نود با Continue On Fail مدیریت شده باشد و کل ورکفلو fail نشود، Error Trigger ممکن است اجرا نشود.
- این نود بهصورت پیشفرض تمام دادههای ورودی و خروجی همه نودهای اجرای ناموفق را در خروجی خود قرار نمیدهد.
- رفتار اجرای دستی در محیط ادیتور ممکن است به نسخه n8n و تنظیمات ذخیره execution وابسته باشد؛ برای تست عملیاتی بهتر است یک ورکفلوی تست فعال با خطای عمدی استفاده شود.
- اگر دادههای خطا شامل اطلاعات حساس باشد، ارسال مستقیم آن به پیامرسانها یا سرویسهای خارجی میتواند ریسک امنیتی ایجاد کند.
خطای رایج: Error Trigger اجرا نمیشود
- علت احتمالی: ورکفلوی مدیریت خطا در تنظیمات ورکفلوی اصلی انتخاب نشده است.
- راهحل: وارد Settings ورکفلوی اصلی شوید و در بخش Error Workflow، ورکفلوی دارای Error Trigger را انتخاب کنید.
خطای رایج: ورکفلو خطا دارد اما Error Workflow اجرا نمیشود
- علت احتمالی: نود خطادار دارای Continue On Fail است و شکست کل ورکفلو اتفاق نمیافتد.
- راهحل: Continue On Fail را برای خطاهای مهم غیرفعال کنید یا مسیر مدیریت خطای جداگانه با IF طراحی کنید.
خطای رایج: پیام خطا ناقص است
- علت احتمالی: برخی انواع خطاها جزئیات متفاوتی در خروجی تولید میکنند.
- راهحل: در پیام هشدار از فیلدهای اصلی مثل workflow.name، execution.id، execution.error.message و execution.url استفاده کنید و برای جزئیات بیشتر از API n8n یا صفحه execution کمک بگیرید.
خطای رایج: ارسال هشدار بیش از حد زیاد
- علت احتمالی: یک خطای تکراری در چندین اجرای پشت سر هم رخ میدهد.
- راهحل: از Data Store، Redis یا دیتابیس برای نگهداری fingerprint خطا استفاده کنید و ارسال پیام را در بازه زمانی مشخص محدود کنید.
خطای رایج: خطاهای حساس در پیامرسان ارسال میشوند
- علت احتمالی: متن کامل stack trace یا دادههای execution بدون فیلتر ارسال شده است.
- راهحل: قبل از ارسال پیام با نود Set یا Code فقط فیلدهای ضروری را انتخاب کنید و توکنها، ایمیلها، شمارهها یا اطلاعات محرمانه را حذف یا ماسک کنید.
ایده ها
- داشبورد مرکزی خطاها: با Error Trigger خطاها را در PostgreSQL یا Google Sheets ذخیره کنید و با ابزارهایی مثل Looker Studio یا Metabase داشبورد بسازید.
- سیستم هشدار هوشمند: خطاها را بر اساس شدت دستهبندی کنید و فقط خطاهای بحرانی را به Slack یا Telegram بفرستید.
- ساخت تیکت خودکار: برای خطاهای تکراری یا مهم بهصورت خودکار در Jira، Trello یا ClickUp تسک ایجاد کنید.
- صف پردازش مجدد: هنگام خطا، اطلاعات اجرای ناموفق را در یک جدول pending ذخیره کنید تا بعداً توسط یک ورکفلوی Scheduled دوباره پردازش شود.
- گزارش روزانه خطاها: به جای ارسال همه خطاها بهصورت لحظهای، آنها را ذخیره کنید و روزانه یک خلاصه از تعداد خطاها، ورکفلوهای مشکلدار و خطاهای پرتکرار ارسال کنید.
