اگر از تلگرام برای ارتباط با مشتریان، دریافت درخواستها یا اطلاعرسانی استفاده میکنید، احتمالاً دوست دارید بخشی از پیامها بدون دخالت دستی پاسخ داده شوند. برای مثال، وقتی کاربر به ربات شما پیام میدهد، ربات میتواند دریافت پیام را تأیید کند یا بر اساس نوع پیام، پاسخ مناسبی ارسال کند.
با استفاده از n8n میتوان این فرایند را بدون نوشتن یک برنامه کامل از ابتدا پیادهسازی کرد. کافی است پیام ورودی تلگرام را دریافت کنیم، در صورت نیاز آن را بررسی کنیم و سپس پاسخ را از طریق همان ربات ارسال کنیم.
در این آموزش یک ربات پاسخگوی ساده میسازیم که متن پیام کاربر را دریافت میکند و پاسخ مناسبی به همان گفتوگو میفرستد. سپس روش توسعه آن برای پاسخگویی شرطی و کاربردهای تجاری را بررسی میکنیم.
پاسخ خودکار تلگرام با n8n چگونه کار میکند؟
برای ساخت ربات پاسخگو به دو بخش اصلی نیاز داریم:
- Telegram Trigger: پیام ورودی را دریافت میکند و اجرای Workflow را آغاز میکند.
- Telegram: پیام پاسخ را برای کاربر ارسال میکند.
ساختار ساده Workflow به این شکل است:
کاربر در تلگرام پیام میفرستد
|
v
Telegram Trigger
|
v
بررسی متن پیام
|
v
Telegram: Send Message
|
v
پاسخ برای کاربر
برای مثال، اگر کاربر پیام «سلام» را ارسال کند، ربات میتواند پاسخ «سلام! پیام شما دریافت شد.» را بفرستد.
نکته مهم این است که دریافت پیام و ارسال پاسخ دو عملیات جداگانه هستند. Telegram Trigger فقط رویداد ورودی را دریافت میکند؛ برای پاسخ دادن باید نود ارسال پیام را نیز به Workflow اضافه کنیم.
پیشنیازهای ساخت ربات پاسخگو
قبل از شروع، موارد زیر را آماده کنید:
- یک ربات تلگرام ساختهشده از طریق BotFather
- توکن معتبر ربات
- یک نمونه n8n در حال اجرا
- Credential تلگرام در n8n
- دسترسی مناسب برای دریافت رویدادهای تلگرام
اگر هنوز ربات خود را نساختهاید، ابتدا مقاله «آموزش ساخت ربات تلگرام با n8n» را مطالعه کنید. اگر میخواهید با ساختار پیامهای دریافتی آشنا شوید، مقاله «آموزش دریافت پیام تلگرام در n8n» نیز میتواند مفید باشد.
مرحله اول: ساخت Workflow و دریافت پیام
وارد پنل n8n شوید و یک Workflow جدید ایجاد کنید. برای مثال، نام آن را به شکل زیر قرار دهید:
Telegram Auto Reply
سپس مراحل زیر را انجام دهید.
۱. اضافه کردن Telegram Trigger
روی افزودن نود کلیک کنید و Telegram Trigger را جستوجو کنید.
نود را به Workflow اضافه کنید و Credential ربات خود را انتخاب کنید. در قسمت رویدادها، گزینه مربوط به دریافت پیام، معمولاً با نام Message، را انتخاب کنید.
این نود پیامهای ورودی را دریافت میکند و اطلاعات آنها را در اختیار Workflow قرار میدهد.
۲. آزمایش دریافت پیام
در حالت تست، گزینهای مانند Listen for test event یا گزینه تست نود را انتخاب کنید. سپس تلگرام را باز کنید و به ربات خود پیام بفرستید:
سلام
اگر اتصال درست باشد، خروجی پیام در n8n نمایش داده میشود.
ساختار خروجی را بررسی کنید. در یک پیام متنی معمولی، مسیر متن پیام ممکن است به شکل زیر باشد:
message.text
شناسه گفتوگو نیز معمولاً در مسیر زیر قرار دارد:
message.chat.id
همیشه خروجی واقعی نود خود را بررسی کنید؛ زیرا ساختار داده میتواند با نوع رویداد تفاوت داشته باشد.
مرحله دوم: اضافه کردن نود ارسال پیام تلگرام
حالا باید پاسخ ربات را ارسال کنیم.
۱. یک نود جدید از نوع Telegram به Workflow اضافه کنید.
۲. Credential مربوط به همان ربات را انتخاب کنید.
۳. در بخش Resource و Operation، گزینههای مربوط به پیام و ارسال پیام را انتخاب کنید. در بسیاری از نسخهها این تنظیمات با نامهایی مانند Message و Send Message نمایش داده میشوند.
۴. نود ارسال پیام را به خروجی Telegram Trigger متصل کنید.
۵. فیلدهای مقصد و متن پیام را تنظیم کنید.
در این مرحله، مهمترین تنظیم، تعیین شناسه گفتوگویی است که باید پاسخ را دریافت کند.
تنظیم Chat ID
در فیلد Chat ID، حالت Expression را فعال کنید و مقدار زیر را وارد کنید:
{{ $json.message.chat.id }}
این Expression شناسه گفتوگو را از خروجی Telegram Trigger میخواند.
با استفاده از شناسه گفتوگو، پاسخ برای همان گفتوگویی ارسال میشود که پیام ورودی از آن دریافت شده است. اگر ساختار خروجی شما متفاوت است، مسیر را متناسب با داده واقعی تغییر دهید.
تنظیم متن پاسخ
در فیلد Text، یک پیام ثابت وارد کنید؛ برای مثال:
سلام! پیام شما دریافت شد. بهزودی پاسخگوی شما خواهیم بود.
در این حالت، ربات برای هر پیام ورودی که به این Workflow برسد، همین متن را ارسال میکند.
مرحله سوم: نمایش متن پیام کاربر در پاسخ
اگر بخواهید ربات علاوه بر تأیید دریافت پیام، متن ارسالشده توسط کاربر را نیز در پاسخ نمایش دهد، میتوانید از Expression استفاده کنید.
برای مثال، متن زیر را در فیلد Text قرار دهید:
{{ 'پیام شما دریافت شد: ' + ($json.message.text || '') }}
اگر کاربر پیام «سلام» را بفرستد، پاسخ تقریباً به این شکل خواهد بود:
پیام شما دریافت شد: سلام
این روش برای آزمایش و ساخت نمونه اولیه مناسب است؛ اما در یک ربات واقعی، بهتر است بهجای بازگرداندن تمام متن کاربر، پاسخ متناسب با نوع درخواست طراحی شود.
همچنین اگر کاربر عکس، فایل یا پیام غیرمتنی ارسال کند، ممکن است فیلد message.text وجود نداشته باشد. به همین دلیل در مثال بالا از مقدار جایگزین خالی استفاده شده است.
مرحله چهارم: آزمایش پاسخ خودکار
پس از تنظیم نودها، Workflow را در حالت تست اجرا کنید.
پیام زیر را برای ربات بفرستید:
سلام
اگر تنظیمات صحیح باشد، باید پیام پاسخ در همان گفتوگو دریافت شود.
اگر از Expression استفاده کرده باشید، خروجی ممکن است به شکل زیر باشد:
پیام شما دریافت شد: سلام
در صورت موفقیت، Workflow را ذخیره کنید و برای استفاده عملیاتی، آن را فعال کنید.
توجه: اجرای تست و اجرای دائمی یکسان نیستند. برای دریافت مداوم پیامها، Workflow باید فعال باشد و تنظیمات Webhook، آدرس عمومی n8n و HTTPS نیز صحیح باشند.
مرحله پنجم: ساخت پاسخهای متفاوت برای پیامهای مختلف
پاسخ ثابت برای شروع مناسب است، اما در بسیاری از کاربردها میخواهیم ربات بر اساس متن پیام، پاسخ متفاوتی ارسال کند.
برای این کار میتوانیم نود IF را بین Telegram Trigger و نود ارسال پیام قرار دهیم.
برای مثال، فرض کنید میخواهیم اگر کاربر «سلام» فرستاد، پاسخ خوشامدگویی دریافت کند و در سایر موارد پیام عمومی نمایش داده شود.
ساختار Workflow:
Telegram Trigger
|
v
IF
/ \
/ \
بله خیر
| |
v v
پاسخ سلام پاسخ عمومی
تنظیم شرط IF
نود IF را اضافه کنید و آن را به Telegram Trigger متصل کنید.
در شرط، مقدار متن پیام را بررسی کنید. اگر خروجی شما شامل message.text است، میتوانید از Expression زیر استفاده کنید:
{{ $json.message.text }}
سپس شرط را طوری تنظیم کنید که بررسی کند آیا متن پیام برابر با سلام است یا خیر.
در خروجی True نود IF، یک نود Telegram برای ارسال پاسخ خوشامدگویی قرار دهید:
سلام! خوش آمدید. چطور میتوانم کمکتان کنم؟
در خروجی False، نود دیگری برای پاسخ عمومی قرار دهید:
پیام شما دریافت شد. لطفاً درخواست خود را دقیقتر توضیح دهید.
به این ترتیب، پاسخ ربات بر اساس یک شرط ساده تغییر میکند.
نکته درباره حروف فارسی
در پیامهای فارسی، ممکن است کاربران شکلهای متفاوتی از یک کلمه را بنویسند؛ مثلاً با فاصله، نیمفاصله یا علائم نگارشی متفاوت.
بنابراین شرط برابری دقیق برای یک ربات واقعی همیشه کافی نیست. در مراحل پیشرفتهتر میتوان متن را قبل از بررسی نرمالسازی کرد یا از چند شرط برای تشخیص عبارتهای مختلف استفاده کرد.
مرحله ششم: فعال کردن پاسخ خودکار در محیط واقعی
وقتی Workflow در حالت تست درست کار کرد، آن را ذخیره و فعال کنید.
برای عملکرد صحیح در محیط واقعی، موارد زیر را بررسی کنید:
- Workflow فعال باشد.
- Credential تلگرام معتبر باشد.
- نود ارسال پیام به Credential صحیح متصل باشد.
- Chat ID از داده ورودی استخراج شود.
- تنظیمات دامنه عمومی و HTTPS در n8n صحیح باشند.
- ربات و Webhook آن در Workflowهای دیگر بهصورت متداخل استفاده نشده باشند.
اگر پیام ورودی دریافت میشود اما پاسخ ارسال نمیشود، ابتدا اجرای Workflow را باز کنید و خطای نود Telegram را بررسی کنید. این کار مشخص میکند مشکل از دریافت پیام است یا از مرحله ارسال پاسخ.
خطاهای رایج در ساخت ربات پاسخگوی تلگرام
۱. پیام دریافت میشود اما پاسخ ارسال نمیشود
در این وضعیت، ابتدا بررسی کنید که نود Telegram برای ارسال پیام به Workflow متصل باشد و اجرای آن انجام شود.
سپس موارد زیر را بررسی کنید:
- Credential صحیح انتخاب شده باشد.
- فیلد Chat ID مقدار معتبر داشته باشد.
- فیلد Text خالی نباشد.
- خطایی در خروجی نود Telegram وجود نداشته باشد.
۲. خطای Chat Not Found
این خطا میتواند به دلیل شناسه مقصد اشتباه یا دسترسی نامناسب ربات به گفتوگو رخ دهد.
برای پاسخ به پیام خصوصی، معمولاً باید شناسه گفتوگو را از همان پیام ورودی دریافت کنید. همچنین کاربر باید امکان شروع گفتوگو با ربات را داشته باشد.
۳. ربات در حالت تست کار میکند اما در حالت عملیاتی نه
در این حالت، فعال بودن Workflow و تنظیمات Webhook را بررسی کنید. آدرس عمومی n8n باید صحیح باشد و از اینترنت دسترسی داشته باشد.
۴. پاسخ برای هر نوع پیام درست کار نمیکند
اگر Workflow به فیلد message.text وابسته باشد، پیامهای عکس، فایل یا رسانه ممکن است رفتار متفاوتی داشته باشند.
برای این موارد، وجود فیلد متن را بررسی کنید و مسیرهای جداگانهای برای پیامهای متنی و غیرمتنی در نظر بگیرید.
۵. ربات به پیام خودش یا رویدادهای ناخواسته واکنش نشان میدهد
Workflow را فقط برای رویدادهای موردنیاز طراحی کنید و در صورت نیاز، نوع پیام و اطلاعات فرستنده را بررسی کنید. همچنین از ایجاد حلقهای که در آن هر پیام خروجی باعث شروع دوباره فرایند ارسال پیام شود، جلوگیری کنید.
نکات مهم برای ساخت ربات پاسخگوی حرفهای
یک پاسخگوی ساده برای شروع مناسب است، اما اگر قصد دارید آن را در کسبوکار استفاده کنید، بهتر است از ابتدا چند نکته را در نظر بگیرید.
جلوگیری از ارسال پاسخهای تکراری
اگر یک رویداد دوباره پردازش شود یا Workflow چند بار اجرا شود، ممکن است کاربر چند پاسخ یکسان دریافت کند. برای فرایندهای حساس میتوانید شناسه پیام و گفتوگو را ذخیره کنید و از پردازش تکراری جلوگیری کنید.
محدود کردن دسترسی کاربران
اگر ربات فقط برای کارکنان یا مشتریان مشخصی طراحی شده است، پیش از انجام عملیات حساس، شناسه کاربر یا گفتوگو را با فهرست کاربران مجاز مقایسه کنید.
مدیریت خطاها
اگر ارسال پاسخ با خطا مواجه شود، بهتر است خطا ثبت شود و در صورت نیاز به مدیر اطلاع داده شود. برای Workflowهای مهم میتوان از روشهای مدیریت خطا در n8n استفاده کرد.
جلوگیری از افشای اطلاعات حساس
توکن ربات را در متن پیام، کد یا خروجی عمومی قرار ندهید. همچنین اطلاعات خصوصی کاربران را فقط در صورت نیاز پردازش و ذخیره کنید.
از پاسخ خودکار ساده تا اتوماسیون کسبوکار
پس از ساخت پاسخگوی اولیه، میتوانید قابلیتهای بیشتری به آن اضافه کنید. برای مثال:
- ربات فروش: دریافت درخواست مشتری و راهنمایی او در مسیر خرید
- ربات پشتیبانی: دریافت مشکل کاربر و ثبت تیکت
- ربات هوش مصنوعی: ارسال پیام برای پردازش توسط مدل هوش مصنوعی و بازگرداندن پاسخ
- ربات ثبت اطلاعات: دریافت اطلاعات فرممانند و ذخیره در پایگاه داده
- ربات اطلاعرسانی: ارسال اعلان درباره رویدادهای مهم سیستم
برای هر یک از این کاربردها باید منطق جداگانهای طراحی شود. پاسخ خودکار ثابت، نقطه شروع است و بهتنهایی یک سیستم فروش یا پشتیبانی کامل محسوب نمیشود.
جمعبندی
برای ساخت ربات پاسخ خودکار تلگرام با n8n، ابتدا پیامها را با Telegram Trigger دریافت میکنیم، سپس نود Telegram را برای ارسال پاسخ به همان Chat ID تنظیم میکنیم. در ادامه میتوانیم با Expression متن پیام را در پاسخ قرار دهیم یا با نود IF برای پیامهای مختلف پاسخهای متفاوت تعریف کنیم.
با همین ساختار ساده، پایه یک ربات پاسخگو آماده میشود و میتوان آن را بهتدریج به سیستمهای پیشرفتهتر مانند ربات فروش، پشتیبانی یا اتوماسیون مبتنی بر هوش مصنوعی توسعه داد.
سوالات متداول
آیا برای ساخت ربات پاسخگوی تلگرام به برنامهنویسی نیاز دارم؟
برای ساخت نمونه اولیه معمولاً نیازی به کدنویسی ندارید. میتوانید با Telegram Trigger، نود Telegram و در صورت نیاز IF، پاسخ خودکار ایجاد کنید.
چگونه پاسخ را به همان کاربری ارسال کنم که پیام داده است؟
شناسه گفتوگو را از خروجی Telegram Trigger استخراج کنید. اگر مسیر داده شما message.chat.id است، میتوانید از Expression زیر استفاده کنید:
{{ $json.message.chat.id }}
آیا میتوان برای هر پیام پاسخ متفاوتی ارسال کرد؟
بله. با استفاده از IF یا Switch میتوانید متن پیام را بررسی کنید و بر اساس شرایط مختلف، پاسخهای متفاوتی ارسال کنید.
آیا ربات میتواند به عکس و فایل نیز پاسخ دهد؟
بله، اما باید نوع پیام را تشخیص دهید و برای فایلها و رسانهها منطق مناسب داشته باشید. Workflowای که فقط متن پیام را بررسی میکند، برای همه انواع پیام کافی نیست.
چرا ربات چند بار پاسخ مشابه میفرستد؟
ممکن است یک رویداد چند بار پردازش شود یا منطق Workflow باعث اجرای تکراری شده باشد. بررسی اجرای Workflow و استفاده از شناسه پیام برای جلوگیری از پردازش تکراری میتواند کمک کند.
آیا میتوان پاسخ خودکار را به هوش مصنوعی متصل کرد؟
بله. میتوانید متن پیام را به سرویس هوش مصنوعی بفرستید، پاسخ تولیدشده را دریافت کنید و با نود Telegram برای کاربر ارسال کنید. این کار به تنظیم Credential سرویس هوش مصنوعی، مدیریت خطا و کنترل هزینه نیاز دارد.





