نود Switch در N8N
نود Switch در N8N یکی از مهمترین نودهای کنترلی برای ساخت ورکفلوهای هوشمند و چندمسیره است. با این نود میتوانید دادههای ورودی را بررسی کنید و بر اساس شرطهای مختلف، هر آیتم را به مسیر مناسب بفرستید. اگر بخواهید در یک ورکفلو تصمیم بگیرید که یک سفارش به کدام تیم ارسال شود، یک پیام بر اساس نوع کاربر به کدام کانال برود، یا دادهها بر اساس وضعیتشان پردازش متفاوتی داشته باشند، نود Switch یکی از بهترین انتخابهاست.
معرفی نود در N8N
نود Switch در N8N برای مسیردهی شرطی دادهها استفاده میشود. این نود دادههای ورودی را دریافت میکند، مقدار یک یا چند فیلد را بررسی میکند و سپس هر آیتم را به یکی از خروجیهای تعریفشده هدایت میکند.
دستهبندی این نود در N8N معمولاً در گروه نودهای Flow / Logic / Function قرار میگیرد، چون مستقیماً با منطق تصمیمگیری و کنترل مسیر اجرای ورکفلو سروکار دارد. این نود یک Trigger نیست و خودش اجرای ورکفلو را شروع نمیکند، بلکه بین نودهای دیگر قرار میگیرد و مسیر اجرای دادهها را مشخص میکند.
کاربرد اصلی Switch زمانی مشخص میشود که ورکفلو شما فقط یک مسیر ساده ندارد. برای مثال، اگر مقدار فیلد status برابر با paid باشد، داده باید به مسیر ارسال فاکتور برود؛ اگر برابر با pending باشد، باید پیام یادآوری ارسال شود؛ و اگر برابر با cancelled باشد، باید در یک دیتابیس لاگ ثبت شود.
موارد استفاده
نود Switch در پروژههای واقعی بسیار پرکاربرد است، مخصوصاً زمانی که دادهها از منابع مختلف مانند Webhook، فرمها، CRM، فروشگاه اینترنتی، Google Sheets، دیتابیس یا API دریافت میشوند و لازم است بر اساس مقدار مشخصی، مسیر پردازش تغییر کند.
۱. مسیردهی سفارشها بر اساس وضعیت پرداخت
فرض کنید اطلاعات سفارش از یک فروشگاه اینترنتی وارد N8N میشود. با نود Switch میتوانید سفارشها را بر اساس مقدار فیلد payment_status به مسیرهای مختلف بفرستید.
- اگر مقدار paid باشد: ارسال فاکتور با Email یا Telegram
- اگر مقدار pending باشد: ارسال پیام یادآوری پرداخت
- اگر مقدار failed باشد: ثبت خطا در Google Sheets یا Notion
- اگر مقدار refunded باشد: اطلاعرسانی به تیم مالی
۲. دستهبندی لیدهای فروش بر اساس منبع ورودی
اگر لیدها از چند کانال مختلف مانند سایت، اینستاگرام، تبلیغات گوگل یا فرم تماس وارد میشوند، نود Switch میتواند بر اساس مقدار فیلد source مسیر مناسب را انتخاب کند.
- لیدهای سایت به CRM ارسال شوند
- لیدهای اینستاگرام به کانال Slack تیم فروش بروند
- لیدهای تبلیغات گوگل در Google Sheets ذخیره شوند
- لیدهای فرم تماس برای کارشناس مربوطه ایمیل شوند
۳. مدیریت تیکتهای پشتیبانی بر اساس اولویت
در سیستم پشتیبانی، تیکتها معمولاً دارای اولویتهایی مانند low، medium، high و urgent هستند. نود Switch میتواند تیکتها را به مسیرهای مختلف ارسال کند.
- تیکتهای urgent به Slack یا Telegram ارسال شوند
- تیکتهای high برای مدیر تیم ایمیل شوند
- تیکتهای medium در صف عادی ذخیره شوند
- تیکتهای low فقط در دیتابیس ثبت شوند
۴. پردازش کاربران بر اساس نوع اشتراک
اگر در یک محصول SaaS کاربران دارای پلنهای مختلف باشند، نود Switch میتواند عملیات متفاوتی برای هر پلن انجام دهد.
- کاربران Free فقط ایمیل خوشامدگویی دریافت کنند
- کاربران Pro به لیست مشتریان ویژه اضافه شوند
- کاربران Enterprise به مدیر حساب اختصاصی متصل شوند
۵. ترکیب Switch با نودهای دیگر
نود Switch معمولاً در کنار نودهای زیر استفاده میشود:
- Webhook: دریافت داده از سایت، فرم، اپلیکیشن یا سرویس خارجی و سپس مسیردهی با Switch
- HTTP Request: ارسال داده هر مسیر به API متفاوت
- Google Sheets: ذخیره آیتمهای هر مسیر در شیت جداگانه
- Email Send: ارسال ایمیلهای متفاوت بر اساس وضعیت داده
- Slack / Telegram: ارسال اعلان به کانالهای مختلف
- Set / Edit Fields: آمادهسازی یا استانداردسازی داده قبل از ورود به Switch
- IF: ترکیب تصمیمگیری ساده با مسیردهی چندحالته
- Merge: ادغام دوباره خروجیهای مختلف پس از پردازش جداگانه
پارامترها و تنظیمات
تنظیمات نود Switch ممکن است بسته به نسخه N8N کمی تفاوت ظاهری داشته باشد، اما منطق اصلی آن ثابت است: تعریف شرطها و مشخص کردن خروجی مناسب برای هر شرط.
Mode
- نام پارامتر: Mode
- نوع داده: انتخابی
- کاربرد: مشخص میکند Switch چگونه تصمیمگیری کند.
- مقادیر رایج: Rules و Expression
- مثال عملی: اگر میخواهید با چند شرط ساده مانند status equals paid کار کنید، از Rules استفاده کنید. اگر میخواهید با یک عبارت سفارشی شماره خروجی را محاسبه کنید، از Expression استفاده کنید.
Rules
- نام پارامتر: Rules یا Routing Rules
- نوع داده: مجموعه شرطها
- کاربرد: در این بخش شرطهایی تعریف میکنید که هرکدام معمولاً به یک خروجی متصل میشوند.
- مثال عملی: Rule 1 بررسی کند که status برابر paid باشد و آیتم را به خروجی 0 بفرستد. Rule 2 بررسی کند که status برابر pending باشد و آیتم را به خروجی 1 بفرستد.
Value 1
- نام پارامتر: Value 1
- نوع داده: String، Number، Boolean، Date، Object یا Expression
- کاربرد: مقداری است که از داده ورودی خوانده میشود و قرار است با مقدار یا شرط دیگری مقایسه شود.
- مثال عملی: برای بررسی وضعیت سفارش میتوانید از عبارت
{{$json.status}}استفاده کنید.
Operation
- نام پارامتر: Operation
- نوع داده: انتخابی
- کاربرد: نوع مقایسه را مشخص میکند.
- عملیاتهای متداول: برابر است با، برابر نیست با، شامل میشود، شامل نمیشود، بزرگتر از، کوچکتر از، خالی است، خالی نیست، وجود دارد، وجود ندارد، با مقدار شروع میشود، با مقدار تمام میشود.
- مثال عملی: اگر مبلغ سفارش در فیلد total باشد، میتوانید شرط بگذارید که
{{$json.total}}بزرگتر از 1000000 باشد تا سفارشهای گرانتر به مسیر VIP بروند.
Value 2
- نام پارامتر: Value 2
- نوع داده: String، Number، Boolean، Date یا Expression
- کاربرد: مقدار مرجع برای مقایسه با Value 1 است.
- مثال عملی: اگر Value 1 برابر
{{$json.status}}باشد و Operation برابر equals باشد، Value 2 میتواندpaidباشد.
Output
- نام پارامتر: Output
- نوع داده: عدد یا خروجی اختصاصدادهشده
- کاربرد: مشخص میکند آیتمی که با یک Rule تطبیق دارد، از کدام خروجی نود خارج شود.
- مثال عملی: شرط status equals paid میتواند به Output 0 متصل شود و شرط status equals cancelled به Output 1.
Fallback Output
- نام پارامتر: Fallback Output
- نوع داده: انتخابی
- کاربرد: مشخص میکند اگر هیچکدام از شرطها با آیتم ورودی تطبیق نداشتند، چه اتفاقی بیفتد.
- مقادیر رایج: None یا Extra Output
- مثال عملی: اگر وضعیت سفارش هیچکدام از paid، pending یا failed نبود، آیتم به یک خروجی اضافی برود تا در مسیر بررسی دستی ذخیره شود.
Send Data to All Matching Outputs
- نام پارامتر: Send Data to All Matching Outputs
- نوع داده: Boolean
- کاربرد: مشخص میکند اگر یک آیتم با چند شرط تطبیق داشت، فقط به اولین مسیر منطبق برود یا به همه مسیرهای منطبق ارسال شود.
- مثال عملی: یک سفارش هم status برابر paid دارد و هم total بیشتر از 1000000 است. اگر این گزینه فعال باشد، ممکن است هم به مسیر فاکتور و هم به مسیر مشتری VIP برود.
Expression Mode
- نام پارامتر: Expression
- نوع داده: Expression
- کاربرد: در این حالت به جای تعریف چند Rule، یک عبارت مینویسید که خروجی مناسب را مشخص کند.
- مثال عملی: میتوانید بر اساس مقدار عددی priority مشخص کنید آیتم به کدام خروجی برود. مثلاً priority برابر 1 به خروجی اول، priority برابر 2 به خروجی دوم و priority برابر 3 به خروجی سوم.
Number of Outputs
- نام پارامتر: Number of Outputs
- نوع داده: Number
- کاربرد: در حالت Expression مشخص میکند نود چند خروجی داشته باشد.
- مثال عملی: اگر میخواهید دادهها را به سه مسیر Low، Medium و High تقسیم کنید، مقدار Number of Outputs را 3 قرار دهید.
Rename Output
- نام پارامتر: Rename Output یا Output Name
- نوع داده: String
- کاربرد: برای نامگذاری خروجیها استفاده میشود تا خوانایی ورکفلو بهتر شود.
- مثال عملی: به جای Output 0، نام خروجی را Paid Orders قرار دهید و به جای Output 1، نام Pending Orders را انتخاب کنید.
نکات مهم هنگام پیکربندی
- نوع دادهها را دقیق بررسی کنید. عدد
100با متن"100"ممکن است در بعضی مقایسهها رفتار متفاوتی داشته باشد. - قبل از Switch، اگر دادهها نامنظم هستند، از نود Set یا Edit Fields برای استانداردسازی فیلدها استفاده کنید.
- برای مقایسه متنها به حروف بزرگ و کوچک توجه کنید. مقدار
Paidممکن است باpaidیکسان در نظر گرفته نشود، مگر اینکه تنظیمات یا عبارت شما این موضوع را مدیریت کند. - اگر ممکن است هیچ شرطی برقرار نشود، بهتر است Fallback Output را فعال کنید تا دادهها گم نشوند.
- ترتیب Ruleها مهم است، مخصوصاً زمانی که ارسال به همه خروجیهای منطبق غیرفعال باشد. در این حالت معمولاً اولین شرط منطبق اجرا میشود.
- برای دادههای پیچیده یا تو در تو، از Expressionهای دقیق مانند
{{$json.customer.type}}استفاده کنید.
ورودیها و خروجیها
نود Switch هر آیتم ورودی را جداگانه بررسی میکند. یعنی اگر 100 آیتم وارد این نود شود، Switch برای هر آیتم به طور مستقل تصمیم میگیرد که آن آیتم باید از کدام خروجی خارج شود.
ساختار ورودی
ورودی نود Switch معمولاً یک یا چند آیتم JSON است که از نود قبلی دریافت میشود. نمونه ورودی:
[ { "order_id": 1001, "customer_name": "Ali Rezaei", "status": "paid", "total": 2500000, "source": "website" }, { "order_id": 1002, "customer_name": "Sara Ahmadi", "status": "pending", "total": 450000, "source": "instagram" }, { "order_id": 1003, "customer_name": "Nima Karimi", "status": "failed", "total": 900000, "source": "website" }]نمونه تنظیم شرطها
- Rule 1: اگر
{{$json.status}}برابرpaidبود، ارسال به خروجی Paid - Rule 2: اگر
{{$json.status}}برابرpendingبود، ارسال به خروجی Pending - Rule 3: اگر
{{$json.status}}برابرfailedبود، ارسال به خروجی Failed - Fallback: سایر وضعیتها به خروجی Unknown
خروجیها
خروجی نود Switch همان آیتمهای ورودی هستند، اما در مسیرهای جداگانه قرار میگیرند. خود نود معمولاً داده را تغییر نمیدهد، بلکه فقط مسیر عبور آن را مشخص میکند.
نمونه خروجی Paid
[ { "order_id": 1001, "customer_name": "Ali Rezaei", "status": "paid", "total": 2500000, "source": "website" }]نمونه خروجی Pending
[ { "order_id": 1002, "customer_name": "Sara Ahmadi", "status": "pending", "total": 450000, "source": "instagram" }]جدول نمونه مسیرها
| شرط | خروجی | کاربرد |
|---|---|---|
| status برابر paid | Paid Orders | ارسال فاکتور و ثبت پرداخت |
| status برابر pending | Pending Orders | ارسال یادآوری پرداخت |
| status برابر failed | Failed Orders | ثبت خطا و اطلاعرسانی |
| هیچ شرطی برقرار نیست | Fallback | بررسی دستی یا ذخیره در لاگ |
نکات پیشرفته و ترفندها
۱. استفاده از Switch برای جایگزینی چند IF پشت سر هم
اگر در ورکفلو چند نود IF پشت سر هم دارید که هرکدام یک مقدار را بررسی میکنند، معمولاً میتوانید همه آنها را با یک نود Switch جایگزین کنید. این کار باعث میشود ورکفلو خواناتر، سادهتر و قابل نگهداریتر شود.
۲. استانداردسازی داده قبل از ورود به Switch
یکی از مشکلات رایج در شرطگذاری، متفاوت بودن فرمت دادههاست. برای مثال ممکن است مقدار وضعیت گاهی Paid، گاهی paid و گاهی PAID باشد. بهتر است قبل از Switch با نود Set یا Code مقدار را یکسانسازی کنید.
{ "normalized_status": "paid"}۳. استفاده از Expression برای منطقهای پیچیده
در سناریوهای پیشرفته، شرطهای ساده کافی نیستند. مثلاً ممکن است مسیر خروجی بر اساس ترکیب چند فیلد مشخص شود: مبلغ سفارش، نوع مشتری و کشور. در این حالت استفاده از Expression میتواند انعطاف بیشتری بدهد.
{{$json.total > 1000000 && $json.customer_type === "vip" ? 0 : 1}}۴. ساخت مسیر خطای اختصاصی با Fallback
فعال کردن Fallback Output یکی از بهترین روشها برای جلوگیری از حذف ناخواسته دادههاست. هر آیتمی که با شرطها تطبیق نداشته باشد، وارد مسیر Fallback میشود و میتوانید آن را در دیتابیس، Google Sheets یا سیستم لاگ ذخیره کنید.
۵. ترکیب Switch با Merge
گاهی لازم است دادهها را به چند مسیر مختلف بفرستید، روی هر مسیر پردازش متفاوتی انجام دهید و در پایان دوباره همه مسیرها را یکی کنید. برای این کار میتوانید بعد از خروجیهای Switch از نود Merge استفاده کنید.
۶. نامگذاری خروجیها برای خوانایی بهتر
در ورکفلوهای بزرگ، خروجیهایی مانند Output 0 و Output 1 ممکن است گیجکننده شوند. اگر نسخه N8N شما امکان نامگذاری خروجیها را دارد، بهتر است نامهایی مانند Paid، Pending، Failed، VIP یا Support انتخاب کنید.
۷. استفاده از Switch برای کنترل نرخ پردازش
میتوانید آیتمها را بر اساس اهمیت یا نوع عملیات به مسیرهای مختلف بفرستید. برای مثال درخواستهای سنگین به صف جداگانه و درخواستهای سبک به مسیر سریعتر بروند. این روش برای بهینهسازی ورکفلوهای حجیم کاربرد دارد.
محدودیتها و خطاها
محدودیتها
- نود Switch دادهها را تغییر نمیدهد؛ فقط مسیر آنها را مشخص میکند. برای تغییر داده باید از Set، Edit Fields یا Code استفاده شود.
- اگر هیچ Ruleای با داده منطبق نشود و Fallback فعال نباشد، آن آیتم از هیچ خروجیای عبور نمیکند.
- در صورت زیاد شدن تعداد Ruleها، خوانایی نود کاهش پیدا میکند و بهتر است منطق را با Code یا ساختارهای جداگانه مدیریت کنید.
- مقایسه دادههای پیچیده مانند آرایهها و آبجکتها ممکن است نیاز به Expression دقیق داشته باشد.
- در بعضی حالتها تفاوت نوع داده String و Number باعث نتیجه غیرمنتظره میشود.
خطای رایج: آیتم از هیچ خروجی خارج نمیشود
علت: هیچکدام از شرطها با داده ورودی تطبیق ندارد و Fallback Output غیرفعال است.
راهحل: شرطها را بررسی کنید، مقدار واقعی داده ورودی را در Execution ببینید و Fallback Output را فعال کنید.
خطای رایج: شرط برابر بودن کار نمیکند
علت: مقدار ورودی با مقدار شرط دقیقاً یکسان نیست. ممکن است مشکل از حروف بزرگ و کوچک، فاصله اضافی یا نوع داده باشد.
راهحل: داده را قبل از Switch پاکسازی کنید. برای متنها میتوانید از تبدیل به حروف کوچک و حذف فاصلههای اضافی استفاده کنید.
خطای رایج: مسیر اشتباه انتخاب میشود
علت: ترتیب Ruleها مناسب نیست یا گزینه ارسال به همه خروجیهای منطبق غیرفعال است و اولین شرط منطبق زودتر اجرا میشود.
راهحل: Ruleهای خاصتر را بالاتر قرار دهید و Ruleهای عمومیتر را پایینتر بگذارید.
خطای رایج: مقایسه عددی درست انجام نمیشود
علت: مقدار عددی به صورت String وارد شده است. برای مثال "500" به جای 500.
راهحل: قبل از Switch مقدار را با نود Code یا Expression به عدد تبدیل کنید.
{{Number($json.total)}}خطای رایج: فیلد موردنظر undefined است
علت: مسیر فیلد اشتباه نوشته شده یا در بعضی آیتمها آن فیلد وجود ندارد.
راهحل: ساختار JSON را در خروجی نود قبلی بررسی کنید و برای فیلدهای اختیاری از شرط وجود داشتن استفاده کنید.
ایده ها
- سیستم هوشمند اولویتبندی مشتریان: مشتریان بر اساس مبلغ خرید، تعداد سفارش و نوع اشتراک به مسیرهای VIP، عادی و نیازمند پیگیری تقسیم شوند.
- ربات مدیریت پیامها: پیامهای دریافتی از تلگرام یا واتساپ بر اساس کلمات کلیدی به واحد فروش، پشتیبانی یا مالی ارسال شوند.
- اتوماسیون بررسی فرم استخدام: رزومهها بر اساس موقعیت شغلی انتخابشده به مسیرهای مختلف منابع انسانی ارسال شوند.
- مانیتورینگ خطاهای سیستم: خطاهای دریافتی از API یا سرور بر اساس severity به مسیرهای info، warning، error و critical هدایت شوند.
- سیستم دستهبندی محتوای شبکههای اجتماعی: پستها یا کامنتها بر اساس احساسات، موضوع یا کلمات کلیدی به مسیر پاسخ خودکار، بررسی دستی یا ذخیره آرشیوی بروند.
