یک اشتباه رایج در پروژههای چتبات این است که موتور RAG را یکبار میسازند و بعد فرض میکنند اتصال آن به کانالهای مختلف فقط یک کار API است. در عمل، تلگرام، واتساپ و ویجت وب سه محیط با قواعد متفاوتاند: محدودیت طول پیام فرق دارد، انتظار کاربر از سرعت پاسخ فرق دارد، و مکانیزم احراز هویت کاربر کاملاً متفاوت است. نادیده گرفتن این تفاوتها باعث میشود بات در یک کانال عالی کار کند و در کانال دیگر شکسته به نظر برسد. این مقاله عملی به این سه تفاوت میپردازد.
لیست مطالب
محدودیت طول و قالب پیام
در تلگرام، هر پیام متنی محدودیت طول مشخصی دارد و پیامهای طولانی باید یا کوتاه شوند یا در چند پیام پشتسرهم ارسال شوند؛ همچنین تلگرام از Markdown محدودی (بولد، ایتالیک، لینک، کد) پشتیبانی میکند که باید در خروجی بات رعایت شود، وگرنه علائم فرمتبندی بهصورت خام در پیام دیده میشوند. در واتساپ (از طریق WhatsApp Business API) محدودیت طول پیام سختگیرانهتر است و مهمتر از آن، ارسال پیام اول از سمت کسبوکار خارج از یک بازهٔ زمانی مشخص از آخرین پیام کاربر، نیازمند «template» تأییدشده از سمت متا است؛ یعنی بات نمیتواند هر متن دلخواهی را بهعنوان اولین پیام ارسال کند. در ویجت وب، محدودیت طول عملاً وجود ندارد — میتوانید HTML، جدول، یا حتی دکمههای تعاملی نمایش دهید — و همین باعث میشود وب بهترین کانال برای جوابهای تفصیلی با ارجاع منبع باشد.

