ساخت ربات تلگرام سفارشگیری با n8n بهصورت گامبهگام

در این مقاله قدمبهقدم یاد میگیرید چگونه بدون کدنویسی سنگین و با استفاده از n8n یک ربات تلگرام سفارشگیری برای کافه یا فروشگاه خود بسازید. هدف این راهنما ارائه روش عملی برای ثبت سفارش، تأیید آن و ارسال اعلان به مدیر است تا بتوانید فرایند سفارشگیری را اتوماتیک و قابل پیگیری کنید.
چرا از n8n برای ساخت ربات سفارشگیری استفاده کنیم
n8n یک پلتفرم اتوماسیون با رابط گرافیکی است که اجازه میدهد جریانهای کاری (workflow) را با کشیدن و رها کردن نودها بسازید. برای کسبوکارهای کوچک مثل کافه یا فروشگاه این مزایا مهماند:
- بدون نیاز به نوشتن کد طولانی؛ جریان کاری بصری و قابل تغییر است.
- قابلیت اتصال به منابع مختلف برای ذخیره و اعلان سفارشها.
- قابلیت پیادهسازی webhook برای دریافت لحظهای پیامها از تلگرام.
- قابلیت توسعه و ادغام با درگاهها یا سیستمهای حسابداری در آینده.
پیشنیازها
- حساب تلگرام و ایجاد بات با BotFather برای دریافت توکن.
- نصب یا دسترسی به محیط n8n؛ میتوانید از نسخه محلی، سرور اختصاصی یا سرویس ابری استفاده کنید.
- دامنه یا آدرس HTTPS برای استفاده بهعنوان webhook (یا استفاده از تونلینگ محلی در زمان تست).
- فضایی برای ذخیره سفارشها: Google Sheets، MySQL، PostgreSQL، Airtable یا یک فایل CSV ساده.
معماری پیشنهادی سیستم
| جزء | وظیفه |
|---|---|
| تلگرام بات | دریافت پیام مشتری و ارسال پاسخها |
| n8n Webhook | دریافت رویدادهای پیام از تلگرام و اجرای جریان کاری |
| نود پردازش | تحلیل پیام، گرفتن اطلاعات سفارش و اعتبارسنجی |
| ذخیرهساز | ذخیره نهایی سفارش برای پیگیری |
| اعلان مدیر | ارسال پیام خلاصه سفارش به کانال یا ادمین |
گامبهگام ساخت ربات سفارشگیری
گام 1: ایجاد بات در تلگرام و گرفتن توکن
در تلگرام BotFather را باز کنید و دستور newbot را اجرا کنید. پس از انتخاب نام و نام کاربری یکتا، توکن API را دریافت خواهید کرد. این توکن را در محیط n8n بهصورت متغیر محیطی ذخیره کنید تا در نودهای HTTP قابل استفاده باشد.
گام 2: راهاندازی n8n و Webhook
- n8n را اجرا کنید و وارد صفحه ساخت workflow شوید.
- نود Webhook اضافه کنید و مسیر دلخواهی برای آن انتخاب کنید، مثلا /telegram-webhook.
- نوع درخواست را POST تنظیم کنید. آدرس کامل webhook را یادداشت کنید؛ این آدرس را باید به Telegram ست کنید.
اگر از محیط محلی استفاده میکنید، از ابزارهایی مانند تونل محلی برای دریافت آدرس HTTPS استفاده کنید. در محیط تولید از دامنه و گواهی SSL بهره ببرید.
گام 3: اتصال webhook به تلگرام
برای ست کردن webhook باید یک درخواست HTTP به API تلگرام بزنید با متد setWebhook و پارامتر url برابر آدرس webhook شما. سپس تلگرام پیامها را به n8n ارسال میکند.
گام 4: طراحی جریان کاری پردازش پیام
پس از دریافت هر پیام از تلگرام، باید آن را پردازش کنید تا نوع پیام تشخیص داده شود: دستور آغاز، انتخاب آیتم، تعداد، نام مشتری، آدرس و روش پرداخت. مدل پیشنهادی نودها:
- Webhook Trigger → Function یا Set برای ساخت ساختار سفارش → IF برای مسیرهای مختلف → ذخیرهساز → ارسال پیام تأیید
نمونه ساختار داده سفارش
برای پیگیری ساده، یک ساختار JSON پیشنهادی به صورت زیر دارد:
{
"order_id": "auto_generated",
"items": [
{"name": "قهوه لاته", "qty": 1, "price": 0},
{"name": "کروسان", "qty": 2, "price": 0}
],
"customer": {"name": "", "phone": "", "address": ""},
"payment_method": "",
"status": "received",
"timestamp": "2024-xx-xxTxx:xx:xx"
}قیمتها را میتوانید در مرحله لیست منو نگهداری کنید یا هنگام ثبت سفارش اضافه کنید.
گام 5: پیادهسازی فرآیند انتخاب منو
برای تجربه کاربری ساده، از دکمههای inline یا keyboard در تلگرام استفاده کنید تا مشتری بتواند آیتمها و تعداد را انتخاب کند. نمونه جریان:
- کاربر /start یا /order را ارسال میکند.
- ربات منو را با دکمههای انتخاب آیتم نمایش میدهد.
- با انتخاب هر آیتم، ربات از کاربر تعداد را میپرسد یا دکمههای 1،2،3 را نمایش میدهد.
- پس از تکمیل انتخاب آیتمها، ربات اطلاعات تماس و آدرس را درخواست میکند.
گام 6: ذخیره سفارش
n8n نودهای متنوعی برای ذخیره اطلاعات دارد. بسته به نیاز میتوانید یکی از راهها را انتخاب کنید:
- Google Sheets: مناسب برای شروع سریع و پیگیری دستی.
- پایگاه داده (MySQL/Postgres): مناسب برای مقیاسپذیری و گزارشگیری.
- فایل CSV یا JSON در فضای ذخیرهسازی: ساده و قابل انتقال.
در نود ذخیرهساز، فیلدهای سفارش را به ستونها نگاشت کنید. همیشه یک شناسه یکتا برای سفارش تولید کنید تا پیگیری آسان باشد.
گام 7: ارسال اعلان به مدیر
پس از ذخیره موفق سفارش، یک پیام خلاصه به کانال یا آیدی ادمین ارسال کنید. برای این کار از HTTP Request یا نود Telegram در n8n استفاده کنید تا متد sendMessage را با متن خلاصه سفارش فراخوانی کنید.
نمونه متن تأیید به مشتری
متنی کوتاه و شامل خلاصه سفارش، شماره سفارش و زمان تقریبی آمادهسازی مناسب است. مثال:
«سفارش شما ثبت شد. شماره سفارش: 12345. مجموع: 45,000 تومان. خیلی زود با شما تماس میگیریم برای تأیید نهایی.»
آزمایش و دیباگ
برای اطمینان از درست کار کردن ربات مراحل زیر را دنبال کنید:
- ارسال پیامهای تست از چند حساب مختلف برای بررسی حالات مرزی.
- بررسی لاگهای n8n برای دیدن payload دریافتی از تلگرام و پاسخهای ارسالشده.
- تست خطاهای احتمالی ذخیرهسازی و واکنش سیستم در صورت عدم دسترسی به پایگاه داده.
- اطمینان از صحت webhook با ابزارهای تست یا امکانات داخلی n8n.
نکات امنیتی و نگهداری
- توکن تلگرام را بهصورت متغیر محیطی ذخیره کنید و آن را در نسخههای پشتیبان عمومی قرار ندهید.
- برای webhook از HTTPS استفاده کنید تا دادهها رمزنگاری شوند.
- سطح دسترسی به پایگاه داده و فایلها را محدود کنید و از حسابهای اختصاصی برای اتصال استفاده کنید.
- لاگها را بهطور منظم بررسی و بکاپ از سفارشها تهیه کنید.
- در محیط تولید مانیتورینگ جریانهای n8n و اجرای خودکار راهاندازی مجدد در صورت خطا را تنظیم کنید.
افزونهها و توسعههای بعدی
پس از پیادهسازی اولیه میتوانید قابلیتهای بیشتری اضافه کنید:
- ادغام با درگاه پرداخت برای پرداخت آنلاین و تغییر وضعیت سفارش پس از پرداخت.
- پیگیری وضعیت سفارش با بهروزرسانی خودکار و اطلاعرسانی به مشتری.
- تحلیل داده سفارشها برای زمانهای پیک و بهینهسازی منو.
- ایجاد داشبورد مدیریتی برای دیدن سفارشهای جاری و تاریخی.
چکلیست سریع برای راهاندازی
- توکن بات تلگرام گرفته شده و در n8n ذخیره شده است.
- webhook روی آدرس HTTPS فعال شده و پیامها را دریافت میکند.
- جریان کاری n8n برای پردازش پیام، اعتبارسنجی و ذخیرهسازی ساخته شده است.
- اعلان به مدیر بعد از ثبت سفارش فعال است.
- سناریوهای خطا و بازیابی در نظر گرفته شدهاند.
پرسشهای متداول
چطور توکن بات را بهصورت امن در n8n نگه دارم؟
توکن را بهعنوان متغیر محیطی یا credential در n8n ذخیره کنید و از نمایش آن در لاگها خودداری کنید. دسترسی به محیط n8n را محدود به افراد مورد اعتماد کنید.
آیا میتوانم پرداخت آنلاین را به این ربات اضافه کنم؟
بله. شما میتوانید پس از ثبت سفارش یک لینک پرداخت یا فرایند پرداخت را در جریان کاری n8n فراخوانی کنید و بعد از تأیید پرداخت وضعیت سفارش را بهروزرسانی کنید.
برای تست محلی webhook چه راهی مناسب است؟
در زمان توسعه از ابزارهای تونلینگ محلی برای ایجاد آدرس HTTPS موقت استفاده کنید. پس از انتقال به تولید از دامنه امن بهره ببرید.
چطور از از دست رفتن سفارشها جلوگیری کنم؟
ذخیره موقت payload در لاگ یا یک صف پیام قبل از پردازش نهایی کمک میکند در صورت خطا سفارشها از بین نروند. همچنین بکاپگیری منظم از پایگاه داده ضروری است.
آیا ساخت منو و قیمتها در n8n منطقی است یا باید در سرویس جداگانه نگهداری شود؟
برای انعطافپذیری بیشتر بهتر است منو و قیمتها در یک منبع داده مرکزی (پایگاه داده یا Google Sheets) نگهداری شود تا بتوانید بدون تغییر جریان کاری، قیمتها و آیتمها را بهروزرسانی کنید.
از کجا شروع کنم اگر تجربه فنی محدودی دارم؟
با ساخت یک نسخه ساده و ذخیره در Google Sheets شروع کنید. پس از آشنا شدن با جریان n8n، میتوانید به پایگاه داده و امکانات پیشرفتهتر مهاجرت کنید.
اگر بخواهید میتوانم یک نمونه workflow ساده n8n برای شروع آماده کنم تا آن را در محیط خود وارد و تست کنید. فقط بگویید از چه روش ذخیرهسازی و ارسال اعلان استفاده میکنید تا نمونه را متناسب بسازم.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.