آموزش n8n تلگرام؛ خروجی عملی این آموزش چیست؟
n8n یک ابزار اتوماسیون مبتنی بر جریان کاری است که به شما اجازه میدهد بدون نوشتن یک پروژه بزرگ از صفر، رویدادهای تلگرام را دریافت کنید، روی دادهها تصمیم بگیرید و نتیجه را به تلگرام، سایت، CRM، دیتابیس یا سرویسهای دیگر بفرستید. در این آموزش n8n تلگرام، یک ربات واقعی میسازیم که پیام کاربر را دریافت میکند، متن را بررسی میکند، برای چند دستور پاسخ مناسب میفرستد و اطلاعات تماس را به یک API خارجی منتقل میکند.
این روش برای پاسخگویی اولیه، ثبت سرنخ فروش، اعلان سفارش، پیگیری تیکت، ارسال پیام زمانبندیشده و اتصال ربات به پنل مدیریت کاربرد دارد. اگر هدف شما ساخت ربات با کدنویسی کامل و کنترل مستقیم روی سرور است، راهنمای آموزش ساخت ربات تلگرام با Python نیز مسیر مناسبی برای توسعهدهندگان است. اما n8n در بسیاری از سناریوهای اتوماسیون، زمان ساخت و تست اولیه را کاهش میدهد.
پیشنیازهای ساخت ربات تلگرام با n8n
- یک حساب تلگرام و دسترسی به BotFather
- توکن ربات تلگرام
- دسترسی به n8n؛ نسخه Cloud یا نسخه نصبشده روی سرور
- دامنه دارای HTTPS معتبر برای اجرای وبهوک در نسخه self-hosted
- در صورت اتصال به سیستم دیگر، URL و کلید دسترسی API آن سیستم
برای تستهای ساده میتوانید از n8n Cloud استفاده کنید؛ اما برای اجرای پایدار کسبوکار، کنترل دادهها، آدرس ثابت وبهوک و اتصالهای اختصاصی، نصب n8n روی سرور انتخاب قابلمدیریتتری است. در این حالت باید دامنه، SSL، متغیرهای محیطی و نسخه پشتیبان را از ابتدا جدی بگیرید. منطق وبهوک و آمادهسازی هاست با موارد مطرحشده در آموزش نصب سورس ربات تلگرام روی هاست؛ از تنظیم توکن تا وبهوک شباهت دارد.
ساخت توکن ربات در BotFather
- در تلگرام عبارت BotFather را جستوجو و گفتوگو را آغاز کنید.
- دستور
/newbotرا ارسال کنید. - نام نمایشی ربات و سپس نام کاربری آن را وارد کنید. نام کاربری باید به bot ختم شود.
- توکنی که BotFather نمایش میدهد را در مکانی امن نگه دارید.
- در صورت نیاز با دستور
/setdescriptionتوضیح ربات و با/setuserpicتصویر آن را تنظیم کنید.
توکن مانند گذرواژه ربات است. آن را در پیامرسان، فایل عمومی، اسکرینشات یا مخزن کد عمومی قرار ندهید. اگر تصور میکنید توکن افشا شده است، از BotFather آن را revoke کنید و Credential مربوط به n8n را با توکن جدید بهروزرسانی کنید.
راهاندازی n8n روی سرور با Docker
اگر n8n را روی سرور خود اجرا میکنید، Docker Compose راهی قابل تکرار برای نصب است. نمونه زیر برای شروع مناسب است، اما در محیط عملیاتی باید PostgreSQL، بکاپ، reverse proxy و محدودیت دسترسی را نیز در نظر بگیرید. مقدارهای نمونه را پیش از اجرا تغییر دهید.
services:
n8n:
image: n8nio/n8n:latest
restart: unless-stopped
ports:
- 5678:5678
environment:
- N8N_HOST=n8n.example.com
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.example.com/
- N8N_ENCRYPTION_KEY=change-this-to-a-long-random-value
- TZ=Asia/Tehran
volumes:
- ./n8n_data:/home/node/.n8nپس از اجرای سرویس، n8n را پشت Nginx یا Caddy قرار دهید تا HTTPS معتبر روی دامنه فعال باشد. تلگرام برای وبهوک به یک آدرس HTTPS عمومی نیاز دارد. استفاده از IP خام، گواهی نامعتبر یا دامنهای که از اینترنت قابل دسترسی نیست، معمولاً باعث میشود Trigger پیامها را دریافت نکند.
برای ساخت جریانهای پیچیدهتر، مدیریت نسخه، اجرای دستی، زمانبندی و تست شاخهها، ابتدا ساختار اصلی n8n را یاد بگیرید. مقاله آموزش کار با n8n از صفر تا اجرای اولین پروژه (۲۰۲۶) مفاهیم پایه نودها، Credentials و اجرای Workflow را پوشش میدهد.
اتصال Telegram Trigger به n8n
اکنون وارد داشبورد n8n شوید و یک Workflow جدید بسازید. نامی روشن مانند telegram-lead-bot برای آن انتخاب کنید تا بعداً در میان جریانهای متعدد قابل تشخیص باشد.
- روی دکمه افزودن نود کلیک کنید و نود
Telegram Triggerرا جستوجو کنید. - در بخش Credential گزینه ساخت Credential جدید تلگرام را بزنید.
- توکن BotFather را در فیلد Access Token قرار دهید و ذخیره کنید.
- در بخش Updates، گزینه
Messageرا فعال کنید. در صورت نیاز میتوانید Callback Query، Edited Message یا Channel Post را هم جداگانه مدیریت کنید. - برای آزمایش، روی Listen for Test Event بزنید و سپس از حساب تلگرام خود یک پیام به ربات بفرستید.
پس از دریافت پیام، خروجی نود را باز کنید. دادهها معمولاً شامل شناسه چت، شناسه کاربر، نام، نام کاربری، متن پیام و زمان ارسال هستند. مهمترین مقادیر برای پاسخگویی معمولاً اینها هستند:
{{$json.message.chat.id}}
{{$json.message.from.id}}
{{$json.message.from.username}}
{{$json.message.text}}ممکن است بعضی فیلدها برای همه کاربران وجود نداشته باشند؛ برای مثال username اختیاری است. بنابراین در طراحی جریان کاری، تنها به username برای شناسایی کاربر تکیه نکنید و شناسه عددی کاربر را نیز ذخیره کنید.
ساخت پاسخ خودکار برای دستورهای ربات
بعد از Telegram Trigger یک نود Switch اضافه کنید. ورودی بررسی را روی متن پیام قرار دهید و برای دستورهای اصلی شاخه بسازید. پیشنهاد میشود از دستورهای کوتاه و مشخص مانند /start، /services، /support و /contact استفاده کنید. این ساختار از تحلیل مبهم متن در مرحله اول جلوگیری میکند و تست را سادهتر میسازد.
تنظیم نود Switch
در Expression نود Switch مقدار زیر را وارد کنید تا متن پیام بررسی شود:
{{$json.message.text || ''}}سپس Ruleهای برابر با /start، /services و /support ایجاد کنید. برای هر خروجی، یک نود Telegram با عملیات Send Message قرار دهید. در فیلد Chat ID مقدار زیر را وارد کنید:
{{$node['Telegram Trigger'].json.message.chat.id}}برای شاخه شروع، متن خوشآمدگویی را تعریف کنید. بهتر است پیام کوتاه، قابل فهم و مبتنی بر اقدام بعدی باشد:
سلام {{$node['Telegram Trigger'].json.message.from.first_name}} 👋
به ربات خوش آمدید.
برای مشاهده خدمات /services و برای پشتیبانی /support را ارسال کنید.در نود Telegram، Parse Mode را فقط زمانی روی HTML یا Markdown قرار دهید که متن شما واقعاً به قالببندی نیاز دارد. اگر پیامهای کاربران را بدون پاکسازی داخل خروجی قالببندیشده قرار دهید، نویسههای خاص ممکن است باعث خطای ارسال شوند. برای پیامهای ساده، حالت پیشفرض امنتر است.
ارسال دکمه شیشهای و دریافت Callback Query
منوی دستوری برای شروع کافی است، اما در رباتهای فروش و پشتیبانی بهتر است کاربر با دکمه انتخاب کند. در نود Telegram برای ارسال پیام میتوانید Reply Markup از نوع Inline Keyboard تنظیم کنید. مقدار callback_data باید کوتاه، ثابت و قابل پردازش باشد؛ این مقدار را به جای متن نمایشی دکمه مبنای منطق خود قرار دهید.
{
"inline_keyboard": [
[
{"text":"ثبت درخواست","callback_data":"create_lead"},
{"text":"پشتیبانی","callback_data":"support"}
],
[
{"text":"مشاهده خدمات","callback_data":"services"}
]
]
}برای پردازش کلیکها، در Telegram Trigger گزینه Callback Query را نیز فعال کنید. سپس با یک Switch مقدار زیر را بررسی کنید:
{{$json.callback_query.data}}از آنجا که ساختار JSON پیام عادی و Callback Query متفاوت است، بهتر است پیش از ورود به منطق اصلی یک نود Edit Fields یا Code قرار دهید تا شناسه چت و نوع رویداد را یکپارچه کنید. این کار Workflow را در زمان توسعه آسانتر میکند.
const message = $json.message;
const callback = $json.callback_query;
return [{
json: {
eventType: callback ? 'callback' : 'message',
chatId: callback ? callback.message.chat.id : message.chat.id,
userId: callback ? callback.from.id : message.from.id,
text: callback ? callback.data : (message.text || '')
}
}];پس از این نود، تمام شاخهها میتوانند از {{$json.chatId}} و {{$json.text}} استفاده کنند. این استانداردسازی، احتمال خطا در توسعههای بعدی مانند افزودن هوش مصنوعی، ثبت سفارش یا اتصال به CRM را پایین میآورد.
ثبت سرنخ تلگرام در CRM یا API سایت
یکی از کاربردهای مهم n8n تلگرام، انتقال درخواست کاربر به سیستم فروش یا CRM است. برای مثال، وقتی کاربر روی «ثبت درخواست» کلیک میکند، میتوانید از او شماره تماس یا شرح نیاز را دریافت کنید و آن را به API سایت ارسال کنید. ابتدا با نود Telegram پیام درخواست اطلاعات را بفرستید و وضعیت مکالمه را در Data Store، Redis یا دیتابیس نگه دارید. سپس پیام بعدی کاربر را براساس وضعیت او پردازش کنید.
برای ارسال داده به API، نود HTTP Request را اضافه کنید. روش درخواست را POST قرار دهید، URL API را وارد کنید و احراز هویت را متناسب با مستندات سرویس تنظیم کنید. نمونه بدنه JSON:
{
"telegram_user_id": "{{$json.userId}}",
"chat_id": "{{$json.chatId}}",
"message": "{{$json.text}}",
"source": "telegram_n8n"
}پیش از ارسال داده واقعی، API را با داده آزمایشی تست کنید و پاسخ ناموفق را مدیریت کنید. اگر API وضعیت 400 یا 500 برگرداند، نباید کاربر بدون پاسخ بماند. یک شاخه خطا بسازید تا ضمن ثبت جزئیات در لاگ یا کانال مدیر، پیام مناسبی مانند «درخواست شما ثبت نشد؛ لطفاً دوباره تلاش کنید» ارسال شود. طراحی چنین مسیرهایی تفاوت یک نمونه آزمایشی با اتوماسیون قابل تحویل است.
برای یک ربات فروشگاهی، جریان میتواند شامل مشاهده کالا، استعلام موجودی، ایجاد سفارش، اتصال درگاه و اعلان وضعیت باشد. برای بررسی نمونه کاربردی، صفحه ربات فروشگاهی تلگرام را ببینید. همچنین اگر فرآیند شما بر پایه تیکت، ارجاع به اپراتور و پیگیری وضعیت است، الگوی ربات پشتیبانی و تیکت تلگرام به طراحی دقیقتر سناریو کمک میکند.
افزودن هوش مصنوعی به ربات n8n تلگرام با کنترل هزینه و خطا
ترکیب n8n هوش مصنوعی و تلگرام برای پاسخ به پرسشهای پرتکرار مفید است، اما نباید هر پیام را بدون محدودیت به مدل زبانی ارسال کنید. ابتدا دستورهای مشخص، پیامهای خالی، فایلها، پیامهای بسیار طولانی و کاربران مسدودشده را فیلتر کنید. سپس فقط متن قابل پردازش را به نود AI یا HTTP Request سرویس مدل ارسال کنید.
برای حفظ کیفیت پاسخ، یک دستور سیستمی روشن تعریف کنید: پاسخ فارسی، کوتاه، بدون ادعای انجام عملیاتی که ربات واقعاً به آن متصل نیست، و ارجاع به اپراتور برای موارد نامشخص. همچنین سقف طول پاسخ، timeout درخواست و مسیر جایگزین در زمان اختلال API را مشخص کنید. دادههای حساس مشتری، توکنها، رمزها و اطلاعات پرداخت را در Prompt ارسال نکنید.
بهجای آنکه هوش مصنوعی مستقیماً سفارش یا تیکت ایجاد کند، خروجی آن را ابتدا اعتبارسنجی کنید. برای نمونه، اگر مدل باید دسته درخواست را تولید کند، فقط مقادیر تعریفشده مانند sales، support و other را بپذیرید؛ در غیر این صورت به شاخه بررسی دستی منتقل شوید.
تست، فعالسازی و نگهداری Workflow
Workflow را تنها با یک پیام تست فعال نکنید. یک چکلیست واقعی بسازید: دستور شروع، متن فارسی، متن خالی، پیام بدون username، کلیک دکمه، درخواست نامعتبر، خطای API، پاسخ دیرهنگام API و ارسال همزمان چند پیام. در n8n تاریخچه Executionها را بررسی کنید تا مشخص شود هر نود چه ورودی و خروجی داشته است.
- ابتدا با Listen for Test Event منطق را در حالت تست بررسی کنید.
- Credentialها و URLهای محیط واقعی را بازبینی کنید.
- Workflow را Active کنید تا وبهوک تولیدی فعال شود.
- از یک حساب تلگرام دیگر، سناریوهای چکلیست را اجرا کنید.
- برای خطاها یک Error Workflow یا اعلان به کانال مدیر تنظیم کنید.
- از Workflow و دادههای مهم نسخه پشتیبان تهیه کنید.
در پروژههای جدی، محیط تست و محیط اصلی را جدا نگه دارید. توکن آزمایشی، دیتابیس آزمایشی و API آزمایشی مانع از ثبت دادههای اشتباه در سیستم اصلی میشود. برای طراحی مرحلهبهمرحله سناریو، مستندسازی ورودی و خروجی نودها و تست اتصالات، راهنمای ساخت اتوماسیون n8n؛ آموزش طراحی، اجرا و تست جریانهای کاری واقعی را نیز دنبال کنید.
خطاهای رایج اتصال تلگرام به n8n و روش رفع آنها
ربات پیام دریافت نمیکند
ابتدا بررسی کنید Workflow فعال است، توکن Credential درست است و کاربر حداقل یکبار ربات را Start کرده است. در نسخه self-hosted، دامنه باید از اینترنت عمومی در دسترس و دارای HTTPS معتبر باشد. لاگ reverse proxy و Executionهای n8n را هم بررسی کنید.
Webhook URL اشتباه است
اگر n8n پشت پروکسی اجرا میشود اما متغیر WEBHOOK_URL روی آدرس داخلی یا HTTP تنظیم شده باشد، n8n آدرس نادرستی به تلگرام معرفی میکند. مقدار آن باید دقیقاً دامنه عمومی HTTPS شما و معمولاً با اسلش پایانی باشد.
پیام به کاربر ارسال نمیشود
Chat ID را از داده رویداد درست بردارید. در Callback Query، شناسه چت در مسیر callback_query.message.chat.id قرار دارد، نه در مسیر پیام عادی. همچنین ربات نمیتواند به کاربری که هرگز با آن گفتوگو را آغاز نکرده است، پیام خصوصی اولیه بفرستد.
داده تکراری در CRM ثبت میشود
کاربر ممکن است یک دکمه را چند بار لمس کند یا تلگرام در شرایط شبکه یک رویداد را دوباره تحویل دهد. قبل از ایجاد رکورد، یک شناسه یکتا مانند message_id یا ترکیب userId و زمان را ذخیره و کنترل کنید. در API نیز بهتر است مکانیزم idempotency داشته باشید.
جمعبندی و مسیر توسعه
در این آموزش، ربات تلگرام را به n8n متصل کردید، پیام و Callback Query را دریافت کردید، پاسخ خودکار ساختید و مسیر انتقال داده به API را شناختید. گام بعدی میتواند افزودن دیتابیس کاربران، اتصال به CRM، ساخت صف برای ارسالهای حجیم، احراز هویت مشتری، پنل مدیریت و گزارشگیری باشد.
نکته کلیدی این است که Workflow را فقط مجموعهای از نودها نبینید؛ هر جریان باید ورودی مشخص، اعتبارسنجی، مسیر خطا، ثبت لاگ و خروجی قابل تست داشته باشد. با این رویکرد، ساخت ربات n8n از یک پاسخگوی ساده به یک بخش قابل اتکا از فرایند فروش، پشتیبانی و یکپارچهسازی سیستمها تبدیل میشود.
نظرات کاربران
فقط نظرات تاییدشده مدیر نمایش داده میشود.