ساخت ربات پیشرفته تلگرام با n8n: تیکتینگ، چت زنده و پخش انب…

ساخت ربات پیشرفته تلگرام با n8n: تیکتینگ، چت زنده و پخش انب…

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

دانلود workflow

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

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

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

ربات پیشرفته تلگرام: تیکتینگ، چت زنده، مدیریت کاربر و پخش انبوه

دسته‌بندی‌ها: پشتیبانی، عملیات IT

لینک کاتالوگ Axeto: https://axeto.ai/n8n

نمای کلی گردش کار

این گردش کار پیشرفته n8n، ربات تلگرام شما را با قابلیت‌های پیچیده برای مدیریت کاربران، تیکتینگ پشتیبانی، چت زنده و پخش انبوه مجهز می‌کند. این سیستم از Redis برای ذخیره‌سازی و بازیابی کارآمد داده‌ها استفاده می‌کند و یک سیستم قوی برای تعامل با مشتری و پشتیبانی داخلی ایجاد می‌کند.

موارد استفاده کلیدی:

  • پشتیبانی خودکار تلگرام: پیاده‌سازی یک سیستم چت مبتنی بر تیکت در یک سوپرگروه تلگرام برای پشتیبانی بی‌نقص از کاربران.
  • مدیریت کارآمد داده‌های کاربر: ذخیره و دسترسی سریع به اطلاعات کاربر با استفاده از Redis.
  • پخش انبوه هدفمند: ارسال پیام به تمام کاربرانی که با ربات شما تعامل داشته‌اند، با فیلترینگ داخلی برای کاربران مسدود شده.
  • قابلیت چت زنده: ایجاد خودکار تیکت‌های پشتیبانی (تاپیک‌های انجمن) برای پیام‌های کاربر و اطمینان از ارسال پاسخ‌های تیم پشتیبانی شما به کاربران.

شکست گردش کار:

1. دریافت ورودی تلگرام: دریافت تمام به‌روزرسانی‌های ورودی از ربات تلگرام شما.

2. پردازش داده‌های کاربر: فرمت‌بندی و ذخیره اطلاعات کاربر در Redis.

3. مدیریت تیکت پشتیبانی: ایجاد و مدیریت تیکت‌های چت (تاپیک‌های انجمن) برای درخواست‌های پشتیبانی کاربر.

4. مدیریت پاسخ پشتیبانی: ارسال پاسخ‌های تیم پشتیبانی به کاربران نهایی.

5. سیستم پخش انبوه: توزیع پیام‌ها از یک کانال تلگرام مشخص به کاربران ربات شما.

6. مدیریت کاربران مسدود شده: شناسایی و فیلتر کردن کاربرانی که ربات را مسدود کرده‌اند.

7. پیکربندی و فراداده: متمرکز کردن اعتبارنامه‌های ربات، شناسه‌های گروه/کانال و ارائه راهنمایی‌های ضروری برای راه‌اندازی.

---

تجزیه و تحلیل گره (Node) دقیق

۱. دریافت ورودی تلگرام

این بخش ورودی اولیه پیام‌ها و پست‌های کانال را از ربات تلگرام شما مدیریت می‌کند.

  • Telegram-Bot (Trigger):

* نقش: نقطه ورود اصلی، دریافت به‌روزرسانی‌های از نوع "message" و "channel\_post".

* پیکربندی: نیاز به توکن ربات تلگرام شما دارد.

* خروجی: به‌روزرسانی خام JSON تلگرام.

* مشکلات احتمالی: خطاهای Webhook، توکن ربات نامعتبر، محدودیت‌های نرخ API تلگرام.

  • Bot-Config (Set):

* نقش: مقادیر پیکربندی ثابت ضروری مانند BotToken، Support_Group_ID و Broadcast_Channel_ID را ذخیره می‌کند.

* پیکربندی: توکن ربات و شناسه‌های گروه/کانال تلگرام مربوطه را به صورت دستی وارد کنید.

* خروجی: داده‌های پیکربندی را همراه با به‌روزرسانی ورودی تلگرام ارسال می‌کند.

* مشکلات احتمالی: مقادیر پیکربندی گمشده یا نادرست.

  • Format (Code - JavaScript):

* نقش: داده‌های ورودی کاربر را برای ذخیره‌سازی در Redis آماده می‌کند با فرار دادن سینتکس JSON و مسطح کردن اشیاء تودرتو.

* منطق کلیدی: از escapeRedisJsonSyntax برای مدیریت کاراکترهای خاص و پیشوند فیلدهای تودرتو برای ذخیره‌سازی تمیزتر استفاده می‌کند.

