مسیریاب ایمیل هوشمند با Gmail، ChatGPT-4o و Slack

مسیریاب ایمیل هوشمند با Gmail، ChatGPT-4o و Slack

9 دقیقه مطالعه · منتشر شده ۱۴۰۵/۴/۲۶

دانلود workflow

فایل JSON آماده import در n8n — credentialها باید در n8n شما تنظیم شوند.

  1. فایل JSON را دانلود کنید.
  2. در n8n: Workflows → Import from File.
  3. Credentialهای هر node را متصل کنید.
  4. workflow را فعال کنید.

شناسه workflow: 9376 · منبع: کاتالوگ Axeto

مسیریاب ایمیل مبتنی بر هوش مصنوعی با Gmail، ChatGPT-4o و Slack

این Workflow به طور خودکار ایمیل‌های خوانده نشده Gmail را با استفاده از طبقه‌بندی هوش مصنوعی و اعلان‌های Slack مدیریت و مسیریابی می‌کند. این سیستم برای تیم‌های پشتیبانی طراحی شده است تا درخواست‌های ایمیلی را بر اساس دسته‌بندی محتوا به طور خودکار طبقه‌بندی و به کانال‌های مناسب Slack هدایت کنند. این Workflow با بررسی پایگاه داده Supabase از پردازش تکراری رشته‌های ایمیل جلوگیری می‌کند.

شما می‌توانید این Workflow و موارد دیگر را در کاتالوگ Axeto پیدا کنید: https://axeto.ai/n8n

نمای کلی Workflow

این Workflow مراحل منطقی زیر را دنبال می‌کند:

1. دریافت ورودی: شناسایی ایمیل‌های خوانده نشده جدید از Gmail.

2. حذف موارد تکراری رشته: جستجو در Supabase برای بررسی اینکه آیا رشته ایمیل قبلاً پردازش شده است یا خیر.

3. انشعاب شرطی: تعیین اینکه آیا پردازش ادامه یابد یا متوقف شود، بر اساس وجود رشته.

4. طبقه‌بندی هوش مصنوعی: استفاده از ChatGPT-4o برای طبقه‌بندی ایمیل به دسته‌بندی‌های از پیش تعریف شده.

5. مسیریابی از طریق Switch: هدایت ایمیل‌های طبقه‌بندی شده به کانال‌های مربوطه Slack.

