تلگرام یکی از ابزارهای پرکاربرد برای ارتباط با کاربران، ارسال اعلان، پشتیبانی مشتریان و مدیریت فرایندهای کسبوکار است. اگر از n8n برای خودکارسازی کارها استفاده میکنید، میتوانید تلگرام را به گردشکارهای خود متصل کنید و بدون نیاز به نوشتن یک برنامه کامل، بسیاری از فعالیتها را خودکار انجام دهید.
برای مثال، میتوانید رباتی بسازید که پیامهای دریافتی را بررسی کند، به کاربران پاسخ دهد، اطلاعات را در دیتابیس ذخیره کند یا هنگام وقوع یک رویداد در سایت، گزارشی برای شما بفرستد.
در این مقاله از CMSNevis یاد میگیریم چگونه یک ربات تلگرام ایجاد کنیم، اطلاعات اتصال آن را در n8n ذخیره کنیم و اولین Workflow خود را برای دریافت و پاسخ به پیامها بسازیم.
اتصال Telegram به n8n چه کاربردهایی دارد؟
اتصال تلگرام به n8n فقط برای ارسال پیام نیست. با ترکیب این دو ابزار میتوانید فرایندهای متنوعی ایجاد کنید.
برخی از کاربردهای رایج عبارتاند از:
- ارسال اعلان هنگام ثبت سفارش جدید در فروشگاه اینترنتی
- دریافت پیام کاربران و ثبت آنها در دیتابیس
- ساخت ربات پاسخگوی خودکار
- ارسال گزارش خطاهای سرور یا Workflowها
- دریافت فایل و پردازش آن
- اتصال تلگرام به APIهای خارجی
- ساخت ربات پشتیبانی مشتریان
- اتصال ربات تلگرام به مدلهای هوش مصنوعی
- ارسال گزارشهای روزانه یا هفتگی کسبوکار
برای مثال، اگر فروشگاهی با WooCommerce داشته باشید، میتوانید سفارش جدید را دریافت کنید و مشخصات موردنیاز آن را به تلگرام مدیر فروشگاه بفرستید.
پیشنیازهای اتصال Telegram به n8n
برای انجام این آموزش به موارد زیر نیاز دارید:
- یک حساب تلگرام برای ساخت و مدیریت ربات
- دسترسی به پنل n8n
- یک Bot Token معتبر
- دسترسی شبکهای مناسب برای ارتباط n8n با سرویس تلگرام
اگر n8n را روی سرور شخصی یا VPS نصب کردهاید، مطمئن شوید سرور میتواند به API تلگرام متصل شود. همچنین اگر قرار است تلگرام پیامها را از طریق Webhook به n8n ارسال کند، آدرس عمومی و قابلدسترسی برای Webhook و تنظیمات HTTPS معتبر اهمیت دارند.
مرحله اول: ساخت ربات تلگرام با BotFather
برای اتصال تلگرام به n8n ابتدا باید یک ربات ایجاد کنید.
۱. باز کردن BotFather
در تلگرام، حساب رسمی @BotFather را جستوجو کنید و وارد گفتوگو با آن شوید. مطمئن شوید حساب انتخابشده همان حساب رسمی مدیریت رباتهاست.
۲. ایجاد ربات جدید
دستور زیر را برای BotFather ارسال کنید:
/newbot
سپس BotFather از شما دو مورد میخواهد:
- Name: نام نمایشی ربات
- Username: نام کاربری منحصربهفرد ربات که باید به
botختم شود
برای مثال، میتوانید نام نمایشی CMSNevis Assistant و یک نام کاربری آزاد مانند CMSNevisExampleBot انتخاب کنید. این نام صرفاً نمونه است و ممکن است قبلاً ثبت شده باشد.
پس از تکمیل مراحل، BotFather یک توکن به شما میدهد که با عنوان Bot Token شناخته میشود.
این توکن برای احراز هویت ربات در درخواستهای API استفاده میشود.
نکته امنیتی: Bot Token را مانند رمز عبور در نظر بگیرید. آن را در مقاله، کد عمومی، مخزن Git یا پیامهای قابلمشاهده برای دیگران قرار ندهید. اگر توکن افشا شد، از BotFather برای باطلکردن یا جایگزینی آن اقدام کنید.
مرحله دوم: ساخت Credentials تلگرام در n8n
حالا باید توکن ربات را در n8n ذخیره کنید تا Nodeهای تلگرام بتوانند از آن استفاده کنند.
۱. باز کردن بخش Credentials
وارد پنل n8n شوید و از بخش Credentials یک اعتبارنامه جدید ایجاد کنید.
در فهرست نوع اعتبارنامهها، گزینه مربوط به Telegram را انتخاب کنید. نام دقیق گزینهها ممکن است بسته به نسخه n8n کمی متفاوت باشد.
۲. وارد کردن Bot Token
در فیلد مربوط به Access Token یا Bot Token، توکنی را که از BotFather دریافت کردهاید وارد کنید.
برای مثال، مقدار این فیلد باید شبیه یک توکن واقعی تلگرام باشد؛ اما در این مقاله از مقدار ساختگی استفاده نمیکنیم تا توکن واقعی کسی افشا نشود.
سپس Credentials را ذخیره کنید.
۳. بررسی اتصال
اگر رابط کاربری n8n امکان بررسی اعتبارنامه را در اختیار شما قرار دهد، میتوانید از آن استفاده کنید. در غیر این صورت، اتصال را با اجرای یک Telegram Node آزمایش کنید.
اگر اتصال برقرار نشد، این موارد را بررسی کنید:
- توکن بهدرستی کپی شده باشد.
- توکن باطل یا جایگزین نشده باشد.
- سرور n8n بتواند به API تلگرام دسترسی داشته باشد.
- تنظیمات شبکه، DNS و فایروال مانع اتصال نشده باشند.
مرحله سوم: دریافت پیامهای تلگرام با Telegram Trigger
اولین Workflow را میسازیم تا هر زمان کاربر پیامی برای ربات فرستاد، n8n بتواند آن را دریافت کند.
۱. ایجاد Workflow
در پنل n8n یک Workflow جدید بسازید و نام آن را به شکل زیر قرار دهید:
Telegram Message Receiver
۲. افزودن Telegram Trigger
یک Node با نام Telegram Trigger به Workflow اضافه کنید.
در تنظیمات آن:
- Credentials تلگرام ساختهشده را انتخاب کنید.
- در بخش مربوط به رویدادها یا Updateها، رویداد دریافت پیام را انتخاب کنید؛ معمولاً گزینهای با عنوان
Messageبرای این کار مناسب است. - Workflow را ذخیره کنید.
Telegram Trigger وظیفه دریافت رویدادهای تلگرام را بر عهده دارد. برخلاف Telegram Node که برای انجام عملیاتهایی مانند ارسال پیام استفاده میشود، Trigger نقطه شروع گردشکار است.
۳. فعالکردن Workflow
برای استفاده دائمی، Workflow را فعال کنید.
در بسیاری از تنظیمات n8n، Telegram Trigger برای دریافت رویدادها از Webhook استفاده میکند. بنابراین n8n باید بتواند یک Webhook عمومی و معتبر در اختیار تلگرام قرار دهد.
اگر n8n را پشت Reverse Proxy یا روی دامنه اختصاصی اجرا میکنید، آدرس عمومی Webhook و تنظیمات HTTPS را بررسی کنید. صرفاً باز بودن پنل n8n در مرورگر به این معنا نیست که تلگرام نیز میتواند به Webhook دسترسی داشته باشد.
۴. ارسال پیام آزمایشی
پس از آماده شدن Trigger، وارد تلگرام شوید و گفتوگوی ربات خود را باز کنید.
ابتدا دستور زیر را ارسال کنید:
/start
سپس یک پیام معمولی، مثلاً متن زیر، بفرستید:
سلام، این یک پیام آزمایشی است.
در n8n خروجی اجرای Workflow را بررسی کنید. اگر Trigger درست تنظیم شده باشد، اطلاعات رویداد دریافتی در خروجی Node قابل مشاهده خواهد بود.
ساختار دقیق خروجی ممکن است شامل اطلاعات پیام، شناسه گفتوگو، شناسه فرستنده و سایر دادههای مربوط به Update باشد.
مرحله چهارم: شناخت اطلاعات پیام دریافتی
برای پاسخ دادن به پیام کاربر باید اطلاعات پیام دریافتی را از خروجی Telegram Trigger استخراج کنید.
برای مثال، در ساختار متداول پیامهای تلگرام، دادهها ممکن است شامل موارد زیر باشند:
| فیلد | کاربرد |
|---|---|
message.text | متن پیام |
message.chat.id | شناسه گفتوگو |
message.from.id | شناسه کاربر فرستنده |
message.message_id | شناسه پیام |
این مسیرها نمونهای از ساختار متداول Updateهای تلگرام هستند. برای Workflow واقعی، خروجی Telegram Trigger خود را بررسی کنید و مسیرهای موجود در نسخه و رویداد انتخابشده را مبنا قرار دهید.
بهخصوص اگر رویداد دریافتی عکس، فایل، پیام ویرایششده یا نوع دیگری از Update باشد، ممکن است ساختار داده متفاوت باشد.
نکته: برای پاسخ به همان گفتوگویی که پیام در آن دریافت شده، معمولاً باید شناسه گفتوگو را به Telegram Node بدهید؛ نه اینکه شناسه کاربر یا شناسه خود پیام را بهجای آن استفاده کنید.
مرحله پنجم: پاسخ خودکار به پیام کاربر
اکنون میخواهیم پس از دریافت پیام، یک پاسخ به همان گفتوگو ارسال کنیم.
۱. افزودن Telegram Node
پس از Telegram Trigger، یک Node جدید از نوع Telegram اضافه کنید.
در این Node:
- Credentials تلگرام را انتخاب کنید.
- عملیات مربوط به ارسال پیام را انتخاب کنید؛ معمولاً عملیاتی با عنوان
Send Messageیا مشابه آن. - شناسه گفتوگو را از خروجی Telegram Trigger دریافت کنید.
- متن پاسخ را مشخص کنید.
۲. تعیین شناسه گفتوگو با Expression
در فیلد Chat ID، از قابلیت Expression استفاده کنید و مسیر شناسه گفتوگو را بر اساس خروجی واقعی Trigger انتخاب کنید.
در بسیاری از خروجیهای متداول Telegram Trigger، مسیر شناسه گفتوگو به شکل زیر است:
{{ $json.message.chat.id }}
این Expression یک نمونه متداول است؛ قبل از استفاده آن را با داده واقعی خروجی Trigger بررسی کنید.
برای متن پیام نیز میتوانید مقدار ثابتی قرار دهید، مانند:
سلام! پیام شما دریافت شد.
۳. آزمایش Workflow
Workflow را اجرا یا فعال کنید و یک پیام جدید برای ربات بفرستید.
اگر همه تنظیمات درست باشد، ربات باید پیام پاسخ را در همان گفتوگو ارسال کند.
برای مثال:
<escape>
کاربر: سلام
ربات: سلام! پیام شما دریافت شد.
</escape>
اگر پاسخ ارسال نشد، خروجی Nodeها و پیام خطا را بررسی کنید. معمولاً شناسه گفتوگوی اشتباه، Credentials نامعتبر یا مشکل ارتباط با API تلگرام از مواردی هستند که باید بررسی شوند.
مرحله ششم: پاسخ پویا بر اساس متن پیام
تا اینجا ربات همیشه یک پاسخ ثابت ارسال میکند. اما میتوانیم با استفاده از Nodeهای شرطی، پاسخ را بر اساس متن پیام تغییر دهیم.
برای مثال، یک Node از نوع IF میان Telegram Trigger و Telegram Node قرار دهید.
شرط را بر اساس متن پیام ورودی تنظیم کنید. برای این کار، از Expression مربوط به متن پیام استفاده کنید؛ برای مثال:
{{ $json.message.text }}
سپس شرطی تعریف کنید که اگر متن پیام برابر با سلام بود، مسیر موفق یا True اجرا شود.
در این مسیر یک Telegram Node قرار دهید که پاسخ زیر را ارسال کند:
سلام! به ربات ما خوش آمدید.
در مسیر دیگر میتوانید یک پاسخ عمومی قرار دهید:
پیام شما دریافت شد. لطفاً درخواست خود را واضحتر بیان کنید.
این یک نمونه ساده از ساخت ربات تعاملی است. برای پیادهسازی کاملتر میتوانید از Nodeهای Switch، دیتابیس یا سرویسهای هوش مصنوعی نیز استفاده کنید.
مرحله هفتم: ارسال پیام از n8n به تلگرام
گاهی لازم نیست کاربر ابتدا به ربات پیام بدهد. ممکن است بخواهید n8n بر اساس یک رویداد، خودش پیامی به تلگرام ارسال کند.
برای مثال، پس از ثبت سفارش، اجرای یک زمانبندی یا دریافت پاسخ موفق از API، پیام اطلاعرسانی ارسال شود.
در این حالت میتوانید از یک Trigger مناسب برای شروع Workflow و سپس Telegram Node برای ارسال پیام استفاده کنید.
مراحل کلی عبارتاند از:
- یک Workflow جدید بسازید.
- یک Trigger مانند Manual Trigger یا Schedule Trigger به آن اضافه کنید.
- یک Telegram Node بعد از Trigger قرار دهید.
- Credentials ربات را انتخاب کنید.
- عملیات ارسال پیام را تنظیم کنید.
- Chat ID مقصد و متن پیام را وارد کنید.
- Workflow را آزمایش کنید.
برای ارسال پیام به یک گفتوگوی شخصی، معمولاً لازم است کاربر قبلاً ربات را شروع کرده باشد. برای گروهها یا کانالها نیز ربات باید دسترسی لازم را داشته باشد و شناسه مقصد صحیح تنظیم شود.
نمونه متن اعلان
فرض کنید میخواهید هر روز یک گزارش برای مدیر ارسال کنید:
گزارش روزانه
وضعیت بررسی شد.
در صورت نیاز، جزئیات را از پنل مدیریت مشاهده کنید.
این متن فقط نمونه است. در پروژه واقعی میتوانید دادههایی مانند تعداد سفارشها، وضعیت سرور یا تعداد اجراهای ناموفق را از Nodeهای قبلی استخراج کنید و با Expressions داخل پیام قرار دهید.
تفاوت Telegram Trigger و Telegram Node چیست؟
این دو Node وظایف متفاوتی دارند و شناخت تفاوت آنها برای طراحی Workflow ضروری است.
| ویژگی | Telegram Trigger | Telegram Node |
|---|---|---|
| وظیفه اصلی | شروع Workflow با دریافت رویداد | انجام عملیات روی تلگرام |
| دریافت پیام جدید | بله، برای رویدادهای پشتیبانیشده | بسته به عملیات انتخابشده، هدف اصلی آن دریافت رویداد نیست |
| ارسال پیام | وظیفه اصلی آن نیست | بله |
| کاربرد رایج | دریافت پیام و شروع پردازش | پاسخ به کاربر یا ارسال اعلان |
در یک ربات پاسخگوی ساده، معمولاً Telegram Trigger پیام را دریافت میکند و Telegram Node پاسخ را میفرستد.
مشکلات رایج اتصال Telegram به n8n
۱. ربات پیامها را دریافت نمیکند
موارد زیر را بررسی کنید:
- آیا Workflow فعال است؟
- آیا Telegram Trigger بهدرستی تنظیم شده است؟
- آیا رویداد دریافت پیام انتخاب شده است؟
- آیا Webhook عمومی n8n از اینترنت قابلدسترسی است؟
- آیا تنظیمات HTTPS و دامنه صحیح هستند؟
اگر n8n را پشت Reverse Proxy اجرا میکنید، تنظیمات مربوط به آدرس عمومی و Webhook URL را نیز بررسی کنید.
۲. خطای Invalid Token دریافت میکنید
این خطا میتواند به دلیل اشتباه بودن یا نامعتبر شدن Bot Token رخ دهد.
توکن ذخیرهشده در Credentials را بررسی کنید و مطمئن شوید توکن صحیح مربوط به همان ربات است.
اگر احتمال میدهید توکن افشا شده باشد، آن را از طریق BotFather جایگزین کنید و Credentials مربوط به n8n را بهروزرسانی کنید.
۳. خطای Chat Not Found دریافت میکنید
این خطا معمولاً به مقصد یا شناسه گفتوگو مربوط است.
بررسی کنید:
- Chat ID صحیح باشد.
- کاربر در صورت نیاز قبلاً ربات را شروع کرده باشد.
- ربات به گروه یا کانال مقصد دسترسی لازم را داشته باشد.
- برای کانالها و گروهها، شناسه مقصد را بهدرستی وارد کرده باشید.
۴. Workflow اجرا میشود اما پیام ارسال نمیشود
ابتدا خروجی Telegram Node را بررسی کنید و مشخص کنید درخواست ارسال پیام موفق بوده یا خیر.
سپس شناسه گفتوگو، متن پیام، Credentials و خطای احتمالی API را بررسی کنید.
اگر پیام طولانی است یا شامل دادههای پویا میشود، مطمئن شوید Expressionها مقدار معتبر تولید میکنند.
۵. هنگام فعالکردن Trigger مشکل Webhook دارید
در بسیاری از تنظیمات Telegram Trigger، تلگرام برای ارسال Updateها از Webhook استفاده میکند. اگر آدرس عمومی n8n اشتباه باشد یا از اینترنت قابلدسترسی نباشد، دریافت پیام با مشکل مواجه میشود.
دامنه، گواهی HTTPS، Reverse Proxy و تنظیمات آدرس عمومی n8n را بررسی کنید. همچنین در نظر داشته باشید که محدودیتهای شبکه یا دسترسی سرور به API تلگرام ممکن است بر اتصال اثر بگذارند.
نکات امنیتی در ساخت ربات تلگرام با n8n
هنگام ساخت ربات، علاوه بر عملکرد صحیح، باید به امنیت اطلاعات نیز توجه کنید.
- Bot Token را فقط در Credentials ذخیره کنید.
- اطلاعات حساس را در متن پیامهای عمومی ارسال نکنید.
- برای عملیات مدیریتی، شناسه کاربران مجاز را بررسی کنید.
- پیامهای دریافتی را ورودی قابلاعتماد فرض نکنید.
- برای جلوگیری از اجرای عملیات غیرمجاز، دسترسیها را محدود کنید.
- خطاها را ثبت کنید، اما رمزها و توکنها را در گزارشها ذخیره نکنید.
- اگر ربات به دیتابیس، سایت یا API متصل است، دسترسی آن را به حداقل نیاز محدود کنید.
برای مثال، اگر ربات شما قرار است وضعیت سفارش را نمایش دهد، نباید صرفاً با دریافت یک شماره سفارش، اطلاعات خصوصی آن را به هر کاربری برگرداند. لازم است هویت و مجوز کاربر نیز بررسی شود.
جمعبندی
با اتصال Telegram به n8n میتوانید پیامها را دریافت کنید، پاسخ خودکار ارسال کنید و رویدادهای سیستمهای مختلف را از طریق تلگرام اطلاعرسانی کنید.
در این آموزش یاد گرفتیم چگونه با BotFather ربات بسازیم، توکن را در Credentials ذخیره کنیم، از Telegram Trigger برای دریافت پیام و از Telegram Node برای ارسال پاسخ استفاده کنیم.
این ساختار پایه بسیاری از پروژههای پیشرفتهتر است؛ از ربات پشتیبانی و گزارشگیری گرفته تا اتصال تلگرام به WooCommerce، APIهای خارجی و مدلهای هوش مصنوعی.
سوالات متداول
آیا برای اتصال تلگرام به n8n باید برنامهنویسی بلد باشم؟
خیر. برای اتصال اولیه و ساخت ربات ساده میتوانید از Nodeهای آماده و تنظیمات گرافیکی n8n استفاده کنید. برای پروژههای پیچیدهتر ممکن است به Expressions، منطق شرطی یا کدنویسی نیاز پیدا کنید.
آیا میتوان با n8n ربات تلگرام ساخت؟
بله. میتوانید پیامها را با Telegram Trigger دریافت کنید و با استفاده از Telegram Node و سایر Nodeهای n8n به آنها پاسخ دهید یا عملیات دیگری انجام دهید.
آیا برای دریافت پیامهای تلگرام باید Workflow فعال باشد؟
برای دریافت دائمی رویدادها، Workflow باید در وضعیت مناسب اجرا باشد. در تنظیمات رایج Telegram Trigger، Workflow باید فعال باشد تا رویدادهای جدید از طریق Webhook دریافت شوند.
آیا میتوان با n8n به گروه تلگرام پیام فرستاد؟
بله، به شرط آنکه ربات در گروه حضور داشته باشد، دسترسی لازم را داشته باشد و شناسه گفتوگو بهدرستی تنظیم شده باشد.
آیا میتوان تلگرام را به هوش مصنوعی متصل کرد؟
بله. میتوانید پیام دریافتی را از Telegram Trigger به یک Node هوش مصنوعی یا API مدل زبانی بفرستید و سپس نتیجه را با Telegram Node به کاربر برگردانید. برای این کار باید مدیریت خطا، محدودیت دسترسی و حفاظت از اطلاعات کاربران را نیز در نظر بگیرید.
اگر n8n روی سرور شخصی نصب شده باشد، اتصال تلگرام امکانپذیر است؟
بله، اما سرور باید شرایط لازم برای ارتباط با سرویس تلگرام را داشته باشد. در صورت استفاده از Telegram Trigger مبتنی بر Webhook، آدرس عمومی قابلدسترسی و HTTPS معتبر نیز اهمیت دارد.