* ورودی: به‌روزرسانی خام JSON تلگرام و خروجی Bot-Config.

* خروجی: شیء کاربر بازسازی‌شده تحت کلید TG_USER_.

* مشکلات احتمالی: خطاهای سینتکس جاوا اسکریپت، ساختار داده ورودی غیرمنتظره.

  • Bot-Fields (Set):

* نقش: داده‌های کاربر را با حذف فیلدهای حساس یا غیرضروری (مانند BotToken) قبل از ذخیره‌سازی پاک می‌کند.

* پیکربندی: فیلدهای مورد نظر برای حذف را مشخص می‌کند، مانند BotToken، pairedItem_item و Support_Group_ID.

* ورودی: خروجی گره Format.

* خروجی: داده‌های کاربر پاک‌شده آماده برای پردازش بعدی.

* مشکلات احتمالی: فیلدهای مورد نظر برای حذف وجود ندارند.

  • 1st (Switch):

* نقش: گردش کار را بر اساس نوع چت هدایت می‌کند (مانند private، supergroup، channel).

* منطق: $json.chat_type یا $json.channel_post_sender_chat_type را ارزیابی می‌کند.

* خروجی‌ها:

* 1: چت خصوصی

* 2: چت سوپرگروه

* 3: پست کانال

* 0: جایگزین/هیچ‌کدام

* مشکلات احتمالی: انواع چت ناشناخته، فیلد نوع چت گمشده.

---

۲. پردازش داده‌های کاربر

این بخش بر بررسی کاربران موجود در Redis و ذخیره داده‌های کاربر جدید یا به‌روزرسانی سوابق موجود تمرکز دارد.

  • Check User in Database (Redis - Keys Operation):

* نقش: با بررسی کلید TG-USER-{{chat_id}} تعیین می‌کند که آیا داده‌های کاربر از قبل در Redis وجود دارد یا خیر.

* ورودی: chat_id کاربر از گره Bot-Fields.

* خروجی: لیستی از کلیدها در صورت وجود کاربر، یا نتیجه خالی در صورت جدید بودن کاربر.

* مشکلات احتمالی: خطاهای اتصال Redis، الگوی کلید نادرست.

  • New User ? (If):

* نقش: گردش کار را بر اساس اینکه آیا کاربر جدید است یا موجود، منشعب می‌کند.

* شرط: $json.isEmpty() === true (بررسی می‌کند که آیا پرس و جوی Redis هیچ کلیدی را برنگردانده است).

* خروجی‌ها: True (کاربر جدید)، False (کاربر موجود).

  • Save User Data (Redis - Set Operation):

* نقش: داده‌های کاربر قالب‌بندی شده را به عنوان یک هش Redis تحت کلید TG-USER-chat_id برای کاربران جدید ذخیره می‌کند.

* ورودی: داده‌های کاربر از گره Bot-Fields.

* مشکلات احتمالی: خطاهای نوشتن Redis، فرمت داده نامعتبر.

  • Update User Data (Redis - Set Operation):

* نقش: هش موجود Redis را برای کاربر با آخرین داده‌ها به‌روزرسانی می‌کند. این گره برای کاربران موجود اجرا می‌شود.

* ورودی: داده‌های کاربر از گره Bot-Fields.

* مشکلات احتمالی: خطاهای نوشتن Redis، فرمت داده نامعتبر.

  • Get User Chat Topic (Redis - Get Operation):

* نقش: شناسه موضوع تیکت چت ذخیره‌شده را از هش کاربر در Redis بازیابی می‌کند. این برای ارسال پیام‌ها در رشته‌های پشتیبانی موجود حیاتی است.

* ورودی: chat_id کاربر.

* خروجی: شناسه موضوع ذخیره‌شده.

* مشکلات احتمالی: خطاهای خواندن Redis، شناسه موضوع گمشده در Redis.

---

۳. مدیریت تیکت پشتیبانی

این بخش ایجاد و مدیریت تیکت‌های پشتیبانی (موضوعات انجمن تلگرام) برای تعاملات کاربر را مدیریت می‌کند.

  • Create Topic (Chat Ticket) (HTTP Request):

* نقش: یک موضوع انجمن جدید در گروه پشتیبانی تعیین شده شما با استفاده از متد createForumTopic API ربات تلگرام ایجاد می‌کند. نام موضوع به صورت پویا تولید می‌شود (مانند [username] - [id:chat_id]).

* ورودی‌ها: Support_Group_ID، BotToken، نام کوچک کاربر و chat_id.

* خروجی: پاسخ API تلگرام حاوی message_thread_id برای موضوع تازه ایجاد شده.

