حدود المعدل
كيف تُقيَّد بوابات الإرسال وبوابة الذكاء الاصطناعي، وكيفية التعامل مع ذلك.
تُقيَّد أجزاء مختلفة من واجهة برمجة تطبيقات Mersal بطرق مختلفة، حسب ما إذا كنت ترسل رسائل عبر بوابة قناة أو تستدعي بوابة الذكاء الاصطناعي.
بوابات القنوات (SMS وWhatsApp والبريد الإلكتروني)
لكل بوابة إرسال في حسابك إعدادات مسبقة قابلة للتهيئة لحدود المعدل — حدود لكل دقيقة وساعة ويوم — تحدّ فعليًا من سرعة خروج الرسائل. توجد هذه الحدود لحماية معدل التسليم (يعاقب المزودون الحسابات التي ترسل بشكل مفاجئ وعدواني) ولمطابقة الإنتاجية التي يدعمها المزود المتصل فعليًا.
تُهيّأ الإعدادات المسبقة لحدود المعدل لكل بوابة على حدة في إعدادات Gateways الخاصة بحسابك. إذا كنت ترسل دفعة كبيرة، يُفضَّل إرسال طلب واحد يحتوي على عدة عناصر contact (إرسال جماعي) بدلاً من إرسال طلبات فردية متكررة وسريعة — هذا يتيح لـ Mersal جدولة التوزيع داخليًا وفق حدود البوابة المهيأة، بدلاً من أن تتسابق أنت معها من جانب العميل.
إذا كانت لديك عمليات إرسال كبيرة ويمكن التنبؤ بها (مثل نشرة إخبارية شهرية لقائمة جهات الاتصال الكاملة لديك)، استخدم schedule_at لتوزيع التسليم بدلاً من إطلاقه كله دفعة واحدة — هذا يتوافق بشكل أفضل مع حدود الإنتاجية على مستوى البوابة.
بوابة الذكاء الاصطناعي
تطبّق POST /api/ai/v1/chat/completions تقييدًا على الطلبات لحماية سعة الذكاء الاصطناعي المشتركة بين جميع العملاء الذين يستخدمون AI Pool. تُهيّأ الحدود لكل مفتاح AI Pool على حدة، سواء لكل دقيقة أو لكل يوم. إذا كنت بحاجة إلى إنتاجية أعلى لحمل عمل إنتاجي، تحقق من الحدود المهيأة لمفتاح AI Pool الخاص بك في لوحة التحكم.
التعامل مع التقييد
عند تقييد طلباتك، تراجع بدلاً من إعادة المحاولة فورًا في حلقة متلاحقة:
- استخدم التراجع الأسي (exponential backoff) — انتظر فترة أطول تدريجيًا بين المحاولات (مثل 1 ثانية، 2 ثانية، 4 ثوانٍ، 8 ثوانٍ) بدلاً من إعادة المحاولة بفاصل زمني قصير وثابت.
- أضف تشويشًا عشوائيًا (jitter) (تأخيرًا عشوائيًا صغيرًا) لتجنب إعادة محاولة العديد من العملاء في نفس اللحظة بعد إعادة تعيين حد مشترك.
- بالنسبة للإرسال الجماعي، يُفضَّل تجميع جهات الاتصال في عدد أقل من الطلبات بدلاً من إصدار طلب واحد لكل مستلم.
لا تُثبّت أرقام الحدود في الكود
قيم حدود المعدل الدقيقة قابلة للتهيئة لكل حساب ولكل بوابة/مفتاح، ويمكن أن تتغير. صمّم تكاملك بحيث يقرأ استجابات التقييد ويتعامل معها ديناميكيًا بدلاً من تثبيت عدد محدد من الطلبات لكل دقيقة في الكود.
راجع أيضًا
- الأخطاء ورموز الحالة — الاتفاقيات العامة لاستجابات الأخطاء.
- المصادقة — أين تُدار مفاتيح القنوات ومفاتيح AI Pool.
