درخواست روی چند پیامرسان پخش میشود
یکی در ایتا مینویسد، یکی در بله، یکی در تلگرام. هیچ نمای واحدی از «چه کسی منتظر است» وجود ندارد.
کاربر در ایتا، بله یا تلگرام پیام میدهد؛ شما همان پیام را به یک تیکت با وضعیت جدید→باز→در انتظار→حلشده تبدیل میکنید. یونیوم فقط لایه دریافت و ارسال را یکسان میکند؛ منطق تیکت، صف و SLA مال شماست و روی همان قالب آشنای Bot API اجرا میشود.
مشکل سرعت پاسخ نیست؛ مشکل این است که هیچکس نمیداند وضعیت کجاست.
یکی در ایتا مینویسد، یکی در بله، یکی در تلگرام. هیچ نمای واحدی از «چه کسی منتظر است» وجود ندارد.
پیام خوانده میشود اما پاسخ دیر میرسد و هیچ نفر نمیداند از کجا دنبال آن بگردد. اولینبار بود یا ششمینبار؟
هر اپراتور فقط پیامرسانی را باز کرده که خودش استفاده میکند. درخواستهای دیگر در همان لحظه نادیده میمانند.
هیچ لاگ متمرکزی از چه گفته شد، چه ارسال شد و کدام ارسال شکست خورد وجود ندارد. همهچیز در چت شخصی اپراتورها گم میشود.
راهکار پشتیبانی فقط «ارسال پاسخ» نیست؛ تبدیل یک کانال چت به یک فرآیند قابل اندازهگیری است. یونیوم لایه پیامرسان را یکسان میکند تا شما روی قواعد تیکت تمرکز کنید.
هر تیکت از یک رویداد واقعی شروع میشود و در یک ارسال قابل پیگیری تمام میشود.
کاربر در پیامرسان متصل پیام میفرستد. یونیوم رویداد را با message_id و update_id یکتا به وبهوک شما POST میکند.
سرور شما را با 200 OK جواب میدهد و در پسزمینه تیکت را در صف میریزد: تطبیق با گفتوگوی قبلی کاربر یا باز کردن تیکت جدید.
اپراتور در helpdesk خودش پاسخ مینویسد. سامانه شما با کلید API با scope مشخص، پاسخ را از طریق sendMessage یونیوم به همان پیامرسان میفرستد.
نتیجه ارسال (موفق / خطا) کنار تیکت ذخیره میشود. اگر ارسال شکست خورد، تیکت به حالت در انتظار برمیگردد تا اپراتور دوباره امتحان کند یا مسیر دیگری پیدا کند.
هر مرحله یک فراخوانی ساده HTTP است. کلید این است که پردازش سنگین (ارجاع، قوانین، ذخیره) داخل صف شما انجام میشود، نه در مسیر وبهوک؛ وبهوک باید سریع جواب 200 بدهد تا یونیوم آن update را تأییدشده بداند.
نه فقط «ارسال و دریافت» — کنترلهای عملیاتی که یک تیم پشتیبانی را سر پا نگه میدارند.
هر پیام ورودی با شناسه پلتفرم + شناسه داخلی تیکت ذخیره میشود؛ جستوجوی سابقه گفتوگو با همان شناسهها انجام میشود.
تیکت به صف تیم یا یک اپراتور ارجاع میشود؛ فقط آن اپراتور مجاز به پاسخ با کلید API اختصاصی خودش است.
جدید → باز → در انتظار → حلشده. هر انتقال با دلیل ثبت میشود: پاسخ کاربر، اسکلشن به ارشد، یا بسته شدن خودکار.
پیام بیرون از ساعات کاری یک acknowledgment فوری میگیرد («در اولین فرصت پاسخ میدهیم») و تیکت در صف روز بعد میماند.
اگر یونیوم یک message_id را دوبار بفرستد، شما دو تیکت نمیسازید. بهجای آن، update_id را بهعنوان کلید یکتا در پایگاهداده نگه میدارید.
تیکتهای حساس یا قدیمی بهطور خودکار به صف ارشد میروند؛ همهچیز در همان گفتوگو و سابقه واحد قابل پیگیری میماند.
این قابلیتها در helpdesk شما اجرا میشوند، نه در یونیوم. یونیوم لایه ورودی/خروجی پیامرسان را یکسان و قابل اتکا میکند؛ منطق تیکت مال شماست.
هر کدام از اینها یک تیم پشتیبانی را در عمل غیرفعال میکند.
روی پیامرسانهای account-based نمیتوانید هزاران پاسخ را در یک لحظه بفرستید. یونیوم تلاش میکند صف را عادلانه پخش کند اما محدودیت نرخ خود پلتفرم همچنان پابرجاست؛ صف پشتیبانی را با فاصله زمانی و اولویت طراحی کنید.
اگر پردازش تیکت را داخل خود endpoint وبهوک انجام دهید، timeout میخورید و یونیوم update را دوباره میفرستد. کار سنگین را در صف پسزمینه ببرید؛ endpoint فقط باید 200 برگرداند.
اگر chat_id گیرنده را درست ذخیره نکرده باشید، پاسخ اپراتور به یک کاربر دیگر میرسد. شناسهها را دقیقاً همانطور که از وبهوک آمدهاند، بدون نرمالسازی دستی، بازگردانید.
اگر یک credential احراز هویتش را از دست بدهد (INVALID_AUTH یا transport failed)، تیکتهای آن صف گیر میکنند. مانیتور کنید و مسیر fallback یا اعلان به اپراتور داشته باشید — یونیوم کاربر را جبرانی احراز نمیکند.
اگر همه از یک کلید با scope کامل استفاده کنند، audit nonممکن میشود. به هر اپراتور کلید جدا با scope محدود بسازید تا هر ارسال قابل ردیابی بماند.
این قابلیت روی همه credentialها معنی یکسان ندارد. مثلاً ارسال ویس روی همه پیامرسانها پشتیبانی نمیشود؛ قبل از ساخت کمکدسک، جدول قابلیتهای هر پلتفرم را بررسی کنید.
هر پیامرسان بازوی خاص خودش را دارد؛ انتخاب هوشمندانه بر اساس نوع تماس و مخاطب است.
اگر کاربران شما VPN دارند، تلگرام با Bot API رسمی (BotFather) بهترین تجربه توسعهدهنده را دارد: inline keyboard، callback_query، rich media. برای کانالهای پشتیبانی رسمی ایدهآل است.
بله تنها پیامرسان ایرانی با Bot API رسمی بالغ («بازو»، مبتنی بر Bot API تلگرام) است و درگاه پرداخت درونبات دارد. برای پشتیبانی سازمانی و دولتی که هویت و خدمات مالی درهمآمیختهاند، انتخاب ریشهدار است.
حدود ۴۰ میلیون کاربر فعال ماهانه، اما هنوز Bot API رسمی ندارد. یونیوم از طریق لایه account به ایتا دسترسی میدهد؛ مناسب پشتیبانی بر اساس کانال و گفتوگوی مستقیم.
پیامرسان بدون فیلتر با رمزنگاری؛ لایه بات رسمی هنوز آزمایشی است. برای کاربرانی که به تلگرام دسترسی پایدار ندارند و انتظار حریم خصوصی دارند، مسیر مطمئن پشتیبانی است.
بیشترین کاربر فعال روزانه میان پیامرسانهای ایرانی (حدود ۴۸ میلیون DAU). اگر مخاطب جوان و مصرفکننده شماست، حضور در روبیکا از طریق لایه account یونیوم معنی میدهد.
معمولاً تیمها از ترکیبی استفاده میکنند: تلگرام و بله برای پشتیبانی رسمی، ایتا و روبیکا برای دسترسی به مخاطب کلان. با یک کلید یونیوم همه از همان endpoint و همان ساختار وبهوک کار میکنند.
این موارد را در همان روز اول رعایت کنید، نه بعد از اولین حادثه.
یک پیامرسان، یک نوع تیکت، یک اپراتور. وقتی جریان ورودی→تیکت→پاسخ پایدار شد، پلتفرم بعدی را اضافه کنید. اصل helpdesk چندپیامرسانی این است که هر پلتفرم جدید فقط یک credential تازه باشد، نه یک پروژه بازنویسی.
پشتیبانی زنده معمولاً از یک ابزار تیکت یا inbox متمرکز میگذرد. بههوک یونیوم، پیام همهی پیامرسانها را به همان ابزار میدهد؛ تیم یک جا پاسخ میدهد.
پیام ایتا، بله و تلگرام در یک inbox واحد Chatwoot مینشیند؛ مکالمات همانجا بسته میشوند و SLA قابل اندازهگیری است.
هر پیام ورودی یک تیکت با اولویت میسازد؛ وضعیت تیکت و پاسخ نهایی بهصورت خودکار به مخاطب اطلاع داده میشود.
مکالمه را به تیکت Freshdesk نگاشت کنید و پاسخهای آماده را با sendMessage روی پیامرسان ترجیحی کاربر بفرستید.
بدون ابزار خارجی هم میشود: صفحهی پشتیبانی و بههوک یونیوم همان دو گوشهایاند که تیم را به پیامرسانها میدوزند.
قبل از اتصال، دامنهی ارسال هر پیامرسان را در صفحهی همان پلتفرم ببینید؛ همه پلتفرمها از گفتوگوی دوطرفه کامل پشتیبانی نمیکنند.
یک حساب آزمایشی وصل کنید، وبهوک را در Playground تست کنید و اولین تیکت را از یک پیام واقعی بسازید. هزینه پنهانی نیست؛ فقط مصرف واقعی.