* مشکلات احتمالی: خطاهای API تلگرام (مانند مجوزهای ناکافی، شناسه گروه نامعتبر)، تداخل نام.

  • Save Topic ID (Redis - Set Hash):

* نقش: message_thread_id را در Redis تحت کلید کاربر (TG-USER-chat_id) برای ارسال پیام‌های بعدی ذخیره می‌کند.

* ورودی: message_thread_id از گره Create Topic.

* مشکلات احتمالی: خطاهای نوشتن Redis.

  • Forward New Message (HTTP Request):

* نقش: پیام ورودی کاربر را با استفاده از متد forwardMessage API ربات تلگرام به موضوع گروه پشتیبانی صحیح ارسال می‌کند.

* ورودی‌ها: Support_Group_ID، message_thread_id (بازیابی شده از Redis)، chat_id اصلی کاربر و message_id.

* مشکلات احتمالی: خطاهای API تلگرام، به ویژه "thread not found" اگر موضوع حذف یا بسته شده باشد.

  • IF No Topic Created (If):

* نقش: تشخیص می‌دهد که آیا گره Forward New Message به دلیل خطای "thread not found" ناموفق بوده است، که نیاز به ایجاد مجدد موضوع را نشان می‌دهد.

* خروجی‌ها: True (ایجاد مجدد موضوع)، False (بدون اقدام لازم).

  • ReCreate Topic (Chat Ticket) (HTTP Request):

* نقش: موضوع انجمن را با استفاده از همان قرارداد نام‌گذاری هنگام در دسترس نبودن موضوع اصلی، دوباره ایجاد می‌کند.

* خروجی: message_thread_id جدید.

  • ReSave Topic ID (Redis - Set Hash):

* نقش: پس از ایجاد مجدد موضوع، Redis را با message_thread_id جدید به‌روزرسانی می‌کند.

  • Forward New Message to the recreated topic (HTTP Request):

* نقش: پیام اصلی کاربر را به موضوع پشتیبانی تازه ایجاد شده ارسال می‌کند.

  • No Operation, do nothing (NoOp):

* نقش: یک گره نگهدارنده برای پایان دادن صحیح به شاخه‌های گردش کار که در آن‌ها اقدام بیشتری لازم نیست.

یادداشت چسبنده: این گره راهنمایی در مورد دلیل ضروری بودن ایجاد مجدد موضوع در هنگام حذف یا بسته شدن تیکت‌های پشتیبانی ارائه می‌دهد و تداوم در رشته‌های پشتیبانی را تضمین می‌کند.

---

۴. مدیریت پاسخ پشتیبانی

این بخش پاسخ‌های تیم پشتیبانی شما را در گروه پشتیبانی مدیریت کرده و آن‌ها را به کاربر اصلی بازمی‌گرداند.

  • Support Forum (If):

* نقش: پیام‌های ورودی را فیلتر می‌کند تا اطمینان حاصل شود که از شناسه گروه پشتیبانی پیکربندی شده شما نشأت می‌گیرند.

  • From Ticket (If):

* نقش: با بررسی فیلدهای message_thread_id، reply_to_message_is_topic_message و is_topic_message تأیید می‌کند که آیا یک پیام، پاسخی در یک موضوع انجمن است یا خیر.

  • Forward Support Reply To User (HTTP Request):

* نقش: پاسخ تیم پشتیبانی را به کاربر نهایی ارسال می‌کند. این گره chat_id کاربر را از نام موضوع انجمن یا فراداده پاسخ با استفاده از regex استخراج می‌کند.

* استفاده: API ربات تلگرام forwardMessage.

  • IF Topic Created (If):

* نقش: بررسی می‌کند که آیا یک موضوع انجمن جدید ایجاد شده است. این برای فعال کردن اعلان به کاربر استفاده می‌شود.

  • Send User Ticket Created Notification (Telegram):

* نقش: به کاربر از طریق تلگرام اطلاع می‌دهد که تیکت پشتیبانی او ایجاد شده است و یک نماینده پشتیبانی به زودی پاسخ خواهد داد.

  • No Operation, do nothing (NoOp):

* نقش: شاخه‌های گردش کار را که نیازی به پردازش بیشتر ندارند، پایان می‌دهد.

---

۵. سیستم پخش

این بخش امکان پخش پیام‌ها را از یک کانال تلگرام خاص به همه کاربرانی که با ربات شما تعامل داشته‌اند، فراهم می‌کند.

  • IF Verified Channel (If):

* نقش: اطمینان حاصل می‌کند که فقط پیام‌های کانال پخش تعیین شده شما فرآیند پخش را فعال می‌کنند.

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

  • Retrieve all users in DB (Redis - Keys Operation):

