
ساخت ربات پیشرفته تلگرام با n8n: تیکتینگ، چت زنده و پخش انب…
10 دقیقه مطالعه · منتشر شده ۱۴۰۵/۴/۲۸
دانلود workflow
فایل JSON آماده import در n8n — credentialها باید در n8n شما تنظیم شوند.
- فایل JSON را دانلود کنید.
- در n8n: Workflows → Import from File.
- Credentialهای هر node را متصل کنید.
- 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های مرتبط
- اتوماسیون خلاصهسازی جلسات با Google Drive و OpenAIAI
- ممیزی خودکار مجوزهای فایل Google Drive برای امنیتIT Ops
- اختصاص خودکار کاربران Zammad به سازمانها بر اساس دامنه ایمیلSupport
- گردش کار n8n: ارجاع پشتیبانی هوش مصنوعی به انسانSupport
- تحلیل هوشمند دادههای Google Sheets با عامل AIEngineering
- تحلیل خودکار بازخورد مشتری با GPT-4o Mini و HubSpotSales