6. اعلان Slack: ارسال پیام‌های قالب‌بندی شده به کانال‌های خاص Slack (#support یا #new-requests).

7. ثبت داده‌ها: ثبت جزئیات رشته ایمیل پردازش شده در Supabase برای مراجعه آتی.

8. پس از پردازش: علامت‌گذاری ایمیل به عنوان خوانده شده در Gmail برای جلوگیری از پردازش مجدد.

تشریح گره به گره

۱. Gmail Trigger

  • نقش: با شناسایی ایمیل‌های خوانده نشده جدید در صندوق ورودی Gmail شما، Workflow را آغاز می‌کند.
  • پیکربندی:

* هر دقیقه Gmail را بررسی می‌کند.

* فقط برای ایمیل‌های خوانده نشده فیلتر می‌کند.

  • خروجی: فراداده ایمیل، شامل From, Subject, snippet, threadId, و id را ارائه می‌دهد.
  • یادداشت چسبان: "هنگام دریافت ایمیل خوانده نشده جدید فعال می‌شود، داده‌های ایمیل را به پایین‌دست ارسال می‌کند."

۲. Get a row (Supabase)

  • نقش: با جستجو در پایگاه داده Supabase شما، بررسی می‌کند که آیا رشته ایمیل ورودی قبلاً پردازش شده است یا خیر.
  • پیکربندی:

* جدول: threads

* فیلتر: thread_id با threadId از Gmail Trigger مطابقت دارد.

  • ورودی: خروجی از گره Gmail Trigger.
  • خروجی: یک ردیف از جدول threads در صورت وجود رشته، یا نتیجه خالی در صورت جدید بودن.
  • یادداشت چسبان: "بررسی می‌کند که آیا رشته ایمیل در Supabase وجود دارد."

۳. If

  • نقش: به عنوان یک دروازه شرطی عمل می‌کند. اگر رشته ایمیل در Supabase یافت شود (به این معنی که قبلاً پردازش شده است) Workflow را متوقف می‌کند و در صورت جدید بودن رشته، اجازه ادامه را می‌دهد.
  • پیکربندی:

شرط: بررسی می‌کند که آیا thread_id از گره Get a row خالی نیست*.

  • ورودی: خروجی از گره Get a row.
  • خروجی:

* True (رشته وجود دارد): Workflow پایان می‌یابد.

* False (رشته جدید): به گره بعدی ادامه می‌دهد.

  • یادداشت چسبان: "در صورت وجود رشته متوقف می‌شود، در صورت جدید بودن ادامه می‌یابد."

۴. Message a model (OpenAI)

  • نقش: از ChatGPT-4o برای طبقه‌بندی محتوای ایمیل به دسته‌بندی‌های از پیش تعریف شده استفاده می‌کند.
  • پیکربندی:

* مدل: chatgpt-4o-latest

پیام سیستم: به هوش مصنوعی دستور می‌دهد که فقط* یک شیء JSON با فیلد category (مانند {"category":"support|new-request|enquiry|general|spam|other"}) برگرداند.

* پیام کاربر: شامل Subject و snippet ایمیل است.

* خروجی JSON: برای پاسخ‌های ساختاریافته فعال شده است.

  • ورودی: خروجی از گره If (فقط در صورتی که شرط نادرست باشد).
  • خروجی: یک شیء JSON حاوی category تعیین شده توسط هوش مصنوعی.
  • یادداشت چسبان: "ایمیل را به دسته‌بندی‌ها طبقه‌بندی می‌کند."

۵. Switch

  • نقش: ایمیل طبقه‌بندی شده را بر اساس دسته‌بندی تعیین شده توسط هوش مصنوعی به کانال مناسب Slack هدایت می‌کند.
  • پیکربندی:

* قانون ۱: اگر category برابر "support" باشد، به خروجی ۱ ارسال می‌شود.

* قانون ۲: اگر برابر "new-request" باشد، به خروجی ۲ ارسال می‌شود.

* دسته‌بندی‌های دیگر به طور ضمنی نادیده گرفته می‌شوند.

  • ورودی: خروجی از گره Message a model.
  • خروجی:

* خروجی ۱: برای دسته‌بندی "support".

* خروجی ۲: برای دسته‌بندی "new-request".

  • یادداشت چسبان: "ایمیل را بر اساس دسته‌بندی به کانال‌های Slack هدایت می‌کند."

۶. Send a message (Slack - #support)

  • نقش: یک اعلان قالب‌بندی شده به کانال Slack #support ارسال می‌کند.
  • پیکربندی:

* شناسه کانال: C09EVCZR4P6 (یا شناسه کانال #support خاص شما).

* پیام: شامل فرستنده ایمیل، موضوع و خلاصه.

  • ورودی: خروجی از گره Switch (برای دسته‌بندی "support").
  • خروجی: تأیید ارسال پیام.
  • یادداشت چسبان: "پیام را به کانال Slack #support ارسال می‌کند."

۷. Send a message 2 (Slack - #new-requests)

  • نقش: یک اعلان قالب‌بندی شده به کانال Slack #new-requests ارسال می‌کند.
  • پیکربندی:

* شناسه کانال: C09EQ9Q1Z3R (یا شناسه کانال #new-requests خاص شما).

* پیام: شامل فرستنده ایمیل، موضوع و خلاصه.

  • ورودی: خروجی از گره Switch (برای دسته‌بندی "new-request").
  • خروجی: تأیید ارسال پیام.
  • یادداشت چسبان: "پیام را به کانال Slack #new-requests ارسال می‌کند."

۸. Create a row (Supabase)

  • نقش: رشته ایمیل پردازش شده را در جدول threads Supabase ثبت می‌کند تا از تکرار در آینده جلوگیری کند.
  • پیکربندی:

* جدول: threads

* فیلدها:

* thread_id: از ایمیل اصلی.

* first_message_id: از ایمیل اصلی.

* from_addr: از ایمیل اصلی.

* subject: از ایمیل اصلی.

  • ورودی: خروجی از هر یک از گره‌های Slack Send a message.
  • خروجی: یک ردیف جدید در جدول threads.
  • یادداشت چسبان: "رکورد را برای حذف موارد تکراری اضافه می‌کند."

۹. Mark a message as read (Gmail)

  • نقش: ایمیل پردازش شده را در Gmail به عنوان خوانده شده علامت‌گذاری می‌کند و اطمینان می‌دهد که دوباره توسط Trigger دریافت نخواهد شد.
  • پیکربندی:

* شناسه پیام: id از ایمیل اصلی.

  • ورودی: خروجی از گره Create a row (Supabase).
  • خروجی: ندارد (پایان Workflow).
  • یادداشت چسبان: "پس از پردازش، ایمیل را به عنوان خوانده شده علامت‌گذاری می‌کند."

---

جدول خلاصه

نام گرهنوع گرهنقش عملکردیگره(های) ورودیگره(های) خروجییادداشت چسبان
Gmail Triggern8n-nodes-base.gmailTriggerدریافت ورودی ایمیل‌های خوانده نشدهنداردGet a rowهنگام دریافت ایمیل خوانده نشده فعال می‌شود، داده‌های ایمیل را ارسال می‌کند
Get a rown8n-nodes-base.supabaseبررسی وجود رشتهGmail TriggerIfرشته ایمیل موجود در Supabase را بررسی می‌کند
Ifn8n-nodes-base.ifانشعاب شرطی برای توقف/ادامهGet a rowMessage a model (false)در صورت وجود رشته متوقف می‌شود، در صورت جدید بودن ادامه می‌یابد
Message a model@n8n/n8n-nodes-langchain.openAiطبقه‌بندی هوش مصنوعی ایمیلIf (false)Switchایمیل را به دسته‌بندی‌ها طبقه‌بندی می‌کند
Switchn8n-nodes-base.switchمسیریابی ایمیل بر اساس دسته‌بندیMessage a modelSend a message, Send a message 2ایمیل را بر اساس دسته‌بندی به کانال‌های Slack هدایت می‌کند
Send a messagen8n-nodes-base.slackارسال به کانال Slack #supportSwitch (support)Create a rowپیام را به کانال Slack #support ارسال می‌کند
Send a message 2n8n-nodes-base.slackارسال به کانال Slack #new-requestsSwitch (new-request)Create a rowپیام را به کانال Slack #new-requests ارسال می‌کند
Create a rown8n-nodes-base.supabaseثبت اطلاعات رشته در SupabaseSend a message, Send a message 2Mark a message as readرکورد را برای حذف موارد تکراری اضافه می‌کند
Mark a message as readn8n-nodes-base.gmailعلامت‌گذاری ایمیل به عنوان خوانده شده در GmailCreate a rowنداردپس از پردازش، ایمیل را به عنوان خوانده شده علامت‌گذاری می‌کند

بازتولید Workflow

۱. افزودن گره Gmail Trigger:

* نوع: n8n-nodes-base.gmailTrigger

* پیکربندی برای فیلتر کردن فقط ایمیل‌های خوانده نشده.

* تنظیم فاصله زمانی بررسی روی ۱ دقیقه.

* حساب Gmail خود را با مجوزهای لازم وصل کنید.

۲. افزودن گره Get a row (Supabase):

* نوع: n8n-nodes-base.supabase

* عملیات: Get

* جدول: threads

* شرط فیلتر: thread_id برابر با {{$json["threadId"]}} (از Gmail Trigger).

* اعتبارنامه Supabase خود (کلید API و URL) را وصل کنید.

۳. افزودن گره If:

* نوع: n8n-nodes-base.if

* شرط: بررسی کنید که آیا {{$json["thread_id"]}} خالی نیست (رشته خالی نیست).

* ورودی: خروجی از Get a row.

* شاخه True: خروجی ندارد (Workflow را متوقف می‌کند).

* شاخه False: به گره بعدی ادامه می‌دهد.

۴. افزودن گره Message a model (OpenAI):

* نوع: @n8n/n8n-nodes-langchain.openAi

* مدل: chatgpt-4o-latest

* پیام‌ها:

* سیستم: "You are an email triage classifier. Return ONLY a JSON object: {\"category\":\"support|new-request|enquiry|general|spam|other\"}"

* کاربر: ترکیب موضوع و خلاصه از Gmail Trigger:

```

Subject: {{$node["Gmail Trigger"].json["Subject"]}}

Content: {{$node["Gmail Trigger"].json["snippet"]}}

```

* خروجی JSON را فعال کنید.

* اعتبارنامه کلید API OpenAI خود را وصل کنید.

۵. افزودن گره Switch:

* نوع: n8n-nodes-base.switch

* قوانین:

* مورد ۱: اگر {{$json["message"]["content"]["category"]}} برابر "support" باشد → خروجی ۱.

* مورد ۲: اگر برابر "new-request" باشد → خروجی ۲.

* ورودی: خروجی از Message a model.

۶. افزودن گره Send a message (Slack):

* نوع: n8n-nodes-base.slack

* برای کانال #support پیکربندی کنید (مانند C09EVCZR4P6).

* محتوای پیام را برای شامل کردن فرستنده، موضوع و خلاصه تنظیم کنید.

* اعتبارنامه OAuth2 Slack خود را وصل کنید.

* ورودی: خروجی ۱ از گره Switch.

۷. افزودن گره Send a message 2 (Slack):

* نوع: n8n-nodes-base.slack

* برای کانال #new-requests پیکربندی کنید (مانند C09EQ9Q1Z3R).

* محتوای پیام را به طور مشابه تنظیم کنید.

* اعتبارنامه OAuth2 Slack خود را وصل کنید.

* ورودی: خروجی ۲ از گره Switch.

۸. افزودن گره Create a row (Supabase):

* نوع: n8n-nodes-base.supabase

* عملیات: Create

* جدول: threads

* فیلدها را نگاشت کنید: thread_id, first_message_id, from_addr, subject با استفاده از داده‌های Gmail Trigger.

* اعتبارنامه Supabase خود را وصل کنید.

* ورودی: خروجی از هر یک از گره‌های Slack Send a message.

۹. افزودن گره Mark a message as read (Gmail):

* نوع: n8n-nodes-base.gmail

* عملیات: Mark as read

* شناسه پیام: {{$json["id"]}} از Gmail Trigger.

* اعتبارنامه Gmail خود را وصل کنید.

* ورودی: خروجی از Create a row.

Nodeهای استفاده‌شده

سوالات متداول

این Workflow چگونه به مدیریت ایمیل‌ها کمک می‌کند؟

این Workflow ایمیل‌های خوانده نشده Gmail را دریافت کرده، با استفاده از ChatGPT-4o آن‌ها را دسته‌بندی می‌کند و سپس به کانال‌های مشخصی در Slack هدایت می‌کند تا تیم پشتیبانی بتواند به سرعت به آن‌ها رسیدگی کند.

چگونه از پردازش تکراری ایمیل‌ها جلوگیری می‌شود؟

Workflow با بررسی پایگاه داده Supabase، قبل از پردازش هر ایمیل، بررسی می‌کند که آیا رشته (thread) آن قبلاً پردازش شده است یا خیر. در صورت پردازش قبلی، از پردازش مجدد جلوگیری می‌شود.

چه ابزارهایی در این Workflow استفاده شده‌اند؟

این Workflow از Gmail برای دریافت ایمیل، ChatGPT-4o برای طبقه‌بندی محتوا با هوش مصنوعی، Slack برای ارسال اعلان‌ها و Supabase برای مدیریت داده‌ها و جلوگیری از تکرار استفاده می‌کند.

workflowهای مرتبط

این workflow در کاتالوگ Axeto.ai بایگانی شده است. لایسنس اصلی متعلق به سازنده workflow است.