تلگرام، کلودیوا و محدودیتهای ایران
برای workflow متصل به تلگرام، استقرار n8n خارج از ایران روی کلودیوا را پیشنهاد میکنیم. کلودیوا پنل دیگر مجموعهٔ ما برای زیرساخت خارج از ایران است؛ در فرم ساخت چابکان نیز انتخاب موقعیت خارجی، کاربر را به پنل کلودیوا هدایت میکند.
محدودیت از محل سرور است
تلگرام در ایران فیلتر است و اتصال مستقیم یک سرویس n8n مستقر در ایران به api.telegram.org ممکن است برقرار نشود. workflow روی سرور n8n اجرا میشود؛ بازشدن تلگرام یا پنل n8n روی گوشی و لپتاپ شما، دسترسی سرور را ثابت نمیکند. وضعیت دسترسی میتواند با شبکه و زمان تغییر کند؛ مسیر واقعی سرور را آزمایش کنید.
دو اتصال جدا لازم است:
| مسیر | کاربرد | نشانهٔ مشکل |
|---|---|---|
| n8n → Telegram Bot API | بررسی token، ثبت webhook و ارسال پیام | timeout، خطای DNS یا اتصال در credential/node |
| Telegram → آدرس HTTPS عمومی n8n | رساندن پیام جدید به Telegram Trigger | ثبت webhook ناموفق یا نرسیدن رویدادها |
تغییر دامنه، نصب گواهی یا استفاده از CDN برای آدرس n8n، بهتنهایی محدودیت اتصال خروجی سرور به تلگرام را رفع نمیکند. افزایش timeout هم مسیر مسدود را در دسترس قرار نمیدهد.
محدودیتها فقط مربوط به تلگرام نیستند: بعضی APIهای خارجی دسترسی IP ایران را محدود میکنند، OAuth ممکن است شرایط حساب یا کشور داشته باشد و اختلال اینترنت بینالملل میتواند اجرای workflow را متوقف کند. 403 همیشه فیلترینگ نیست؛ متن پاسخ و سیاست ارائهدهنده را هم بررسی کنید.
راه پیشنهادی: n8n روی کلودیوا
- وارد پنل کلودیوا شوید.
- از ساخت محصول، برنامههای آماده ← n8n را انتخاب کنید و یک موقعیت خارج از ایران موجود در فرم بردارید. موجودی موقعیت و منابع را از خود پنل بررسی کنید.
- دامنهٔ عمومی و HTTPS معتبر را آماده و آدرسهای editor و webhook را تنظیم کنید.
- credential تلگرام را آزمایش کنید؛ سپس پیام واقعی بفرستید و نتیجه را در Executions ببینید.
- برای پاسخ هوشمند، همین n8n را به هوش مصنوعی چابکان متصل کنید؛ محل اجرای n8n و ارائهدهندهٔ مدل لازم نیست یکی باشند.
اگر n8n قبلی دارید، راهنمای انتقال را دنبال کنید. ساخت سرویس خارجی، workflowها و credentialهای سرویس ایران را خودکار منتقل نمیکند. خارجبودن سرور نیز تضمین دسترسی به همهٔ ارائهدهندگان نیست؛ اتصال تلگرام، AI و سایر مقصدها را جدا آزمایش کنید.
ساخت ربات پاسخگوی ساده با AI چابکان
این نمونه بدون حافظهٔ مکالمه است؛ هر پیام مستقل پاسخ داده میشود. ابتدا اتصال AI را با نمونهٔ دستی آزمایش کنید.
۱. ربات و credential تلگرام
از BotFather رسمی یک bot بسازید و token آن را در Credentials ← Telegram API ذخیره کنید. bot token را در HTTP Request، فایل workflow یا متن پیام نگذارید. مرجع credential تلگرام
۲. دریافت و محدودکردن ورودی
- یک Telegram Trigger با همین نام بسازید؛ رویداد Message و credential ربات را انتخاب کنید.
- یک If بعد از آن قرار دهید تا فقط پیام متنی معتبر از chatهای مجاز عبور کند.
- برای آزمایش، bot را به chat خصوصی خود محدود کنید و مقدار عددی
message.chat.idخود را در شرط قرار دهید. گروهها و کاربران ناشناس را بهصورت پیشفرض وارد تماس AI نکنید. - طول متن را محدود کنید؛ نمونهٔ ۴۰۰۰ نویسه مناسب شروع است. پیام غیرمتنی یا بلند را جدا پاسخ دهید یا نادیده بگیرید.
مسیرهای ورودی Telegram Trigger برای رویداد Message:
{{ $json.message.text }}
{{ $json.message.chat.id }}
{{ $json.message.chat.type }}
اگر نوع رویداد دیگری انتخاب کردهاید، ساختار آن را از INPUT بخوانید؛ این مسیرها برای callback query یا پیام ویرایششده الزاماً یکسان نیستند.
۳. گرفتن پاسخ مدل
بعد از شاخهٔ معتبر، یک Edit Fields (Set) بسازید و فیلد prompt را با expression زیر پر کنید:
{{ $json.message.text }}
سپس HTTP Request را مطابق راهنمای AI چابکان تنظیم کنید. همان credential نوع Header Auth، Model ID دقیق و stream: false را استفاده کنید. دستور سیستم را برای پاسخ کوتاه فارسی تنظیم کنید.
۴. ارسال پاسخ به همان chat
بعد از HTTP Request، یک Telegram node با عملیات Send Message اضافه کنید:
| فیلد | مقدار |
|---|---|
| Credential | همان Telegram API |
| Chat ID | expression زیر برای node اولیه |
| Text | متن پاسخ مدل از expression زیر |
// Chat ID — نام node اولیه باید دقیقاً Telegram Trigger باشد
{{ $('Telegram Trigger').item.json.message.chat.id }}
// Text — نمونهٔ پاسخ کوتاه برای پرهیز از پیام بیشازحد بلند
{{ $json.choices[0].message.content.slice(0, 3500) }}
از $json.message.chat.id در node آخر استفاده نکنید؛ $json آنجا پاسخ AI است. ارتباط itemها را حفظ کنید تا پاسخ به chat درست برسد. Parse Mode را برای متن آزاد مدل فعال نکنید؛ Markdown/HTML نامعتبر میتواند ارسال را خراب کند. برای متن بلند در نسخهٔ واقعی، پیام را به بخشها تقسیم کنید؛ نمونهٔ بالا متن را کوتاه میکند.
۵. تست و انتشار
با bot آزمایشی Execute Workflow را اجرا و از chat مجاز پیام بفرستید. سپس workflow production را Publish/Activate و یک پیام جدید ارسال کنید. موفقیت هر سه مرحلهٔ دریافت پیام، درخواست AI و ارسال پاسخ را در Executions ببینید.
تلگرام برای هر bot فقط یک webhook نگه میدارد؛ تست و production با token مشترک میتوانند webhook یکدیگر را جایگزین کنند. برای توسعه bot جدا بسازید. webhook تلگرام باید HTTPS عمومی معتبر باشد؛ نام دامنه و تنظیم URL را با نسخهٔ n8n تطبیق دهید. عیبیابی رسمی Telegram Trigger
برای نسخهٔ واقعی، رویدادهای تکراری را با update_id در ذخیرهساز پایدار تشخیص دهید، تعداد درخواست هر chat را محدود کنید و خطای AI را با پیام کوتاه عمومی پاسخ دهید. token، متن کامل خطا و اطلاعات داخلی را برای کاربر bot ارسال نکنید. قطعشدن پاسخ HTTP ممکن است پس از انجام عملیات رخ دهد؛ retry ارسال پیام میتواند پیام تکراری بسازد.