انتظار سرعت پاسخ
کاربر تلگرام و واتساپ عادت به گفتوگوی پیامرسان دارد و انتظار پاسخ در حد چند ثانیه را دارد؛ اگر پردازش سؤال (بازیابی از پایگاه دانش، فراخوانی ابزار، تولید جواب) بیش از چند ثانیه طول بکشد، باید یک پیام میانی («در حال بررسی…») یا نشانگر «در حال تایپ» نمایش داده شود، وگرنه کاربر فکر میکند بات پاسخ نداده و دوباره پیام میفرستد. در ویجت وب، بسته به طراحی، میتوان جواب را بهصورت stream (کلمهبهکلمه) نمایش داد که هم حس سرعت بیشتری میدهد و هم کاربر را در حین انتظار درگیر نگه میدارد. نکتهٔ عملی: هر سه کانال باید یک timeout مشخص داشته باشند که بعد از آن، بهجای سکوت، پیام خطا یا پیشنهاد تحویل به انسان نمایش داده شود.
احراز هویت کاربر
تلگرام یک شناسهٔ کاربری پایدار و رایگان در اختیار میگذارد (chat_id)، اما این شناسه بهخودیخود اثبات هویت واقعی کاربر (مثل شمارهٔ سفارش یا حساب کاربری) نیست؛ برای دسترسی به اطلاعات حساس باید یک مرحلهٔ لینککردن حساب (مثلاً از طریق کد تأیید یا ورود با شماره موبایل) اضافه شود. واتساپ شمارهٔ موبایل کاربر را بهصورت پیشفرض در اختیار میگذارد که معمولاً همان شناسهٔ اصلی مشتری در CRM یا سیستم سفارش است، پس اتصال هویت در واتساپ اغلب سادهتر و مستقیمتر است. در ویجت وب، هیچ هویت پیشفرضی وجود ندارد؛ کاربر میتواند ناشناس باشد، و اگر بات نیاز به دسترسی به اطلاعات شخصی دارد (مثل وضعیت سفارش)، باید یک لایهٔ لاگین یا فرم تأیید هویت جداگانه طراحی شود.
| ویژگی | تلگرام | واتساپ | ویجت وب |
|---|---|---|---|
| محدودیت طول پیام | متوسط، Markdown محدود | سختگیرانه، template برای شروع گفتوگو | عملاً بدون محدودیت |
| انتظار سرعت پاسخ | چند ثانیه، نیاز به نشانگر تایپ | چند ثانیه، حساس به تأخیر | قابل مدیریت با stream |
| احراز هویت پیشفرض | شناسهٔ chat_id، نیاز به لینک حساب | شمارهٔ موبایل واقعی | ناشناس، نیاز به لاگین جداگانه |
| مناسب برای | گفتوگوی سریع و پیگیری | پشتیبانی مشتری با هویت مشخص | جواب تفصیلی و ارجاعدار |
یک لایهٔ منطق مشترک، سه لایهٔ آداپتور
راهکار عملی این است که منطق اصلی بات (بازیابی از پایگاه دانش، فراخوانی ابزار، تصمیم به تحویل انسانی) یکبار و مستقل از کانال نوشته شود، و برای هر کانال فقط یک لایهٔ آداپتور نازک اضافه شود که مسئول قالببندی پیام، مدیریت محدودیت طول، و نگاشت شناسهٔ کاربر به شناسهٔ داخلی سیستم است. این معماری باعث میشود افزودن کانال چهارم (مثل اینستاگرام یا ایمیل) فقط نیازمند یک آداپتور جدید باشد، نه بازنویسی موتور اصلی. برای دیدن اینکه این موتور مشترک چطور با ساختار RAG و ابزارها تعامل میکند، نقشهٔ راه ساخت چتبات تخصصی نقطهٔ شروع خوبی است.
مدیریت خطا و افت دسترسی
هر سه کانال گاهی دچار افت دسترسی یا محدودیت نرخ (rate limit) میشوند: API تلگرام ممکن است موقتاً پاسخ ندهد، واتساپ ممکن است پیام را بهدلیل عبور از سقف روزانه رد کند، و سرور ویجت وب ممکن است زیر بار سنگین کند شود. طراحی درست یعنی هرکدام از این حالتها یک مسیر شکست مشخص دارد؛ بهجای اینکه کاربر با سکوت مطلق مواجه شود، پیام خطای قابلفهم («سرویس موقتاً در دسترس نیست، لطفاً چند دقیقهٔ دیگر امتحان کنید») نمایش داده شود. برای واتساپ بهطور خاص، چون محدودیت ارسال پیام اول از بیرون بازهٔ گفتوگو وجود دارد، باید یک صف پیام (queue) طراحی کرد که پیامهای معلق را در همان بازهٔ مجاز دوباره امتحان کند، نه اینکه پیام را برای همیشه گم کند.
رسانههای غنی و دکمههای تعاملی
تفاوت مهم دیگر بین کانالها، پشتیبانی از عناصر غیرمتنی است. تلگرام دکمههای اینلاین (inline keyboard) را بهخوبی پشتیبانی میکند که برای سؤالات چندگزینهای یا تأیید یک عملیات بسیار مفید است. واتساپ هم دکمههای سریع و لیست انتخابی دارد، اما تعداد و طول گزینهها محدودتر از تلگرام است. ویجت وب در این زمینه آزادترین کانال است و میتواند فرم، جدول تعاملی، یا حتی پیشنمایش تصویر محصول را مستقیم در گفتوگو نشان دهد. طراحی بات باید از این تفاوتها به نفع خودش استفاده کند: سؤالات چندگزینهای را بهجای متن، با دکمه بپرسد تا هم دقت پاسخ کاربر بالاتر برود و هم رفتوبرگشت پیام کمتر شود.
جمعبندی
- هر کانال قواعد خودش را برای طول پیام و قالببندی دارد؛ خروجی بات باید متناسب با هر کانال تنظیم شود.
- واتساپ برای شروع گفتوگو نیازمند template تأییدشده است؛ نمیتوان هر متنی را بهعنوان پیام اول فرستاد.
- در تأخیر پاسخ بیش از چند ثانیه، همیشه یک نشانگر یا پیام میانی نمایش دهید.
- احراز هویت در هر کانال متفاوت است؛ واتساپ سادهترین، ویجت وب پیچیدهترین حالت است.
- منطق اصلی بات را مستقل از کانال بسازید و فقط یک آداپتور نازک برای هر کانال اضافه کنید.
