اگر کسبوکار شما با درخواستهای متنوعی از مشتریان روبهرو است و هنوز یک نفر باید دستی تصمیم بگیرد که هر تیکت را به کدام تیم بفرستد، احتمالاً با چالش مسیریابی دستی آشنا هستید. دقیقاً همینجاست که Switch Node در n8n وارد ماجرا میشود؛ نودی که مثل یک سوزن قطار عمل میکند و بسته به محتوای هر درخواست، آن را بهطور خودکار روی ریل درست میگذارد. در این مقاله قدمبهقدم میبینیم این نود چطور کار میکند، چه تفاوتی با IF Node دارد و چطور میتوان از آن برای ساخت یک سیستم توزیع درخواست واقعاً هوشمند استفاده کرد.
چرا توزیع دستی درخواستهای مشتری مشکلساز است؟
تصور کنید صبح اول وقت، صد ایمیل از مشتریان رسیده است؛ یکی میپرسد چطور اشتراک خودش را ارتقا دهد، دیگری یک مشکل فنی دارد، یک نفر دیگر درباره صورتحساب سؤال دارد و یکی هم میخواهد قراردادش را فسخ کند. اگر یک نفر بخواهد همه اینها را بخواند، دستهبندی کند و به تیم مربوطه ارجاع دهد، نهتنها وقت زیادی تلف میشود، بلکه هر روز ریسک اشتباه انسانی و فراموش شدن یک درخواست مهم هم وجود دارد. Switch Node در n8n دقیقاً همین مرحله را حذف میکند.
Switch Node چیست و چطور از IF Node متفاوت است؟
در n8n، IF Node یک سؤال بله یا خیر میپرسد و داده را بین دو مسیر True و False تقسیم میکند. اما وقتی بیش از دو حالت ممکن وجود دارد، مثلاً چهار نوع درخواست مختلف، باید چهار IF Node را پشت سر هم بچینید که این کار فرایند را ناخوانا و شکننده میکند. Switch Node آمده این مشکل را حل کند؛ شما یک مقدار مشخص را به آن میدهید و نود، بسته به اینکه آن مقدار با کدام حالت تطبیق دارد، داده را به خروجی مربوطه میفرستد.
منطق کار Switch Node: تطبیق مقدار با چند حالت
در سادهترین حالت، Switch Node یک فیلد از داده ورودی را میخواند و آن را با چند مقدار از پیش تعریفشده مقایسه میکند. هر مقدار که تطبیق پیدا کرد، داده از خروجی مربوط به آن حالت میرود. اگر هیچکدام از حالتها تطبیق نداشت، یک خروجی پیشفرض (Default) هم وجود دارد که میتوانید آن را به یک مسیر مدیریت خطا یا صف عمومی وصل کنید.
دو حالت اصلی Switch Node: Value و Expression
Switch Node دو روش برای تعریف حالتها ارائه میدهد. در حالت Value، شما مقدار ثابتی مثل «فنی»، «مالی» یا «فروش» را تعریف میکنید و نود آن را با مقدار فیلد ورودی مقایسه میکند؛ این روش برای دستهبندیهای ساده و ثابت ایدهآل است. در حالت Expression، میتوانید از عبارات پیچیدهتری استفاده کنید که خود مقدار را از داده ورودی محاسبه میکند؛ این روش برای سناریوهایی که دستهبندی به محاسبه نیاز دارد، مثل مقایسه عددی یا بررسی شامل بودن یک کلمه، مناسبتر است.
یکی از رایجترین سناریوهایی که در کنار Switch Node در n8n استفاده میشود، ذخیرهسازی و پیگیری تیکتها در یک ابزار خارجی است. وقتی Switch Node درخواست مشتری را به تیم مناسب هدایت کرد، همان لحظه میتوانید با اتصال به یک نود Airtable، آن تیکت را در یک جدول مرکزی ثبت کنید؛ با مشخصاتی مثل تیم مقصد، زمان دریافت، وضعیت و اولویت. این یعنی مدیریت تیکت با Airtable دیگر نیازی به ورود دستی اطلاعات ندارد و هر بار که یک درخواست وارد فرایند میشود، سوابق آن بهصورت خودکار در همان جدول بهروز میشود؛ دقیقاً همان چیزی که مدیران پشتیبانی برای داشتن دید کامل روی وضعیت تیکتها به آن نیاز دارند.
آناتومی یک Switch Node: قسمتهای مختلف و نقش هر کدام
پیش از اینکه مستقیم وارد مثال عملی شویم، بد نیست با ساختار داخلی این نود بیشتر آشنا شویم تا بدانیم در کجای تنظیمات چه چیزی قرار میگیرد.
فیلد Mode: انتخاب بین Rules و Expression
اولین تنظیمی که در Switch Node میبینید، فیلد Mode است. حالت Rules (که پیشفرض است) به شما اجازه میدهد چند قانون تعریف کنید؛ هر قانون یک خروجی جداگانه دارد. حالت Expression برای مواردی است که میخواهید با یک عبارت پویا، نام خروجی مقصد را مستقیماً از داده ورودی استخراج کنید؛ این حالت پیشرفتهتر است اما برای سناریوهای پیچیده انعطاف بیشتری میدهد.
خروجی Fallback یا Default چه کاری انجام میدهد؟
یکی از نکاتی که خیلی از تازهکارها در ابتدا آن را نادیده میگیرند، خروجی Default است. این خروجی برای دادههایی فعال میشود که با هیچکدام از قانونهای تعریفشده تطبیق ندارند. اگر این خروجی را به جایی وصل نکنید، آن دسته از درخواستها بدون هیچ هشداری گم میشوند. توصیه میشود همیشه این خروجی را به یک نود لاگگیری یا یک صف بررسی دستی وصل کنید تا هیچ درخواستی از چشم نیفتد.
مثال واقعی: توزیع درخواستهای مشتری بین سه تیم مختلف
حالا که با ساختار نود آشنا شدیم، یک سناریوی کاملاً واقعی را با هم طراحی میکنیم تا ببینیم Switch Node در عمل چطور کار میکند.
سناریو: ارجاع خودکار تیکتها به تیم فروش، فنی و مالی
فرض کنید درخواستهای مشتریان از طریق یک فرم دریافت میشوند و هر درخواست یک فیلد department دارد که مشتری در آن موضوع درخواستش را انتخاب کرده؛ یکی از سه مقدار «sales»، «technical» یا «billing». ما میخواهیم هر درخواست بهصورت خودکار به کانال اسلک تیم مربوطه ارسال شود و برای درخواستهای ناشناخته، یک ایمیل هشدار به مدیر فرستاده شود.
چیدمان قانونها (Rules) در Switch Node
در تنظیمات Switch Node، سه قانون اضافه میکنیم. هر قانون یک شرط دارد که میگوید «اگر مقدار فیلد department برابر با … بود، به خروجی شماره … بفرست»:
قانون اول:
فیلد: {{ $json.department }}
عملگر: equals
مقدار: sales
خروجی: output0 (تیم فروش)
قانون دوم:
فیلد: {{ $json.department }}
عملگر: equals
مقدار: technical
خروجی: output1 (تیم فنی)
قانون سوم:
فیلد: {{ $json.department }}
عملگر: equals
مقدار: billing
خروجی: output2 (تیم مالی)
خروجی پیشفرض: output3 (مدیریت / صف دستی)
بعد از این Switch Node، هر خروجی به یک نود اسلک یا ایمیل مجزا وصل میشود. از این به بعد، هر درخواست جدید بدون هیچ دخالت انسانی، بلافاصله به جای درست میرسد.
استفاده از Expression پویا برای مسیریابی هوشمندتر
گاهی دستهبندی درخواستها به این سادگی نیست که یک فیلد ثابت داشته باشید. مثلاً ممکن است موضوع درخواست در متن آزاد نوشته شده باشد و شما بخواهید بر اساس وجود یک کلمه خاص تصمیم بگیرید. در این حالت میتوانید در حالت Expression، یک شرط پیچیدهتر بنویسید:
// بررسی اینکه آیا متن پیام کلمه "invoice" یا "payment" دارد
{{ $json.message.toLowerCase().includes('invoice') ||
$json.message.toLowerCase().includes('payment')
? 'billing' : $json.department }}
این یعنی حتی اگر مشتری موضوع را اشتباه انتخاب کرده باشد اما در متن پیامش از کلمات مربوط به صورتحساب استفاده کرده باشد، سیستم آن را بهدرستی به تیم مالی هدایت میکند. این سطح از هوشمندی، دیگر فراتر از یک دستهبندی ساده است.
مقایسه Switch Node با Merge Node و IF Node در n8n
برای اینکه بدانید در هر سناریو از کدام نود استفاده کنید، جدول مقایسه زیر میتواند راهنمای خوبی باشد.
| ویژگی | IF Node | Switch Node | Merge Node |
|---|---|---|---|
| نقش اصلی | تصمیم دوحالته | مسیریابی چندحالته | ادغام چند مسیر به یک مسیر |
| تعداد خروجی | دو خروجی ثابت (True/False) | نامحدود، قابل تنظیم | یک خروجی |
| مناسب برای | شرطهای ساده بله/خیر | دستهبندی و توزیع بین تیمها | بعد از Switch یا IF برای جمعکردن مجدد |
| خروجی پیشفرض | ندارد (شاخه False نقش آن را دارد) | دارد (Default/Fallback) | ندارد |
نکات پیشرفته برای استفاده بهینه از Switch Node
وقتی کمی با Switch Node کار کردید، چند نکته پیشرفته هست که میتواند فرایندهای شما را بهطور قابلتوجهی هوشمندتر کند.
فعالسازی چند خروجی همزمان با گزینه Send to All Matching Outputs
یکی از قابلیتهایی که کمتر شناخته شده اما بسیار کاربردی است، گزینهای است که به Switch Node اجازه میدهد یک داده را بهطور همزمان به چند خروجی که شرطشان برقرار است، بفرستد. این یعنی اگر یک درخواست هم شرط تیم فنی را داشته باشد و هم به اطلاع مدیر باید برسد، نیازی نیست دو فرایند جداگانه بسازید.
ترکیب Switch Node با Wait Node برای درخواستهای تأیید دستی
در سناریوهایی که یک دسته از درخواستها نیاز به تأیید انسانی قبل از اقدام دارند، میتوانید خروجی مربوطه از Switch Node را به یک Wait Node وصل کنید. این نود، فرایند را متوقف میکند تا یک نفر ایمیل تأیید را کلیک کند یا یک وبهوک تأیید دریافت شود؛ بعد از آن، فرایند بهطور خودکار ادامه پیدا میکند.
بهترین شیوهها برای نگهداری فرایندهای مبتنی بر Switch Node
با رشد کسبوکار، احتمالاً تعداد تیمها یا دستهبندیهای درخواست هم بیشتر میشود. رعایت چند اصل ساده از همان ابتدا، نگهداری این فرایندها را در آینده راحتتر میکند.
چکلیست طراحی یک Switch Node تمیز و مقیاسپذیر
- برای هر خروجی، یک نام معنادار انتخاب کنید که هر کسی با نگاه به فرایند بفهمد کجا میرود.
- همیشه خروجی Default را به یک نود لاگگیری یا صف بررسی دستی وصل کنید.
- قبل از فعالسازی، فرایند را با نمونه داده از هر حالت ممکن تست کنید تا مطمئن شوید همه مسیرها درست کار میکنند.
- اگر مقادیر دستهبندی از یک API یا سیستم خارجی میآیند، یک نود ابتدایی برای نرمالسازی مقادیر (مثلاً تبدیل همه به حروف کوچک) اضافه کنید تا از خطاهای حساسیت به بزرگی/کوچکی حروف جلوگیری شود.
- اگر تعداد قانونها از پنج مورد بیشتر شد، بهجای افزودن مستقیم به Switch Node، بررسی کنید آیا منطق دستهبندی میتواند به یک جدول در یک پایگاه داده منتقل شود تا بدون نیاز به ویرایش فرایند، قابل بهروزرسانی باشد.
جمعبندی
Switch Node در n8n یکی از قدرتمندترین ابزارها برای ساخت سیستمهای توزیع هوشمند درخواست است. با چند تنظیم ساده، میتوانید هر درخواست مشتری را بر اساس نوع، اولویت یا هر ویژگی دیگری، بدون هیچ دخالت دستی به تیم مناسب هدایت کنید. نکته کلیدی، همیشه در نظر گرفتن خروجی Default و تست کامل هر مسیر است تا مطمئن شوید هیچ درخواستی در فرایند گم نمیشود. با همین اصول ساده، میتوانید یک سیستم پشتیبانی واقعاً خودکار و مقیاسپذیر بسازید.
سوالات متداول
۱. آیا Switch Node میتواند یک داده را همزمان به چند خروجی بفرستد؟
بله، با فعال کردن گزینه «Send to All Matching Outputs»، میتوانید یک داده را بهطور همزمان به چند خروجی که شرطشان برقرار است، ارسال کنید.
۲. اگر هیچکدام از قانونها با داده ورودی تطبیق نداشته باشد چه میشود؟
داده از خروجی Default عبور میکند. اگر این خروجی را به جایی وصل نکرده باشید، آن داده بدون هشدار از فرایند حذف میشود.
۳. چه تفاوتی بین حالت Rules و Expression در Switch Node وجود دارد؟
در حالت Rules، شما شرطهای ثابت تعریف میکنید؛ در حالت Expression، میتوانید یک عبارت پویا بنویسید که نام خروجی مقصد را از خود داده ورودی استخراج میکند.
۴. آیا Switch Node از مقایسه عددی و بررسی «بزرگتر از» هم پشتیبانی میکند؟
بله، در حالت Rules میتوانید علاوه بر مقایسه برابری، از عملگرهایی مثل بزرگتر از، کوچکتر از، و شامل شدن هم استفاده کنید.
۵. چه زمانی باید بهجای Switch Node از چند IF Node متوالی استفاده کنم؟
اگر هر شاخه تصمیمگیری شما منطق کاملاً متفاوت و پیچیدهای دارد و شرطهایشان با هم تداخل دارند، گاهی چند IF Node خوانایی بیشتری ایجاد میکند. اما اگر صرفاً یک مقدار را با چند حالت مقایسه میکنید، Switch Node همیشه انتخاب تمیزتری است.




