یکی از کاربردهای جذاب اتوماسیون، ساخت رباتی است که بتواند پیام کاربران را دریافت کند و به کمک هوش مصنوعی به آنها پاسخ دهد. برای مثال، کاربر در تلگرام سؤالی میپرسد و ربات بدون نیاز به پاسخگویی دستی، پیام را برای یک مدل هوش مصنوعی ارسال میکند و نتیجه را دوباره به تلگرام برمیگرداند.
با استفاده از n8n و OpenAI API میتوانید چنین فرایندی را بدون نوشتن یک برنامه کامل از ابتدا پیادهسازی کنید. در این آموزش، یک Workflow میسازیم که پیام تلگرام را دریافت میکند، آن را به OpenAI میفرستد و پاسخ تولیدشده را برای همان کاربر ارسال میکند.
در پایان این آموزش یاد میگیرید:
- ربات تلگرام را به n8n متصل کنید.
- اعتبارنامه OpenAI را تنظیم کنید.
- پیام کاربر را به مدل هوش مصنوعی بفرستید.
- پاسخ OpenAI را دریافت کنید.
- پاسخ تولیدشده را به همان گفتوگوی تلگرام برگردانید.
- خطاهای رایج اتصال و ارسال پاسخ را بررسی کنید.
اتصال تلگرام به OpenAI چگونه کار میکند؟
برای ساخت این سیستم به سه بخش اصلی نیاز داریم:
- Telegram Trigger: پیام جدید کاربر را دریافت میکند.
- OpenAI: متن پیام را به مدل هوش مصنوعی میفرستد و پاسخ را دریافت میکند.
- Telegram: پاسخ تولیدشده را برای کاربر ارسال میکند.
جریان کلی Workflow به این صورت است:
کاربر در تلگرام
|
v
Telegram Trigger
|
v
OpenAI
|
v
Telegram: Send Message
|
v
پاسخ به کاربر
برای مثال، کاربر پیام زیر را میفرستد:
«چطور میتوانم یک سایت فروشگاهی راهاندازی کنم؟»
پیام به OpenAI ارسال میشود و مدل پاسخ مناسبی تولید میکند. سپس n8n پاسخ را به گفتوگوی تلگرام کاربر برمیگرداند.
پیشنیازهای اتصال تلگرام به OpenAI
قبل از شروع، موارد زیر را آماده کنید:
- یک نمونه فعال n8n
- یک ربات تلگرام ساختهشده با BotFather
- توکن ربات تلگرام
- یک API Key معتبر از OpenAI
- دسترسی به مدل موردنظر از طریق API
اگر هنوز ربات تلگرام نساختهاید، ابتدا مقاله «آموزش ساخت ربات تلگرام با n8n؛ از BotFather تا اتصال به Workflow» را مطالعه کنید. همچنین مقاله «آموزش دریافت پیام تلگرام در n8n؛ استخراج متن و اطلاعات کاربر» برای آشنایی با ساختار پیامهای ورودی مفید است.
نکته مهم درباره هزینه: اشتراک ChatGPT و استفاده از OpenAI API دو موضوع جداگانه هستند. برای این Workflow باید دسترسی API و روش پرداخت یا اعتبار موردنیاز حساب API خود را بررسی کنید. داشتن اشتراک ChatGPT بهتنهایی لزوماً به معنی فعالبودن اعتبار API نیست.
مرحله اول: ساخت Telegram Trigger
وارد پنل n8n شوید و یک Workflow جدید ایجاد کنید.
یک Node از نوع Telegram Trigger اضافه کنید.
در بخش Credentials، اطلاعات اتصال ربات تلگرام را وارد کنید. اگر از قبل Credential ساختهاید، همان را انتخاب کنید.
سپس نوع رویداد دریافتی را روی پیامها (Message) قرار دهید.
اکنون Workflow را برای آزمایش اجرا کنید و یک پیام متنی برای ربات خود بفرستید؛ برای مثال:
سلام، خودت را معرفی کن.
اگر اتصال صحیح باشد، خروجی Telegram Trigger اطلاعات پیام دریافتی را نشان میدهد.
در بسیاری از پیامهای متنی، متن پیام در این مسیر قرار دارد:
{{ $json.message.text }}
شناسه گفتوگو نیز معمولاً از این مسیر قابل دسترسی است:
{{ $json.message.chat.id }}
خروجی واقعی Node را بررسی کنید؛ زیرا ممکن است ساختار داده در شرایط مختلف متفاوت باشد.
مرحله دوم: ساخت اعتبارنامه OpenAI
برای اتصال n8n به OpenAI به API Key نیاز دارید.
وارد حساب پلتفرم OpenAI شوید و در بخش مدیریت API، یک کلید برای استفاده موردنظر ایجاد کنید. سپس در n8n، هنگام ساخت Credential مربوط به OpenAI، کلید را وارد کنید.
مراحل کلی عبارتاند از:
- وارد بخش Credentials در n8n شوید یا از داخل Node یک Credential جدید بسازید.
- نوع اعتبارنامه OpenAI را انتخاب کنید.
- API Key را در فیلد مربوطه وارد کنید.
- اعتبارنامه را ذخیره کنید.
- در صورت امکان، اتصال را با اجرای آزمایشی بررسی کنید.
کلید API را در متن Workflow یا پیام تلگرام قرار ندهید. آن را در Credentialهای n8n نگه دارید تا مدیریت دسترسی و تغییر کلید آسانتر باشد.
همچنین بهتر است برای پروژههای مختلف از کلیدهای جداگانه و دسترسیهای متناسب با نیاز استفاده کنید.
مرحله سوم: اضافهکردن OpenAI Node
پس از Telegram Trigger، یک Node از نوع OpenAI اضافه کنید و آن را به خروجی Trigger متصل کنید.
در تنظیمات Node، اعتبارنامهای را که در مرحله قبل ساختهاید انتخاب کنید.
عملیات مربوط به تولید پاسخ متنی یا ارسال پیام به مدل را انتخاب کنید. نام دقیق عملیات و فیلدها ممکن است با توجه به نسخه n8n متفاوت باشد؛ هدف این است که متن ورودی را به مدل ارسال کنید و متن پاسخ را دریافت کنید.
در قسمت ورودی پیام یا Prompt، این Expression را قرار دهید:
{{ $('Telegram Trigger').item.json.message.text }}
این عبارت متن پیام دریافتی از Node با نام Telegram Trigger را به OpenAI میفرستد.
اگر نام Node را در Workflow تغییر دادهاید، نام داخل Expression را نیز با نام واقعی آن هماهنگ کنید.
تعیین دستورالعمل برای مدل هوش مصنوعی
بهتر است بهجای ارسال پیام کاربر بدون هیچ توضیحی، یک دستورالعمل مشخص برای مدل تعریف کنید. این دستورالعمل میتواند لحن و محدوده پاسخها را تعیین کند.
برای مثال:
تو یک دستیار فارسیزبان هستی.
به سؤال کاربر به زبان فارسی و با لحنی محترمانه پاسخ بده.
پاسخها را واضح، کاربردی و متناسب با سؤال ارائه کن.
اگر اطلاعات کافی نداری، این موضوع را شفاف بیان کن.
از ساختن اطلاعات و ادعاهای تأییدنشده خودداری کن.
پیام کاربر:
[متن پیام دریافتی از تلگرام]
اگر Node مربوط به OpenAI فیلد جداگانهای برای دستورالعمل سیستم (System Instructions) دارد، متن مربوط به نقش و رفتار مدل را در آن قرار دهید و متن کاربر را در فیلد پیام کاربر وارد کنید.
اگر رابط کاربری نسخه شما چنین فیلدهایی ندارد، میتوانید از ساختار ورودی متناسب با همان Node استفاده کنید.
انتخاب مدل و تنظیم پاسخ
مدل قابل انتخاب به دسترسی حساب API و تنظیمات فعلی شما بستگی دارد. مدلی را انتخاب کنید که برای نوع پاسخهای موردنیاز مناسب باشد.
برای شروع، تنظیمات را ساده نگه دارید:
- دستورالعمل روشن و مشخص
- پاسخ متنی
- محدودیت معقول برای طول خروجی
- مدیریت خطا در صورت ناموفقبودن درخواست
سپس Node را اجرا کنید و خروجی آن را بررسی کنید. باید بتوانید پاسخ تولیدشده توسط مدل را در دادههای خروجی مشاهده کنید.
مرحله چهارم: بررسی خروجی OpenAI
یکی از نکات مهم در n8n این است که ساختار خروجی Nodeها همیشه یکسان نیست. خروجی OpenAI ممکن است بسته به نوع Node، عملیات و نسخه مورد استفاده، در مسیر متفاوتی قرار بگیرد.
بنابراین، پس از اجرای آزمایشی OpenAI Node:
- وارد خروجی همان Node شوید.
- بخش JSON را باز کنید.
- فیلدی را پیدا کنید که متن پاسخ تولیدشده را در خود دارد.
- از گزینه انتخاب Expression یا انتخاب داده در رابط کاربری برای قراردادن آن در Node بعدی استفاده کنید.
برای نمونه، اگر خروجی شما ساختاری شبیه زیر داشته باشد:
{
"output": [
{
"content": [
{
"type": "output_text",
"text": "سلام! من یک دستیار هوش مصنوعی هستم."
}
]
}
]
}
مسیر متن پاسخ در این نمونه به شکل زیر است:
{{ $json.output[0].content[0].text }}
این مسیر نمونهای از یک ساختار خروجی مشخص است و نباید بدون بررسی، آن را برای تمام نسخهها و عملیات OpenAI فرض کنید. اگر خروجی شما ساختار دیگری دارد، Expression را بر اساس داده واقعی خودتان تنظیم کنید.
مرحله پنجم: ارسال پاسخ OpenAI به تلگرام
اکنون یک Node دیگر از نوع Telegram اضافه کنید و آن را به خروجی OpenAI متصل کنید.
عملیات ارسال پیام متنی را انتخاب کنید.
در این مرحله دو مقدار اصلی نیاز دارید:
- شناسه گفتوگوی مقصد
- متن پاسخ تولیدشده توسط OpenAI
تنظیم Chat ID
از آنجا که خروجی OpenAI ممکن است اطلاعات اصلی پیام تلگرام را در ریشه داده خروجی نگه ندارد، بهتر است شناسه گفتوگو را مستقیماً از Node اولیه دریافت کنید.
در فیلد Chat ID قرار دهید:
{{ $('Telegram Trigger').item.json.message.chat.id }}
این Expression شناسه گفتوگویی را میخواند که پیام اولیه از آن دریافت شده است.
نام Node باید دقیقاً با نام واقعی Trigger در Workflow مطابقت داشته باشد.
تنظیم متن پاسخ
در فیلد Text، Expression مربوط به خروجی OpenAI را وارد کنید.
اگر خروجی شما با نمونه مرحله قبل مطابقت دارد، میتوانید از این عبارت استفاده کنید:
{{ $json.output[0].content[0].text }}
اگر ساختار خروجی متفاوت است، مسیر صحیح را از داده واقعی OpenAI Node انتخاب کنید.
در نهایت، ساختار Workflow باید به این شکل باشد:
Telegram Trigger
|
v
OpenAI
|
v
Telegram: Send Message
|
v
پاسخ تولیدشده برای کاربر
مرحله ششم: آزمایش ربات هوش مصنوعی
حالا Workflow را اجرا کنید و چند پیام آزمایشی به ربات بفرستید.
برای مثال:
پیام اول:
سلام، خودت را معرفی کن.
پیام دوم:
n8n چه کاربردی دارد؟
پیام سوم:
سه ایده برای خودکارسازی کارهای فروشگاه اینترنتی پیشنهاد بده.
بررسی کنید که:
- Telegram Trigger پیام را دریافت میکند.
- OpenAI درخواست را با موفقیت پردازش میکند.
- متن پاسخ در خروجی OpenAI وجود دارد.
- Telegram Node پاسخ را برای همان کاربر ارسال میکند.
پس از موفقیت آزمایشها، Workflow را ذخیره و فعال کنید. برای دریافت خودکار پیامها در حالت فعال، تنظیمات Trigger و دسترسی شبکه نیز باید درست باشند.
مرحله هفتم: جلوگیری از ارسال پیامهای نامعتبر به OpenAI
در نسخه ساده، ممکن است هر پیام دریافتی به OpenAI ارسال شود. این کار برای شروع قابلقبول است، اما در استفاده واقعی بهتر است ورودیها را بررسی کنید.
برای مثال، میتوانید پیش از OpenAI یک Node از نوع IF یا Switch قرار دهید تا فقط پیامهای متنی معتبر به مدل ارسال شوند.
همچنین میتوانید پیامهای زیر را از پردازش عادی جدا کنید:
/start/help- پیام خالی
- پیامهای غیرمتنی مانند عکس یا فایل
برای این کار، ابتدا نوع پیام را بررسی کنید و سپس مسیر مناسب را اجرا کنید.
این کار از ارسال درخواستهای نامعتبر جلوگیری میکند و کنترل بیشتری روی رفتار ربات به شما میدهد.
مدیریت خطاهای اتصال تلگرام و OpenAI
در یک Workflow واقعی، باید احتمال خطا را در نظر بگیرید. برای مثال، ممکن است درخواست OpenAI به دلیل محدودیت مصرف، مشکل اعتبار API یا خطای موقت شبکه ناموفق شود.
چند مورد رایج عبارتاند از:
خطای اعتبارنامه OpenAI
اگر پیام خطای احراز هویت دریافت میکنید، API Key و Credential انتخابشده را بررسی کنید. مطمئن شوید کلید معتبر است و حساب API دسترسی لازم را دارد.
خطای محدودیت درخواست یا اعتبار
اگر درخواست به دلیل محدودیت مصرف یا نبود اعتبار کافی رد میشود، وضعیت مصرف، محدودیتهای حساب و تنظیمات API را بررسی کنید.
دریافت پیام در تلگرام اما ارسالنشدن پاسخ
اگر Trigger پیام را دریافت میکند اما پاسخ در تلگرام نمایش داده نمیشود، خروجی OpenAI و تنظیمات Telegram Node را بررسی کنید. بهخصوص مطمئن شوید Chat ID مربوط به همان گفتوگوی موردنظر است.
ارسال متن خالی
اگر پیام تلگرام خالی است، احتمال دارد Expression متن پاسخ با ساختار خروجی OpenAI مطابقت نداشته باشد. خروجی واقعی Node را باز کنید و مسیر صحیح متن را انتخاب کنید.
طولانیشدن پاسخ
اگر مدل پاسخ بسیار طولانی تولید کند، ممکن است لازم باشد پاسخ را کوتاهتر کنید یا آن را به چند پیام تقسیم کنید. محدودیتهای پیام تلگرام و رفتار Node ارسال پیام را نیز در نظر بگیرید.
برای افزایش پایداری، میتوانید مدیریت خطا و تلاش مجدد کنترلشده را به Workflow اضافه کنید. بهتر است هنگام بروز خطا، پیام مناسبی به کاربر نمایش داده شود و جزئیات فنی خطا در اختیار کاربران عادی قرار نگیرد.
آیا این ربات مکالمههای قبلی را به خاطر میسپارد؟
در Workflow ساده این مقاله، هر پیام بهصورت یک درخواست جداگانه برای OpenAI ارسال میشود. اگر اطلاعات مکالمههای قبلی را به ورودی مدل اضافه نکنید، نباید انتظار داشته باشید ربات همیشه بتواند پیامهای قبلی را به خاطر بیاورد.
برای مثال، اگر کاربر ابتدا بپرسد «اسم من علی است» و بعد بگوید «اسم من چه بود؟»، پاسخ درست به نحوه مدیریت تاریخچه مکالمه بستگی دارد.
برای حفظ زمینه مکالمه، میتوانید از قابلیتهای حافظه در معماریهای مبتنی بر AI Agent یا از یک پایگاه داده برای ذخیره و بازیابی تاریخچه استفاده کنید. در این حالت باید مکالمهها را بر اساس شناسه کاربر یا گفتوگو از یکدیگر جدا کنید تا اطلاعات یک کاربر به کاربر دیگری نشت نکند.
این موضوع در مقالههای پیشرفتهتر ساخت ربات هوش مصنوعی تلگرام قابل بررسی است.
نکات امنیتی و هزینهای
پیش از استفاده از ربات برای کاربران واقعی، موارد زیر را در نظر بگیرید:
- API Key را در Credentials نگه دارید.
- از ارسال اطلاعات محرمانه یا غیرضروری کاربران به مدل خودداری کنید.
- برای طول پاسخ و تعداد درخواستها محدودیت منطقی در نظر بگیرید.
- در صورت نیاز، استفاده کاربران از ربات را محدود یا کنترل کنید.
- هزینه مصرف API را بررسی کنید و متناسب با کاربرد خود سقف مصرف تعیین کنید.
- خطاها را مدیریت کنید و جزئیات حساس را در پیامهای عمومی نمایش ندهید.
- اگر مکالمات ذخیره میشوند، دسترسی و مدت نگهداری اطلاعات را مشخص کنید.
به یاد داشته باشید که هر پیام ارسالی به OpenAI میتواند باعث مصرف API شود؛ بنابراین، مدیریت ورودیها و محدودکردن درخواستهای غیرضروری در رباتهای پرترافیک اهمیت زیادی دارد.
ایدههایی برای توسعه ربات تلگرام متصل به OpenAI
پس از ساخت نسخه اولیه، میتوانید قابلیتهای بیشتری اضافه کنید:
۱. ساخت ربات پشتیبانی هوشمند
میتوانید ربات را به پایگاه دانش محصولات یا خدمات متصل کنید تا پاسخها بر اساس مستندات معتبر ارائه شوند.
۲. پاسخ به پرسشهای پرتکرار
برای سؤالهای ساده و پرتکرار میتوانید از پاسخهای آماده استفاده کنید و فقط پرسشهای پیچیده را به OpenAI بفرستید.
۳. اتصال به پایگاه داده
با ذخیره تاریخچه پیامها میتوانید مکالمههای کاربران را پیگیری کنید یا اطلاعات مرتبط با درخواست را در پاسخها به کار ببرید.
۴. اتصال به فروشگاه اینترنتی
میتوانید Workflow را به API فروشگاه متصل کنید تا اطلاعات محصول یا وضعیت سفارش از منبع معتبر دریافت شود. اطلاعات قیمت و سفارش نباید صرفاً بر اساس حدس مدل تولید شوند.
۵. ساخت ربات هوش مصنوعی با حافظه
با افزودن حافظه و مدیریت تاریخچه مکالمه، میتوانید رباتی بسازید که در پاسخهای بعدی از زمینه مکالمه استفاده کند.
پرسشهای متداول
آیا برای اتصال تلگرام به OpenAI به برنامهنویسی نیاز دارم؟
برای نسخه ساده این آموزش، خیر. میتوانید با Nodeهای Telegram Trigger، OpenAI و Telegram در n8n یک Workflow بسازید. برای قابلیتهای پیشرفتهتر ممکن است به پایگاه داده، APIهای دیگر یا منطق پردازش اضافه نیاز داشته باشید.
آیا ربات میتواند به زبان فارسی پاسخ دهد؟
بله. میتوانید در دستورالعمل مدل مشخص کنید که پاسخها به زبان فارسی باشند. کیفیت پاسخ به مدل انتخابی، متن ورودی و دستورالعملهای شما بستگی دارد.
آیا برای استفاده از OpenAI API باید اشتراک ChatGPT داشته باشم؟
اشتراک ChatGPT و دسترسی API جدا هستند. برای این Workflow باید دسترسی مناسب به OpenAI API و اعتبار یا روش پرداخت موردنیاز آن را داشته باشید.
آیا ربات مکالمههای قبلی را به خاطر میسپارد؟
در نسخه ساده خیر؛ مگر اینکه تاریخچه پیامها را نیز به مدل ارسال کنید یا از سازوکار حافظه استفاده کنید. برای ساخت مکالمه پیوسته باید تاریخچه را بهدرستی مدیریت کنید.
آیا میتوان از این ربات برای پشتیبانی مشتریان استفاده کرد؟
بله، اما برای استفاده حرفهای بهتر است ربات به اطلاعات معتبر کسبوکار متصل شود، خطاها را مدیریت کند و برای درخواستهای حساس امکان ارجاع به کارشناس انسانی داشته باشد.
جمعبندی
در این آموزش یاد گرفتیم چگونه با n8n ربات تلگرام را به OpenAI متصل کنیم. پیام کاربر از طریق Telegram Trigger دریافت میشود، برای مدل هوش مصنوعی ارسال میشود و پاسخ تولیدشده با یک Telegram Node به کاربر برمیگردد.
این ساختار پایهای برای ساخت رباتهای هوشمندتر است. در مراحل بعد میتوانید حافظه مکالمه، پایگاه دانش، ابزارهای اختصاصی، سیستم پشتیبانی و اتصال به سرویسهای دیگر را اضافه کنید.
اگر قصد دارید برای کسبوکار خود یک ربات هوش مصنوعی بسازید، بهتر است ابتدا همین Workflow ساده را اجرا و آزمایش کنید و سپس قابلیتهای پیشرفتهتر را متناسب با نیازتان به آن اضافه کنید.





