یکی از کاربردهای مهم n8n، دریافت اطلاعات از سرویسهای مختلف و پردازش خودکار آنهاست. تلگرام نیز میتواند بهعنوان یک ورودی برای Workflow استفاده شود؛ به این معنا که با ارسال پیام به یک ربات، اجرای یک فرایند در n8n آغاز شود.
برای مثال، تصور کنید کاربران اطلاعاتی را برای یک ربات ارسال میکنند و شما میخواهید متن پیام، شناسه گفتوگو و اطلاعات فرستنده را استخراج کنید و سپس آنها را در یک فایل، پایگاه داده یا سیستم پشتیبانی ذخیره کنید.
در این مقاله یاد میگیریم چگونه پیامهای تلگرام را با استفاده از Telegram Trigger دریافت کنیم، ساختار دادههای ورودی را بررسی کنیم و اطلاعات موردنیاز را برای استفاده در نودهای بعدی آماده کنیم.
Telegram Trigger در n8n چیست؟
نود Telegram Trigger برای دریافت رویدادهای تلگرام و شروع اجرای Workflow استفاده میشود.
وقتی کاربر به ربات پیام میفرستد، تلگرام میتواند رویداد مربوط به پیام را به n8n ارسال کند. سپس Workflow اجرا میشود و اطلاعات دریافتی در اختیار نودهای بعدی قرار میگیرد.
یک فرایند ساده به این شکل است:
کاربر
|
| ارسال پیام در تلگرام
v
Telegram Bot
|
v
Telegram Trigger
|
v
استخراج اطلاعات پیام
|
v
ذخیرهسازی یا پردازش دادهها
در این ساختار، Telegram Trigger وظیفه دریافت رویداد را دارد. پردازش متن، ذخیرهسازی یا ارسال پاسخ، مراحل جداگانهای هستند که با اضافه کردن نودهای دیگر انجام میشوند.
پیشنیازهای دریافت پیام تلگرام
قبل از شروع، موارد زیر باید آماده باشند:
- یک ربات تلگرام که از طریق BotFather ساخته شده باشد.
- توکن معتبر ربات.
- یک نمونه n8n در حال اجرا.
- Credential مربوط به تلگرام در n8n.
- دسترسی مناسب برای دریافت رویدادهای تلگرام؛ در استفاده عملیاتی، تنظیمات عمومی Webhook و HTTPS نیز باید صحیح باشند.
اگر هنوز ربات خود را نساختهاید، ابتدا مقاله «آموزش ساخت ربات تلگرام با n8n» را مطالعه کنید.
مرحله اول: ایجاد Workflow جدید
وارد پنل n8n شوید و یک Workflow جدید ایجاد کنید.
برای شروع، نامی مانند زیر انتخاب کنید:
Receive Telegram Messages
سپس نود Telegram Trigger را به Workflow اضافه کنید.
این نود نقطه شروع فرایند ما خواهد بود و با دریافت رویداد جدید از تلگرام، دادههای پیام را به نودهای بعدی منتقل میکند.
مرحله دوم: تنظیم Telegram Trigger
پس از اضافه کردن نود، تنظیمات آن را باز کنید.
۱. انتخاب Credential
در بخش Credential، اطلاعات اتصال ربات تلگرام را انتخاب کنید.
اگر Credential را قبلاً ساختهاید، همان مورد را انتخاب کنید. در غیر این صورت، یک Credential جدید ایجاد کرده و توکن ربات را در فیلد مربوط به Access Token قرار دهید.
توکن را مستقیماً در کد Workflow یا در یک نود Code قرار ندهید؛ نگهداری آن در Credentials روش مناسبتری است.
۲. انتخاب رویداد پیام
در تنظیمات Telegram Trigger، رویداد مربوط به دریافت پیام را انتخاب کنید. این گزینه معمولاً با نام Message نمایش داده میشود.
این تنظیم باعث میشود پیامهای دریافتی در محدوده رویداد انتخابشده، باعث شروع اجرای Workflow شوند.
۳. آزمایش دریافت پیام
برای تست، گزینهای مانند Test step یا Listen for test event را انتخاب کنید. عنوان دقیق دکمه ممکن است بر اساس نسخه n8n متفاوت باشد.
سپس تلگرام را باز کنید و یک پیام آزمایشی برای ربات بفرستید:
سلام، این یک پیام آزمایشی است.
اگر تنظیمات صحیح باشد، خروجی Telegram Trigger در n8n نمایش داده میشود.
در حالت تست ممکن است لازم باشد پیش از هر آزمایش، دریافت رویداد را دوباره فعال کنید.
مرحله سوم: بررسی ساختار پیام دریافتی
یکی از مهمترین نکات هنگام کار با n8n، بررسی خروجی واقعی نود است. قبل از نوشتن Expression یا استفاده از دادهها در نودهای بعدی، خروجی Telegram Trigger را باز کنید و ساختار آن را بررسی کنید.
برای نمونه، یک پیام متنی ممکن است دادههایی مشابه ساختار زیر داشته باشد:
{
"message": {
"message_id": 25,
"from": {
"id": 123456789,
"is_bot": false,
"first_name": "Ali"
},
"chat": {
"id": 123456789,
"type": "private"
},
"date": 1790000000,
"text": "سلام، این یک پیام آزمایشی است."
}
}
این داده صرفاً نمونه آموزشی است؛ مقادیر و ساختار دقیق خروجی واقعی شما ممکن است متفاوت باشد.
بخشهای مهم این ساختار عبارتاند از:
message.text: متن پیام، در صورتی که پیام متنی باشد.message.from.id: شناسه فرستنده.message.from.first_name: نام کوچک ثبتشده فرستنده، در صورت وجود.message.chat.id: شناسه گفتوگویی که پیام در آن ارسال شده است.message.message_id: شناسه پیام در همان گفتوگو.message.date: زمان ثبت پیام بهصورت Unix timestamp.
شناسه فرستنده و شناسه گفتوگو همیشه یکسان نیستند. برای مثال، در گروهها ممکن است پیام از طرف یک کاربر ارسال شده باشد، اما شناسه گفتوگو به گروه مربوط باشد.
مرحله چهارم: استخراج متن پیام با Expression
فرض کنیم میخواهیم متن پیام دریافتی را در یک نود بعدی استفاده کنیم.
یک نود Edit Fields به Workflow اضافه کنید و فیلدی با نام message_text بسازید.
نوع فیلد را متناسب با تنظیمات نود روی String قرار دهید و مقدار آن را با Expression زیر تعیین کنید:
{{ $json.message.text }}
در این مثال، فرض شده است که خروجی نود قبلی دارای مسیر message.text است. اگر خروجی واقعی شما ساختار متفاوتی دارد، مسیر را مطابق داده دریافتی تغییر دهید.
حالا میتوانید همین فیلد را در نودهای بعدی استفاده کنید؛ برای مثال، آن را در یک فایل ثبت کنید یا برای بررسی به یک سرویس دیگر بفرستید.
استخراج شناسه گفتوگو
اگر قصد دارید در مرحله بعد به همان گفتوگو پیام ارسال کنید، شناسه گفتوگو را نیز استخراج کنید.
یک فیلد با نام chat_id ایجاد کنید و مقدار آن را به شکل زیر قرار دهید:
{{ $json.message.chat.id }}
این مقدار را از خروجی واقعی نود بررسی کنید و فرض نکنید که در تمام انواع رویدادها مسیر یکسانی دارد.
استخراج شناسه فرستنده
برای شناسایی فرستنده پیام میتوانید از Expression زیر استفاده کنید:
{{ $json.message.from.id }}
این شناسه برای تطبیق پیام با فهرست کاربران مجاز یا ارتباط دادن چند پیام به یک کاربر کاربرد دارد. با این حال، پیش از اجرای عملیات حساس نباید صرفاً به وجود این فیلد اکتفا کنید؛ مجوز کاربر باید طبق منطق برنامه بررسی شود.
مرحله پنجم: آمادهسازی دادهها برای نودهای بعدی
اکنون میتوانیم اطلاعات موردنیاز را با Edit Fields در یک ساختار ساده قرار دهیم.
برای مثال، دادههای خروجی موردنظر ما میتوانند شامل این فیلدها باشند:
| نام فیلد | مقدار |
|---|---|
message_text | متن پیام |
chat_id | شناسه گفتوگو |
sender_id | شناسه فرستنده |
message_id | شناسه پیام |
برای هر فیلد، Expression مناسب را از داده واقعی Telegram Trigger انتخاب کنید.
پس از اجرای Workflow، خروجی Edit Fields را بررسی کنید. اگر مقادیر بهدرستی استخراج شده باشند، میتوانید این دادهها را به نودهای بعدی منتقل کنید.
برای مثال، در ادامه میتوان:
- پیام را در PostgreSQL یا MySQL ذخیره کرد.
- اطلاعات را به یک CRM فرستاد.
- پیام را بر اساس متن دستهبندی کرد.
- درخواست را برای پردازش به یک سرویس هوش مصنوعی فرستاد.
- در یک مرحله جداگانه، پاسخ تلگرام را ارسال کرد.
مرحله ششم: دریافت پیام در حالت عملیاتی
پس از اینکه Workflow در حالت تست بهدرستی کار کرد، آن را ذخیره و فعال کنید.
برای دریافت پیام در حالت عملیاتی، موارد زیر را بررسی کنید:
۱. آدرس عمومی n8n از اینترنت قابل دسترس باشد.
۲. HTTPS و گواهی SSL بهدرستی تنظیم شده باشند.
۳. اگر n8n پشت Reverse Proxy اجرا میشود، آدرس عمومی و تنظیمات Webhook با دامنه واقعی مطابقت داشته باشند.
۴. Workflow فعال باشد.
۵. ربات و Webhook آن توسط تنظیمات یا سرویس دیگری دچار تداخل نشده باشند.
اگر پیامها در حالت تست دریافت میشوند اما در حالت عملیاتی نه، تنظیمات Webhook و آدرس عمومی n8n از اولین مواردی هستند که باید بررسی شوند.
دریافت پیام متنی با دریافت فایل چه تفاوتی دارد؟
Telegram Trigger میتواند رویدادهای مختلفی را دریافت کند، اما همه پیامها الزاماً متن ساده ندارند.
برای مثال، کاربر ممکن است موارد زیر را ارسال کند:
- متن ساده
- عکس
- فایل سند
- پیام صوتی
- اطلاعات مربوط به یک فایل یا رسانه
در پیام متنی، معمولاً میتوان متن را از فیلدی مانند message.text استخراج کرد. اما در پیامهای رسانهای، باید خروجی واقعی رویداد را بررسی کنید و فیلدهای مربوط به عکس، سند یا فایل را جداگانه پردازش کنید.
بنابراین بهتر است Workflow را طوری طراحی کنید که نبودن فیلد متن باعث توقف ناخواسته فرایند نشود.
برای نمونه، میتوانید با یک نود IF بررسی کنید که آیا فیلد متن وجود دارد یا خیر؛ سپس پیامهای متنی را از مسیر مناسب عبور دهید و انواع دیگر پیام را در مسیر جداگانه پردازش کنید.
خطاهای رایج هنگام دریافت پیام تلگرام در n8n
۱. پیام ارسال میشود اما Workflow اجرا نمیشود
موارد زیر را بررسی کنید:
- Telegram Trigger به Credential صحیح متصل باشد.
- رویداد Message انتخاب شده باشد.
- Workflow در حالت عملیاتی فعال باشد.
- تنظیمات عمومی Webhook و HTTPS صحیح باشند.
- برای همان ربات، تنظیمات دریافت رویداد با سرویس دیگری تداخل نداشته باشد.
۲. مقدار متن پیام خالی است
ممکن است پیام دریافتی متنی نباشد؛ مثلاً کاربر عکس یا فایل فرستاده باشد.
در این حالت، وجود message.text را بررسی کنید و برای انواع مختلف پیام مسیرهای جداگانه بسازید. برای پیامهای متنی، در صورت وجود، فیلد message.text را بخوانید و برای رسانهها ساختار مرتبط را بررسی کنید.
۳. Expression مقدار مورد انتظار را برنمیگرداند
معمولاً باید مسیر فیلدها را با خروجی واقعی نود مطابقت دهید.
بهجای حدس زدن مسیر، خروجی Telegram Trigger را باز کنید و از ساختار همان داده برای نوشتن Expression استفاده کنید.
۴. چند پیام باعث اجرای چندباره Workflow میشوند
اگر چند پیام جداگانه دریافت شود، ممکن است چند اجرای مستقل ایجاد شود. اگر Workflow شما عملیات حساسی مانند ثبت سفارش یا ایجاد رکورد انجام میدهد، برای جلوگیری از ثبت تکراری باید از شناسه پیام و منطق مناسب کنترل تکرار استفاده کنید.
برای مثال، میتوانید شناسه پیام را همراه شناسه گفتوگو در پایگاه داده ذخیره کنید و پیش از ثبت مجدد، بررسی کنید که همان رویداد قبلاً پردازش نشده باشد.
۵. اطلاعات کاربران بدون کنترل دسترسی پردازش میشوند
اگر Workflow فقط برای کاربران خاص طراحی شده است، پیش از انجام عملیات مهم، شناسه کاربر یا گفتوگو را با فهرست مجاز مقایسه کنید. دریافت موفق پیام به معنی مجاز بودن فرستنده برای اجرای عملیات نیست.
جمعبندی
برای دریافت پیام تلگرام در n8n، ابتدا Telegram Trigger را به ربات متصل میکنیم، رویداد Message را انتخاب میکنیم و با ارسال یک پیام آزمایشی، خروجی آن را بررسی میکنیم.
سپس با استفاده از Expressionها و نود Edit Fields، اطلاعاتی مانند متن پیام، شناسه فرستنده و شناسه گفتوگو را استخراج میکنیم تا در مراحل بعدی قابل استفاده باشند.
این ساختار پایهای برای پیادهسازی اتوماسیونهای پیشرفتهتر است؛ از پاسخ خودکار به کاربران گرفته تا ساخت ربات فروش، پشتیبانی و اتصال تلگرام به پایگاه داده یا هوش مصنوعی.
سوالات متداول
چگونه متن پیام تلگرام را در n8n دریافت کنم؟
ابتدا خروجی Telegram Trigger را بررسی کنید. اگر مسیر متن پیام message.text باشد، میتوانید از Expression زیر استفاده کنید:
{{ $json.message.text }}
آیا میتوان اطلاعات فرستنده را نیز دریافت کرد؟
بله. در پیامهای معمولی، اطلاعاتی مانند شناسه فرستنده و نام او ممکن است در بخش message.from موجود باشد. ساختار واقعی خروجی را بررسی کنید.
آیا Telegram Trigger فقط پیام متنی دریافت میکند؟
خیر. نوع رویداد و ساختار داده به پیام دریافتی بستگی دارد. برای عکس، فایل و انواع دیگر پیام باید فیلدهای مرتبط را جداگانه بررسی کنید.
آیا برای دریافت پیام باید Workflow فعال باشد؟
برای اجرای دائمی، بله. در حالت تست میتوانید دریافت رویداد را موقتاً فعال کنید؛ اما برای دریافت عملیاتی، Workflow باید فعال باشد و Webhook نیز بهدرستی تنظیم شده باشد.
آیا دریافت پیام به معنی پاسخ خودکار است؟
خیر. Telegram Trigger پیام را دریافت میکند و Workflow را اجرا میکند. برای ارسال پاسخ باید منطق لازم و نود ارسال پیام را نیز اضافه کنید.
چگونه از پردازش تکراری یک پیام جلوگیری کنم؟
میتوانید شناسه پیام و شناسه گفتوگو را ذخیره کنید و پیش از انجام عملیات، بررسی کنید که رویداد قبلاً پردازش نشده باشد. این کار بهویژه برای ثبت سفارش یا تغییر اطلاعات اهمیت دارد.





