پاسخ به مشتریان
نسخه پیشانتشار v1، منتشرشده در ۲۰۲۶-۰۹-۱۴. این صفحه شکل API را تعهد میکند، نه تاریخ
آن را. دقیقاً همین چیزی را که اینجا مستند شده میسازیم. شکل API تا ۲۰۲۶-۱۰-۱۴ هنوز ممکن است
تغییر کند؛ پس از آن، تغییرات از نسخهبندی و پایداری پیروی میکنند.
این بنر صفحهبهصفحه و همزمان با فعالشدن هر مسیر برداشته میشود. تا وقتی اینجاست، بر اساس قرارداد پیادهسازی کنید و فرض کنید این مسیر هنوز قابل فراخوانی نیست.
اپراتورهای شما از پنل شما به مشتریان نهایی پاسخ میدهند، نه از پنل ما. یک گفتگو به وبهوک شما میرسد، کارشناس شما پاسخی مینویسد و شما آن را از طریق این API برمیگردانید. پیام از همان کانالی که گفتگو به آن تعلق دارد به مشتری میرسد؛ پس یک فراخوانی واحد هم اینستاگرام را پوشش میدهد و هم تلگرام را.
ارسال پاسخ متنی
هر رویداد یک conversation_id دارد. برای پاسخدادن همین کافی است.
external_id کلید idempotency شماست. اگر همان مقدار را دو بار بفرستید، بهجای پیام تکراری همان
پیام اصلی را پس میگیرید؛ پس تلاش دوباره پس از timeout بیخطر است.
status با مقدار queued یعنی کانال به محدودیت نرخ درخواست خورده است و پیام را وقتی ظرفیت آزاد شد
تحویل میدهیم. چیزی دور ریخته نمیشود.
ارسال فایل یا پیام صوتی
دو مرحله دارد: فایل را بارگذاری کنید، سپس پیامی بفرستید که به آن ارجاع میدهد.
این کار بهجای یک مرحله دو مرحله است تا اگر بارگذاری یک فایل بزرگ وسط انتقال شکست خورد، بتوان آن را بهتنهایی دوباره انجام داد، بدون اینکه پیام دوباره فرستاده شود.
conversation_id هنگام بارگذاری الزامی است. هر پیوست به کانالی تعلق دارد که قرار است از آن
ارسال شود؛ پس پیش از ذخیره فایل باید مقصد را بدانیم. هر بارگذاری فقط برای یک گفتگوست؛ برای
فرستادن یک فایل به دو گفتگو، آن را دو بار بارگذاری کنید.
۱. بارگذاری
۲. ارسال
attachments در پاسخ ارسال خالی برمیگردد، حتی وقتی پیام پیوست داشته باشد. بهجای انتظار
برای بازتاب آن در اینجا، از idای که از بارگذاری گرفتهاید استفاده کنید. فایل روی پیام هست؛
رویداد وبهوک message آن را با attachments پرشده تحویل میدهد.
اندازه فایل یکی از ابعاد بسته است و هنگام بارگذاری برای هر فایل جداگانه بررسی میشود:
نگارشهای جایگزین رایج هم پذیرفته میشوند (image/jpg، video/avi، audio/m4a، audio/wave، audio/x-wav، audio/vnd.wave). این دقیقاً همان چیزی است که اینستاگرام تحویل میدهد: GIF، WebP و فرمتهای دیگر هنگام بارگذاری رد میشوند، نه اینکه پذیرفته شوند و بعد هنگام ارسال شکست بخورند.
هر بستهای که دسترسی API دارد هر چهار نوع را ارسال میکند؛ تفاوت سطحها در اندازه است، نه در اینکه چه نوع فایلی را میتوانید بفرستید. اگر قرارداد شما سقفهای دیگری تعیین کرده باشد، همانها اعمال میشوند.
نوع فایلی خارج از این فهرست، یا فایلی بزرگتر از سقف بسته شما، پیش از ذخیره با
422 validation_failed رد میشود؛ برای سقف اندازه، details شامل kind، cap_mb و
size_bytes است. نوعی از فایل که بسته شما شامل آن نیست، خطای 403 attachment_not_in_plan میدهد.
بارگذاریهای ارسالنشده پس از ۲۴ ساعت دور ریخته میشوند.
محدودیتهای کامل و ارتباط آنها با محدودیتهای خود اینستاگرام در محدودیت نرخ درخواست آمده است.
پیام صوتی فقط یک پیوست با type: voice است. فایل صوتی را به همان روش بارگذاری کنید؛ ما نوع را از
نوع رسانه تشخیص میدهیم، یا میتوانید type=voice را صریحاً بفرستید.
نمایش نشانگر «در حال نوشتن»
وقتی کارشناس شما شروع به نوشتن میکند این را فراخوانی کنید تا مشتری همان نشانهای را ببیند که در هر برنامه گفتگوی دیگری میبیند.
نشانگر پس از چند ثانیه خودبهخود منقضی میشود. تا وقتی کارشناس به نوشتن ادامه میدهد، بهجای فرستادن درخواست توقف، آن را دوباره بفرستید.
ساختن صف اپراتور
گفتگوها را بر اساس وضعیت فیلتر کنید تا آنهایی را که منتظر یک انساناند پیدا کنید.
unread_count تعداد پیامهای مشتری از آخرین پاسخ یک اپراتور، هوش مصنوعی یا یک کارشناس است؛ یعنی
آنچه هنوز منتظر پاسخ است.
لازم نیست این را مدام بپرسید (poll کنید). رویداد وبهوک chat همان لحظهای که گفتگو وارد
operator_attention میشود ارسال میشود؛ پس از رویداد برای بهروزکردن صف و از این اندپوینت برای
بازسازی آن پس از راهاندازی دوباره استفاده کنید.
بستن گفتگو
بستن گفتگو مرزی برای زمینه (context) است، نه حذف. متن کامل گفتگو باقی میماند و قابل خواندن است.
تغییر این است که گفتگوی بعدی با آن مشتری بدون تاریخچه قبلی بهعنوان زمینه هوش مصنوعی آغاز
میشود. ببینید: context_reset.