در بسیاری از فرآیندهای اتوماسیون، لازم است اطلاعات ورودی را بررسی کنیم و بر اساس مقدار آن، عملیات متفاوتی انجام دهیم. برای مثال، ممکن است بخواهیم سفارشهای یک فروشگاه اینترنتی را بر اساس وضعیت پرداخت به چند مسیر مختلف هدایت کنیم، پیامهای دریافتی را بر اساس نوع آنها دستهبندی کنیم یا درخواستهای مشتریان را به بخشهای مختلف یک سیستم بفرستیم.
در n8n برای پیادهسازی چنین فرآیندهایی میتوان از نود Switch استفاده کرد. این نود به شما اجازه میدهد چند حالت مختلف را تعریف کنید و دادهها را متناسب با شرایط تعیینشده به خروجیهای متفاوت بفرستید.
در این مقاله یاد میگیریم Switch در n8n چیست، چگونه تنظیم میشود، چه تفاوتی با IF دارد و چطور میتوان از آن برای ساخت یک سیستم اتوماسیون واقعی استفاده کرد.
Switch در n8n چیست؟
Switch یکی از نودهای منطقی و کنترلی n8n است که برای مسیریابی دادهها بر اساس یک یا چند شرط استفاده میشود.
فرض کنید یک سیستم فروشگاهی اطلاعات سفارشها را دریافت میکند. هر سفارش میتواند یکی از وضعیتهای زیر را داشته باشد:
pending: سفارش در انتظار پرداخت است.paid: پرداخت سفارش انجام شده است.shipped: سفارش ارسال شده است.cancelled: سفارش لغو شده است.
اگر بخواهیم برای هر وضعیت عملیات متفاوتی انجام دهیم، استفاده از چندین نود IF میتواند Workflow را پیچیده کند. با Switch میتوانیم وضعیت سفارش را بررسی کرده و برای هر حالت، یک مسیر جداگانه ایجاد کنیم.
برای مثال:
- سفارش پرداختنشده به مسیر ارسال یادآوری پرداخت برود.
- سفارش پرداختشده وارد مسیر آمادهسازی سفارش شود.
- سفارش ارسالشده به مسیر اطلاعرسانی کد رهگیری برود.
- سفارش لغوشده وارد مسیر ثبت و بررسی لغو شود.
بنابراین، Switch زمانی کاربردی است که بهجای بررسی یک شرط ساده، بخواهیم بین چند حالت مختلف تصمیمگیری کنیم.
تفاوت Switch و IF در n8n چیست؟
هر دو نود IF و Switch برای کنترل جریان اجرای Workflow استفاده میشوند، اما شیوه استفاده از آنها متفاوت است.
نود IF معمولاً زمانی مناسب است که بخواهیم یک شرط را بررسی کنیم و دادهها را به دو مسیر True و False هدایت کنیم.
در مقابل، Switch برای زمانی مناسب است که چند حالت یا چند مسیر احتمالی داریم.
| ویژگی | IF | Switch |
|---|---|---|
| کاربرد اصلی | بررسی شرط و ایجاد دو مسیر | بررسی چند حالت و ایجاد چند مسیر |
| تعداد مسیرها | معمولاً True و False | چند خروجی بر اساس Ruleهای تعریفشده |
| مثال مناسب | بررسی اینکه مبلغ سفارش بیشتر از یک مقدار مشخص است یا نه | تقسیم سفارشها بر اساس وضعیت پرداخت |
| مدیریت حالتهای متعدد | ممکن است به چند IF نیاز داشته باشد | معمولاً ساختار منظمتری دارد |
| خوانایی Workflow | برای تصمیمهای ساده مناسب است | برای مسیریابی چندحالته مناسب است |
برای مثال، اگر فقط میخواهید بررسی کنید که مبلغ خرید بیشتر از ۵۰۰ هزار تومان است یا خیر، IF انتخاب مناسبی است.
اما اگر بخواهید سفارش را بر اساس وضعیتهای «در انتظار پرداخت»، «پرداختشده»، «ارسالشده» و «لغوشده» به چهار مسیر مختلف هدایت کنید، Switch انتخاب مناسبتری خواهد بود.
پیشنیازهای آموزش Switch در n8n
برای اجرای مثالهای این مقاله، به یک Workflow ساده در n8n نیاز دارید.
پیشنهاد میشود با مفاهیم زیر آشنا باشید:
- ساخت Workflow و اجرای دستی آن
- کار با نود Edit Fields
- آشنایی مقدماتی با دادههای JSON
- آشنایی با نود IF
اگر هنوز با ساختار Workflow آشنا نیستید، بهتر است ابتدا مقاله آموزش ساخت Workflow در n8n را مطالعه کنید.
آموزش ساخت اولین Switch در n8n
در این بخش یک مثال ساده ایجاد میکنیم تا ببینیم چگونه میتوان با استفاده از Switch، دادهها را به مسیرهای متفاوت هدایت کرد.
مرحله اول: ایجاد Workflow
ابتدا وارد محیط n8n شوید و یک Workflow جدید ایجاد کنید.
یک نود Manual Trigger به Workflow اضافه کنید تا بتوانید فرآیند را بهصورت دستی اجرا کنید.
سپس یک نود Edit Fields به آن متصل کنید.
ساختار اولیه Workflow به این شکل خواهد بود:
Manual Trigger → Edit Fields
مرحله دوم: تعریف داده ورودی
در نود Edit Fields یک فیلد به نام status ایجاد کنید.
مقدار این فیلد را برابر paid قرار دهید.
برای مثال، داده ورودی ما میتواند به این صورت باشد:
{
"order_id": 1250,
"customer_name": "Ali",
"status": "paid",
"amount": 850000
}
در این داده، شناسه سفارش، نام مشتری، وضعیت سفارش و مبلغ آن ذخیره شده است.
دقت کنید که مقادیر بالا صرفاً دادههای آزمایشی هستند و برای اجرای این مثال نیازی به اتصال به فروشگاه واقعی ندارید.
مرحله سوم: اضافه کردن نود Switch
یک نود Switch به Workflow اضافه کنید و آن را بعد از Edit Fields قرار دهید.
ساختار Workflow اکنون به شکل زیر است:
Manual Trigger → Edit Fields → Switch
نود Switch داده ورودی را دریافت میکند و بر اساس تنظیماتی که در آن تعریف میکنیم، مسیر مناسب را انتخاب خواهد کرد.
مرحله چهارم: تنظیم Ruleهای Switch
نود Switch را باز کنید.
در حالت Rule-based، میتوانید برای هر حالت یک Rule جداگانه تعریف کنید. نام و محل دقیق گزینهها ممکن است با توجه به نسخه n8n متفاوت باشد.
برای مثال، فیلد status را بررسی میکنیم و این حالتها را تعریف میکنیم:
- Rule اول: مقدار
statusبرابرpendingباشد. - Rule دوم: مقدار
statusبرابرpaidباشد. - Rule سوم: مقدار
statusبرابرshippedباشد. - Rule چهارم: مقدار
statusبرابرcancelledباشد.
در قسمت مقدار مورد بررسی، معمولاً میتوانید از Expression زیر استفاده کنید:
{{ $json.status }}
این Expression مقدار فیلد status را از داده ورودی همان آیتم دریافت میکند.
سپس برای هر Rule، عملگر مقایسه مناسب، مانند «برابر است»، را انتخاب کرده و مقدار موردنظر را وارد کنید.
مرحله پنجم: اتصال مسیرهای خروجی
پس از تعریف Ruleها، خروجیهای متناظر Switch را به نودهای موردنظر متصل کنید.
برای آزمایش اولیه، میتوانید بعد از هر خروجی یک نود جداگانه قرار دهید و در آن مشخص کنید که کدام وضعیت انتخاب شده است.
برای مثال، چهار مسیر داشته باشید:
- مسیر اول: سفارش در انتظار پرداخت
- مسیر دوم: سفارش پرداختشده
- مسیر سوم: سفارش ارسالشده
- مسیر چهارم: سفارش لغوشده
اکنون Workflow را اجرا کنید.
چون مقدار status برابر paid است، باید مسیر مربوط به سفارش پرداختشده انتخاب شود.
اگر مقدار را به shipped تغییر دهید و Workflow را دوباره اجرا کنید، باید مسیر مربوط به سفارش ارسالشده فعال شود.
نکته: در تنظیمات Switch، رفتار تطبیق Ruleها و خروجی پیشفرض را بررسی کنید. بسته به تنظیمات، ممکن است یک آیتم با چند Rule منطبق شود یا در صورت نداشتن تطبیق، از خروجی جایگزین استفاده کند.
مثال کاربردی: مسیریابی سفارشهای فروشگاه اینترنتی
حالا مثال قبلی را به یک سناریوی کاربردیتر تبدیل میکنیم.
فرض کنید یک فروشگاه اینترنتی با استفاده از API سفارشها را دریافت میکند. هدف ما این است که بر اساس وضعیت هر سفارش، عملیات متفاوتی انجام دهیم.
ساختار پیشنهادی Workflow:
دریافت سفارشها → بررسی وضعیت با Switch → اجرای عملیات متناسب
مسیر اول: سفارش در انتظار پرداخت
اگر مقدار وضعیت برابر pending باشد، میتوانیم یک پیام یادآوری برای مشتری آماده کنیم.
نمونه متن پیام:
«سفارش شما ثبت شده است، اما پرداخت آن هنوز تکمیل نشده است. برای نهاییکردن سفارش، لطفاً پرداخت را انجام دهید.»
در یک Workflow واقعی، میتوان این مسیر را به نود ارسال پیامک، ایمیل یا پیامرسان متصل کرد.
مسیر دوم: سفارش پرداختشده
اگر وضعیت سفارش paid باشد، میتوانیم اطلاعات سفارش را برای سیستم انبار یا بخش آمادهسازی ارسال کنیم.
برای مثال، اطلاعات سفارش را به یک API داخلی بفرستیم تا فرآیند آمادهسازی آغاز شود.
مسیر سوم: سفارش ارسالشده
اگر وضعیت سفارش shipped باشد، میتوانیم اطلاعات کد رهگیری را بررسی کنیم و پیام اطلاعرسانی برای مشتری ارسال کنیم.
مسیر چهارم: سفارش لغوشده
اگر وضعیت سفارش cancelled باشد، میتوانیم سفارش را در گزارش لغو ثبت کنیم یا یک اعلان برای تیم پشتیبانی ارسال کنیم.
در این مثال، Switch نقش یک مسیریاب منطقی را دارد؛ یعنی بهجای اینکه تمام سفارشها از یک مسیر یکسان عبور کنند، هر سفارش متناسب با وضعیت خود وارد مسیر مناسب میشود.
البته برای جلوگیری از ارسال پیام تکراری یا اجرای مجدد عملیات حساس، باید در بخشهای دیگر Workflow نیز کنترلهای لازم را پیادهسازی کنید.
استفاده از Expression در نود Switch
یکی از قابلیتهای مهم n8n، استفاده از Expression برای خواندن و پردازش دادههاست.
در مثال قبل، از عبارت زیر استفاده کردیم:
{{ $json.status }}
این عبارت مقدار فیلد status را از آیتم جاری دریافت میکند.
فرض کنید داده ورودی به این شکل باشد:
{
"customer": {
"name": "Ali",
"type": "vip"
},
"order": {
"status": "paid"
}
}
برای بررسی وضعیت سفارش میتوانیم از Expression زیر استفاده کنیم:
{{ $json.order.status }}
و برای دریافت نوع مشتری:
{{ $json.customer.type }}
در نتیجه، میتوانیم اطلاعات تودرتو را نیز مبنای مسیریابی قرار دهیم؛ البته به شرط آنکه ساختار واقعی داده ورودی با Expression انتخابشده مطابقت داشته باشد.
بررسی نوع مشتری با Switch
فرض کنید میخواهیم مشتریان را بر اساس نوع حساب دستهبندی کنیم:
regular: مشتری عادیvip: مشتری ویژهbusiness: مشتری سازمانی
کافی است فیلد customer.type را بررسی کنیم و برای هر مقدار، یک Rule جداگانه تعریف کنیم.
سپس میتوانیم برای مشتریان عادی پیام عمومی، برای مشتریان ویژه پیشنهاد اختصاصی و برای مشتریان سازمانی فرآیند پیگیری متفاوتی در نظر بگیریم.
اگر هیچ Ruleای در Switch مطابقت نداشت چه کنیم؟
در سیستمهای واقعی، همیشه نمیتوان فرض کرد که داده ورودی یکی از مقادیر مورد انتظار را دارد.
برای مثال، ممکن است وضعیت سفارش مقدار refunded داشته باشد؛ در حالی که هنوز برای این وضعیت Rule تعریف نکردهایم.
همچنین ممکن است فیلد status اصلاً در داده ورودی وجود نداشته باشد.
برای مدیریت چنین شرایطی، بهتر است رفتار خروجی پیشفرض Switch را بررسی کنید. در نسخهها و حالتهای مختلف، ممکن است گزینهای مانند مسیر خروجی اضافی یا خروجی برای موارد بدون تطبیق در دسترس باشد.
میتوانید یک مسیر جداگانه برای مقادیر ناشناخته در نظر بگیرید و دادههای آن را برای بررسی بیشتر ثبت کنید.
برای مثال، در این مسیر میتوان:
- مقدار وضعیت نامعتبر را در لاگ ذخیره کرد.
- برای تیم پشتیبانی اعلان فرستاد.
- داده را برای بررسی انسانی به یک صف کاری منتقل کرد.
- از اجرای عملیات حساس روی داده نامعتبر جلوگیری کرد.
این کار باعث میشود اضافهشدن یک وضعیت جدید در سیستم مبدأ، بدون اطلاع شما باعث گمشدن بیصدای دادهها نشود.
تفاوت حالت Rule-based و Expression در Switch
در Switch میتوان با توجه به نسخه و تنظیمات موجود، از روشهای مختلفی برای تعریف منطق مسیریابی استفاده کرد. دو رویکرد رایج عبارتاند از تعریف Ruleهای جداگانه و استفاده از Expression.
روش Rule-based
در این روش، برای هر حالت یک شرط جداگانه تعریف میکنید.
برای مثال:
- مقدار
statusبرابرpendingباشد. - مقدار
statusبرابرpaidباشد. - مقدار
statusبرابرshippedباشد.
این روش برای افراد مبتدی مناسب است؛ چون شرطها بهصورت واضح و قابلبررسی در رابط کاربری نمایش داده میشوند.
روش Expression
در این رویکرد، از Expression برای محاسبه یا تعیین نتیجه مسیریابی استفاده میکنید. جزئیات نحوه تنظیم آن به گزینههای موجود در نسخه n8n شما بستگی دارد.
این روش میتواند برای منطقهای پیچیدهتر مفید باشد، اما باید مطمئن شوید خروجی Expression با نوع و ساختار مورد انتظار Switch سازگار است.
پیشنهاد: برای شروع، از Rule-based استفاده کنید. زمانی به سراغ Expression بروید که منطق Workflow واقعاً به محاسبه یا پردازش بیشتری نیاز داشته باشد.
نکات مهم برای استفاده حرفهای از Switch در n8n
برای اینکه Workflow شما قابلاعتماد و قابلنگهداری باشد، رعایت چند نکته ضروری است.
۱. مقدار ورودی را قبل از مسیریابی بررسی کنید
قبل از Switch مطمئن شوید فیلدی که برای تصمیمگیری استفاده میکنید واقعاً وجود دارد.
برای مثال، اگر قرار است بر اساس status تصمیم بگیرید، بررسی کنید که داده ورودی این فیلد را دارد و مقدار آن قابلانتظار است.
۲. به حروف بزرگ و کوچک توجه کنید
در مقایسه رشتهها، تفاوت میان paid و Paid ممکن است باعث عدم تطبیق شود.
اگر API یا سیستم مبدأ گاهی مقادیر را با شکلهای متفاوت ارسال میکند، بهتر است پیش از مسیریابی، دادهها را به شکل استاندارد تبدیل کنید.
۳. برای مقادیر ناشناخته برنامه داشته باشید
هر زمان که یک مقدار جدید به سیستم اضافه شود، ممکن است Workflow به Rule تازهای نیاز داشته باشد.
یک مسیر برای دادههای بدون تطبیق در نظر بگیرید تا بتوانید آنها را ثبت و بررسی کنید.
۴. از پیچیدهکردن بیدلیل Workflow جلوگیری کنید
اگر تعداد مسیرها زیاد است، نام نودها را واضح انتخاب کنید؛ برای مثال:
Handle Pending OrderPrepare Paid OrderNotify Shipped OrderReview Cancelled Order
نامگذاری مناسب باعث میشود هنگام عیبیابی، سریعتر متوجه شوید هر بخش چه کاری انجام میدهد.
۵. هر مسیر را جداگانه آزمایش کنید
برای آزمایش Switch، مقدار ورودی را تغییر دهید و بررسی کنید هر وضعیت به خروجی صحیح میرسد.
همچنین حالتهای غیرمنتظره، فیلدهای خالی و مقادیر ناشناخته را آزمایش کنید. موفقیت یک حالت به معنی صحیحبودن تمام مسیرها نیست.
۶. عملیات حساس را در برابر اجرای تکراری ایمن کنید
در بعضی Workflowها، ممکن است یک سفارش چند بار دریافت شود یا اجرای Workflow دوباره تکرار شود.
اگر مسیر Switch باعث ثبت پرداخت، ارسال سفارش یا انجام عملیات مالی میشود، صرفاً به مسیریابی صحیح اکتفا نکنید. برای عملیات حساس، کنترل وضعیت، شناسه یکتا و سازوکار جلوگیری از اجرای تکراری را نیز در نظر بگیرید.
خطاهای رایج هنگام استفاده از Switch در n8n
خطای اول: هیچ مسیری اجرا نمیشود
یکی از دلایل رایج این مشکل، مطابقتنداشتن مقدار ورودی با Ruleهای تعریفشده است.
برای مثال، ممکن است مقدار واقعی paid باشد و در انتهای آن فاصله وجود داشته باشد، یا مقدار Paid دریافت شده باشد اما Rule برای paid تعریف شده باشد.
راهحل:
- خروجی نود قبلی را باز کنید.
- مقدار واقعی فیلد را بررسی کنید.
- نام فیلد و مسیر Expression را کنترل کنید.
- عملگر مقایسه و مقدار مورد انتظار را بررسی کنید.
- در صورت نیاز، داده را پیش از Switch استاندارد کنید.
خطای دوم: Expression مقدار مورد انتظار را برنمیگرداند
ممکن است Expression زیر برای داده شما درست نباشد:
{{ $json.status }}
اگر وضعیت داخل یک شیء تودرتو باشد، باید مسیر واقعی فیلد را وارد کنید. برای مثال:
{{ $json.order.status }}
همیشه ساختار خروجی نود قبلی را بررسی کنید و Expression را بر اساس همان ساختار بنویسید.
خطای سوم: چند Rule با یک آیتم مطابقت پیدا میکنند
اگر Ruleها بهگونهای تعریف شده باشند که شرایطشان با هم همپوشانی داشته باشد، ممکن است یک آیتم با چند شرط مطابقت پیدا کند.
برای مثال، یک شرط کلی و یک شرط خاص ممکن است هر دو برای یک مقدار برقرار باشند.
راهحل: شرطها را دقیق تعریف کنید و رفتار Switch را در حالتی که چند Rule منطبق میشوند بررسی کنید. اگر هدف شما انتخاب تنها یک مسیر است، تنظیمات مربوط به خروجیها و تطبیق چندگانه را متناسب با همان هدف تنظیم کنید.
خطای چهارم: داده موردنیاز در مسیر بعدی وجود ندارد
Switch معمولاً داده ورودی را به مسیر انتخابشده هدایت میکند؛ اما نودهای بعدی ممکن است فیلدها را تغییر دهند یا داده جدیدی تولید کنند.
اگر در نود بعدی به فیلدی نیاز دارید که وجود ندارد، خروجی همان نود و ساختار داده را بررسی کنید.
همچنین اگر داده را از نود دیگری میخوانید، مطمئن شوید به خروجی درست و اجرای موردنظر ارجاع دادهاید.
خطای پنجم: برای هر وضعیت یک Workflow جدا ساختهاید
ساخت Workflow مستقل برای هر حالت، همیشه اشتباه نیست؛ اما اگر همه حالتها از داده ورودی و مراحل مشترکی استفاده میکنند، این کار ممکن است نگهداری سیستم را دشوار کند.
در چنین شرایطی میتوانید از یک Workflow مشترک استفاده کنید و با Switch، مسیر هر حالت را مدیریت کنید.
چه زمانی بهجای Switch از IF استفاده کنیم؟
انتخاب بین IF و Switch به تعداد حالتها و شکل منطق شما بستگی دارد.
از IF استفاده کنید اگر:
- فقط دو نتیجه دارید.
- میخواهید یک شرط ساده را بررسی کنید.
- میخواهید مسیر True و False را جدا کنید.
از Switch استفاده کنید اگر:
- چند مقدار مشخص دارید.
- هر مقدار باید عملیات متفاوتی انجام دهد.
- میخواهید Workflow خواناتر باشد.
- تعداد حالتها بهاندازهای است که چند IF تودرتو ساختار را پیچیده میکند.
برای مثال، بررسی اینکه مبلغ سفارش بیشتر از ۵۰۰ هزار تومان است، معمولاً با IF سادهتر است. اما هدایت سفارش به مسیرهای مختلف بر اساس وضعیت آن، نمونه مناسبی برای Switch است.
پرسشهای متداول درباره Switch در n8n
نود Switch در n8n چه کاربردی دارد؟
Switch برای مسیریابی دادهها بر اساس چند شرط یا حالت استفاده میشود. با کمک آن میتوانید هر آیتم را به خروجی مناسب هدایت کنید و برای وضعیتهای مختلف، عملیات متفاوتی انجام دهید.
تفاوت اصلی IF و Switch در n8n چیست؟
IF معمولاً برای تصمیمگیری دوحالته، یعنی True و False، مناسب است. Switch برای زمانی کاربرد دارد که چند حالت و مسیر احتمالی داشته باشیم.
آیا میتوان از Switch برای دستهبندی سفارشهای فروشگاه استفاده کرد؟
بله. میتوانید فیلدی مانند status را بررسی کنید و سفارشها را بر اساس وضعیتهایی مانند pending، paid، shipped و cancelled به مسیرهای مختلف بفرستید.
اگر مقدار ورودی با هیچ Ruleای مطابقت نداشته باشد چه اتفاقی میافتد؟
رفتار دقیق به تنظیمات Switch و نسخه n8n بستگی دارد. بهتر است خروجی مربوط به موارد بدون تطبیق را بررسی کنید و برای وضعیتهای ناشناخته، مسیر مشخصی جهت ثبت یا بررسی دادهها در نظر بگیرید.
آیا Switch میتواند چند شرط را بررسی کند؟
بله. میتوانید چند Rule تعریف کنید و در صورت نیاز، برای هر Rule منطق مقایسه مناسب را تنظیم کنید. اگر شرایط پیچیدهای دارید، باید رفتار تطبیق Ruleها و خروجیها را با دقت آزمایش کنید.
آیا Switch برای ارسال پیام در تلگرام یا پیامک کاربرد دارد؟
بله. میتوانید پیام ورودی یا وضعیت یک درخواست را با Switch بررسی کنید و هر مسیر را به نود مربوط به ارسال پیام، ثبت اطلاعات یا فراخوانی API متصل کنید.
آیا Switch جایگزین کامل IF است؟
خیر. هر دو نود کاربردهای خود را دارند. برای شرطهای ساده و دوحالته، IF معمولاً واضحتر است؛ برای مسیریابی چندحالته، Switch اغلب ساختار مرتبتری ایجاد میکند.
جمعبندی
نود Switch در n8n ابزاری کاربردی برای ساخت Workflowهای چندمسیره است. با استفاده از آن میتوانید دادهها را بر اساس وضعیت سفارش، نوع مشتری، دستهبندی پیام یا هر فیلد دیگری به مسیرهای مختلف هدایت کنید.
برای استفاده مؤثر از Switch، ابتدا ساختار داده ورودی را بشناسید، Ruleهای دقیق تعریف کنید، رفتار مقادیر ناشناخته را در نظر بگیرید و هر مسیر را بهصورت جداگانه آزمایش کنید.
اگر در حال ساخت اتوماسیونهای حرفهای هستید، ترکیب Switch با نودهایی مانند Edit Fields، IF و HTTP Request به شما کمک میکند فرآیندهای پیچیده را با ساختاری منظمتر پیادهسازی کنید.
پیشنهاد برای ادامه یادگیری: در مقاله بعدی، به سراغ نود Merge در n8n میرویم تا یاد بگیریم چگونه دادهها و خروجی مسیرهای مختلف را دوباره با یکدیگر ترکیب کنیم.