نقش: تمام کلیدهای کاربر را از Redis که با الگوی TG-USER- مطابقت دارند، واکشی می‌کند.

* خروجی: لیستی از تمام کلیدهای کاربر ذخیره‌شده.

  • Format Users (Code):

* نقش: شیء پاسخ Redis را به یک آرایه ساختاریافته از اشیاء کاربر تبدیل می‌کند و پردازش آن‌ها را آسان‌تر می‌سازد.

  • Filter Blocked Users (Filter):

* نقش: کاربرانی را که به عنوان Blocked=1 علامت‌گذاری شده‌اند از لیست پخش حذف می‌کند.

  • Split In Batches1 (SplitInBatches):

* نقش: لیست کاربر را به دسته‌های کوچک‌تر تقسیم می‌کند (توصیه شده: ۲۹ کاربر در هر دسته) برای رعایت محدودیت‌های نرخ API تلگرام (حداکثر ۳۰ درخواست در ثانیه).

  • Broadcast Channel Post into Users (HTTP Request):

* نقش: از متد copyMessage API ربات تلگرام برای ارسال پیام پخش به هر کاربر در دسته استفاده می‌کند.

* مدیریت خطا: حتی اگر پیامی ناموفق باشد (به عنوان مثال، به دلیل کاربر مسدود شده یا شناسه چت نامعتبر)، به کاربر بعدی ادامه می‌دهد.

  • Wait1 (Wait):

* نقش: برای رعایت بیشتر محدودیت‌های نرخ API تلگرام، تأخیری (مانند ۳ ثانیه) بین پردازش دسته‌ها ایجاد می‌کند.

  • Set Blocked Member (Redis - Set Hash):

* نقش: کاربری را که باعث شکست پیام پخش شده است، در Redis با Blocked=1 علامت‌گذاری می‌کند. این از تلاش‌های پخش بعدی به آن کاربر جلوگیری می‌کند.

* ورودی: chat_id کاربری که باعث شکست پخش شده است.

---

۶. مدیریت کاربر مسدود شده

این بخش جزئیات نحوه رسیدگی به کاربرانی را که ربات را مسدود می‌کنند یا در طول پخش خطا ایجاد می‌کنند، شرح می‌دهد.

  • Set Blocked Member (Redis - Set Hash):

* نقش: همانطور که در سیستم پخش توضیح داده شد، این گره هنگام ناموفق بودن تلاش‌های پخش، کاربران را در Redis با Blocked=1 علامت‌گذاری می‌کند.

* تأثیر: این کاربران متعاقباً توسط گره Filter Blocked Users از پیام‌های پخش بعدی حذف می‌شوند.

---

۷. پیکربندی و فراداده

این بخش تمام پارامترهای پیکربندی لازم را در خود جای داده و از طریق یادداشت‌های چسبنده راهنمایی‌های مفیدی ارائه می‌دهد.

  • Bot-Config (Set):

* نقش: BotToken، Support_Group_ID و Broadcast_Channel_ID شما را متمرکز می‌کند.

  • Sticky Note Nodes:

* نقش: این گره‌ها حاوی دستورالعمل‌های دقیق، راهنمایی راه‌اندازی و بهترین شیوه‌ها برای اجرای گردش کار هستند. آن‌ها برای درک پیکربندی و استفاده مورد نظر از هر بخش ضروری هستند.

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

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

این گردش کار n8n چه قابلیت‌هایی برای ربات تلگرام ارائه می‌دهد؟

این گردش کار قابلیت‌های پیشرفته‌ای مانند سیستم تیکتینگ پشتیبانی، چت زنده، مدیریت جامع داده‌های کاربر و امکان پخش انبوه پیام‌ها را برای ربات تلگرام شما فراهم می‌کند.

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

این گردش کار از Redis برای ذخیره‌سازی و بازیابی کارآمد داده‌های کاربر استفاده می‌کند. اطلاعات کاربر قبل از ذخیره‌سازی پردازش و پاک‌سازی می‌شوند تا از داده‌های حساس محافظت شود.

آیا این گردش کار از پخش انبوه پیام پشتیبانی می‌کند؟

بله، این گردش کار قابلیت پخش انبوه پیام‌ها را از یک کانال تلگرام مشخص به تمام کاربرانی که با ربات شما تعامل داشته‌اند، فراهم می‌کند و همچنین کاربران مسدود شده را فیلتر می‌کند.

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

برای راه‌اندازی، نیاز به پیکربندی توکن ربات تلگرام، شناسه‌های گروه پشتیبانی و کانال پخش انبوه دارید. گردش کار به طور خودکار پیام‌ها را دریافت، پردازش و مدیریت می‌کند.

workflowهای مرتبط

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