نود On Chat Message در N8N
نود On Chat Message یک تریگر (Trigger) کاربردی در n8n است که به محض دریافت پیام جدید در یک چت (Chat) داخل محیط n8n، ورکفلو را اجرا میکند. اگر هدف شما ساخت بات ساده، دریافت درخواست کاربر، راهاندازی سیستم پشتیبانی، یا شروع خودکار یک فرآیند با یک پیام متنی باشد، این نود یکی از سریعترین و تمیزترین نقطههای شروع است.
معرفی نود در N8N
نود On Chat Message برای سناریوهایی طراحی شده که میخواهید با «رسیدن یک پیام» جریان کار آغاز شود. این پیام میتواند سؤال کاربر، یک دستور مثل /start، یا حتی یک متن ساده برای ثبت و پردازش باشد.
- کارکرد اصلی: شروع ورکفلو هنگام دریافت پیام چت
- دستهبندی نود: Trigger
- اهمیت در ورکفلوها: این نود ورودی تعاملی (Interactive) فراهم میکند؛ یعنی کاربر با پیام، فرآیند را فعال میکند و شما میتوانید پاسخ بسازید، داده ذخیره کنید، یا به سرویسهای دیگر متصل شوید.
موارد استفاده
۱) ساخت بات پرسش و پاسخ داخلی
کاربر در Chat پیام میدهد: «وضعیت سفارش 12345». شما با استفاده از نودهای دیگر (مثل HTTP Request یا Database) وضعیت را میگیرید و پاسخ تولید میکنید.
۲) ثبت درخواست پشتیبانی و تیکت
هر پیام جدید را به یک تیکت تبدیل کنید: متن پیام، نام کاربر، زمان، و یک شناسه یکتا ذخیره شود و به تیم پشتیبانی اطلاع داده شود.
۳) اجرای دستورات متنی (Command-based)
پیامهایی مثل /help، /report، /reset را تشخیص دهید و برای هر کدام مسیر جدا بسازید. این کار با IF و Switch بسیار رایج است.
۴) فرمسازی چتمحور (Chat Form)
به ترتیب از کاربر نام، ایمیل، موضوع را میپرسید و پاسخها را ذخیره میکنید. این سناریو معمولاً با Data Store یا یک دیتابیس و یک منطق مرحلهای انجام میشود.
۵) ترکیب با نودهای دیگر برای ورکفلوهای عملی
- IF / Switch: تشخیص نوع پیام (دستور، سؤال، عدد، لینک)
- Set: ساخت فیلدهای استاندارد (مثل normalizedText یا ticketTitle)
- Code: پاکسازی متن، Regex، استخراج شماره سفارش
- HTTP Request: اتصال به CRM/Helpdesk/ERP
- Google Sheets / Notion / Airtable: ثبت پیامها و وضعیت رسیدگی
- AI (مثل OpenAI Chat): تولید پاسخ هوشمند یا دستهبندی پیام
پارامترها و تنظیمات
از آنجا که On Chat Message یک تریگر است، تنظیمات آن معمولاً سادهتر از نودهای اکشن است. با این حال، بسته به نسخه n8n و نوع Chat داخلی، ممکن است برخی فیلدها متفاوت نمایش داده شوند. در اکثر سناریوها، همین تریگر با تنظیمات پیشفرض قابل استفاده است و تمرکز اصلی روی داده خروجی و مسیرهای بعدی ورکفلو خواهد بود.
فهرست فیلدها و پارامترهای رایج
- Listen for (Chat Messages)
نوع داده: انتخابی (Option)
کاربرد: مشخص میکند رویداد شنود شده «پیام چت» باشد.
مثال عملی: وقتی کاربر پیام میفرستد، ورکفلو اجرا شود.
- Chat / Channel (در صورت وجود)
نوع داده: انتخابی / رشته
کاربرد: محدود کردن تریگر به یک چت/کانال مشخص (اگر در محیط شما چنین مفهومی فعال باشد).
مثال عملی: فقط پیامهای کانال «support» باعث اجرای ورکفلو شوند.
- Additional Options (در صورت وجود)
نوع داده: مجموعه گزینهها
کاربرد: در برخی نسخهها گزینههایی مثل دریافت متادیتا، یا رفتارهای تکمیلی ارائه میشود.
مثال عملی: دریافت اطلاعات تکمیلی کاربر یا پیام برای لاگ و تحلیل.
نکات مهم هنگام پیکربندی
- جریان از پیام شروع میشود: به جای تمرکز روی تنظیمات پیچیده، روی استانداردسازی خروجی در نودهای بعدی (Set/Code) تمرکز کنید.
- تشخیص پیامهای تکراری: اگر قرار است از پیام برای عملیات حساس (مثل پرداخت/ثبت سفارش) استفاده کنید، یک مکانیزم جلوگیری از تکرار بسازید (مثلاً ذخیره messageId در Data Store و بررسی).
- مسیرهای چندگانه: برای پیامهای مختلف مسیرهای جدا تعریف کنید (Switch بر اساس متن یا الگو).
ورودیها و خروجیها
ورودیها (Input)
این نود تریگر است و ورودی از نود دیگری دریافت نمیکند. رویداد دریافت پیام نقش ورودی را دارد.
خروجیها (Output)
خروجی نود معمولاً شامل اطلاعات پیام و فرستنده است. ساختار دقیق ممکن است با نسخه n8n متفاوت باشد، اما معمولاً دادههایی مانند متن پیام، شناسه پیام، زمان، و اطلاعات کاربر را خواهید داشت.
نمونه ساختار JSON خروجی
نمونه زیر یک الگوی رایج از خروجی این تریگر را نشان میدهد (فیلدها ممکن است در محیط شما کمی متفاوت باشند):
{ "message": { "id": "msg_01HXYZ...", "text": "سلام، وضعیت سفارش 12345 چیه؟", "timestamp": "2026-02-12T10:15:30.000Z" }, "chat": { "id": "chat_support", "name": "Support" }, "sender": { "id": "user_1001", "name": "Ali", "username": "ali_test" }}
مثال کاربردی روی خروجی
- استخراج متن پیام:
{{$json.message.text}} - شناسه فرستنده:
{{$json.sender.id}} - زمان پیام:
{{$json.message.timestamp}}
نکات پیشرفته و ترفندها
۱) نرمالسازی متن قبل از تصمیمگیری
قبل از IF/Switch، متن را یکدست کنید: حذف فاصلههای اضافی، تبدیل حروف، و lower-case. این کار خطاهای مسیرگذاری را کم میکند.
- ترکیب پیشنهادی: On Chat Message → Set (ساخت normalizedText) → Switch
۲) تشخیص دستورها با Regex
برای پیامهایی مثل /order 12345 با Code یا IF مبتنی بر Regex شماره را استخراج کنید و به مرحله بعد بدهید.
۳) ساخت سیستم چندمرحلهای (State Machine) با Data Store
اگر میخواهید مکالمه مرحلهای باشد (مثلاً مرحله ۱: دریافت ایمیل، مرحله ۲: دریافت موضوع)، وضعیت هر کاربر را ذخیره کنید:
- کلید: sender.id
- مقدار: مرحله فعلی + دادههای جمعآوریشده
۴) ارسال پاسخهای هوشمند با AI و کنترل هزینه
اگر از نودهای AI استفاده میکنید، قبل از ارسال متن به AI پیام را دستهبندی کنید (مثلاً اگر پیام کوتاه و دستور است، اصلاً به AI نفرستید). این کار هزینه و زمان پاسخ را کاهش میدهد.
۵) لاگگذاری استاندارد برای عیبیابی
خروجی On Chat Message را در همان ابتدای مسیر در یک دیتابیس/Sheet ذخیره کنید تا هنگام خطا بتوانید ریشه مشکل را پیدا کنید.
محدودیتها و خطاها
محدودیتها
- وابستگی به محیط چت: این نود برای «چت داخلی/تعامل چتمحور» طراحی شده و جایگزین تریگرهای پیامرسانهای بیرونی (مثل Telegram Trigger) نیست.
- ساختار داده متغیر: ممکن است نام فیلدها (مثل message.text) در نسخههای مختلف یا تنظیمات متفاوت باشد؛ همیشه یک بار خروجی را در Executions بررسی کنید.
- عدم مدیریت مکالمه به صورت پیشفرض: خود نود وضعیت مکالمه را نگه نمیدارد؛ اگر مکالمه چندمرحلهای میخواهید باید state را ذخیره کنید.
خطاهای رایج و راهحلها
- مشکل: مسیر IF/Switch همیشه false میشود
علت رایج: متن شامل فاصله، کاراکترهای نامرئی، یا تفاوت حروف است
راهحل: قبل از شرطها یک Set/Code برای نرمالسازی متن قرار دهید و روی normalizedText شرط بگذارید
- مشکل: فیلد موردنظر در Expression پیدا نمیشود
علت رایج: ساختار خروجی با چیزی که تصور میکردید فرق دارد
راهحل: در بخش Executions خروجی واقعی را ببینید و مسیر صحیح JSON را استفاده کنید
- مشکل: اجرای تکراری برای یک پیام
علت رایج: ارسال چندباره پیام یا رفرش/تکرار رویداد
راهحل: message.id را در Data Store ذخیره و قبل از پردازش بررسی کنید که قبلاً رسیدگی نشده باشد
ایده ها
- بات ثبت هزینه: کاربر پیام میدهد «expense 250000 taxi» و شما در Google Sheets ثبت میکنید.
- بات گزارش روزانه: هر پیام کاربر یک گزارش کوتاه است و در Notion صفحه روزانه ایجاد میشود.
- بات پیگیری سفارش: شماره سفارش را از متن استخراج میکنید، از API وضعیت را میگیرید و پاسخ آماده برمیگردانید.
- سیستم جمعآوری لید: کاربر پیام میدهد، اطلاعات مرحلهای گرفته میشود و به CRM ارسال میگردد.
- داشبورد کیفیت پشتیبانی: همه پیامها ذخیره و دستهبندی میشوند (مثلاً شکایت/سؤال/پیشنهاد) و آمار هفتگی تولید میشود.
