تُطرح الحملات خلف مفتاح تفعيل لكلّ بيئة. وإلى أن تُفعَّل في بيئتك تُعيد كلّ نقطة
نهاية
503 CAMPAIGNS_DISABLED. تشغّل الحملة مسار مكالمة محفوظًا، لذا يحتاج
الإنشاء أيضًا إلى مسارات المكالمة المحفوظة في بيئتك. ومن دونها
يُعيد الإنشاء 409 CAMPAIGN_NEEDS_IVR.أنشئ حملة
ينشئPOST /v1/campaigns حملة. يتطلّب النطاق campaigns:write. أرسل الترويسة
Idempotency-Key: إعادة الطلب بالمفتاح نفسه تُعيد الحملة الأولى ولا تنشئ حملة
ثانية. تحتفظ Wave بالمفتاح 24 ساعة. ولا يُحفظ الطلب المرفوض.
201 مع الحملة، ومعها عددان: recipients_accepted وduplicates_removed.
الحقول
يمكن أن يبلغ جسم الطلب 2 MB كحدّ أقصى. تحذف Wave أرقام الهاتف المكرّرة: يبقى أوّل
صفّ للرقم.
الـ sandbox والإنتاج
- مفتاح الـ sandbox: 5 مستلمين كحدّ أقصى. تعرض الحملة دائمًا رقم الـ sandbox
المشترك، وتتجاهل Wave قيمة
caller_id. - مفتاح الإنتاج:
caller_idمطلوب. الرقم الذي لا يملكه حسابك يُعيد403 CLI_NOT_OWNED.
فعّل مسار المكالمة أوّلًا
كيف تتّصل Wave
- الوتيرة. تبدأ Wave مكالمات جديدة فقط ما دامت الحملة أقلّ من
max_concurrent، وحسابك أقلّ من حدّ التزامن، وحدود المكالمات تسمح بمكالمة جديدة. عندما توقف حدود المكالمات مكالمة، أو عندما تكون المكالمات الصادرة معلّقة على حسابك، ينتظر المستلم محاولة لاحقة. ولا تحتسب Wave محاولة. - متى. تتّصل Wave بدءًا من
start_at، وداخل نافذة الاتّصال فقط (بتوقيت السعودية). وخلال ساعات الهدوء، تنتظر المكالمة حتّى تنتهي ساعات الهدوء. - الأرقام التي ألغت الاشتراك. لا تتّصل Wave بمستلم ألغى اشتراكه. ونتيجته
skipped. - عند كلّ ردّ. يعمل كشف جهاز الرد الآلي أوّلًا:
- شخص (أو لم تكن Wave متأكّدة): يسمع الشخص مسار المكالمة الخاصّ بك.
- جهاز رد آلي، مع رسالة بريد صوتي: تنتظر Wave صوت التنبيه (الصفارة)، ثم تشغّل الرسالة أو تنطقها، ثم تُنهي المكالمة. وإذا لم يأتِ صوت التنبيه، تشغّل Wave الرسالة أيضًا ثم تُنهي المكالمة.
- جهاز رد آلي، من دون رسالة بريد صوتي: تُنهي Wave المكالمة.
النتائج وإعادة المحاولة
ينتهي كلّ مستلم بنتيجة واحدة:
إعادة المحاولة: بعد
no_answer أو busy أو failed، تحاول Wave مرّة أخرى بعد
retry_after_minutes، حتّى يصل المستلم إلى max_attempts محاولة. وعندها تصبح
تلك النتيجة نهائية. وفي حالتين تكون النتيجة failed فورًا، من دون إعادة محاولة:
- لم يرسل المحرّك الصوتي أيّ إشارة عن المكالمة بعد 5 دقائق من إرسال Wave لها.
- رفضت Wave أو المحرّك الصوتي المكالمة، أو ألغاها المحرّك الصوتي.
الإيقاف المؤقّت والاستئناف والإيقاف
للحملة إحدى هذه الحالات:
استخدم
POST /v1/campaigns/{id}/pause و/resume و/stop. يتطلّب كلّ منها النطاق
campaigns:write ويُعيد الحملة.
أيّ انتقال آخر يُعيد
409 CAMPAIGN_INVALID_STATE. عند الإيقاف المؤقّت أو الإيقاف،
تستمرّ المكالمات الجارية حتّى نهايتها. ويعطي الإيقاف النتيجة cancelled لكلّ
مستلم لم ينتهِ بعد.
اقرأ حملة ومستلميها
تتطلّب كلّ عمليات القراءة النطاقcampaigns:read. يرى مفتاح الـ sandbox حملات
الـ sandbox فقط، ويرى مفتاح الإنتاج حملات الإنتاج فقط.
- يعرض
GET /v1/campaignsحملات المشروع، الأحدث أوّلًا، كصفحة بمؤشّر (limitافتراضيًّا 20، و100 كحدّ أقصى). - يُعيد
GET /v1/campaigns/{id}الحملة معcounts(totalوby_stateوby_outcome) وestimated_cost_sar. التكلفة تقدير فقط: قد تختلف الفوترة. - يعرض
GET /v1/campaigns/{id}/recipientsالمستلمين، الأحدث أوّلًا، كصفحة بمؤشّر (limitافتراضيًّا 50، و100 كحدّ أقصى). صفِّ النتائج بـ?outcome=.
next_cursor كـ ?cursor= لتحصل على الصفحة التالية. حالة المستلم state هي
pending أو waiting أو dialling أو done. وقيمة machine_detection_result هي
human أو machine أو notsure، أو null إذا لم يعمل الكشف.
الـ Webhooks
اشترك في حدثَي webhook بدلًا من الاستعلام المتكرّر. لا يحمل الحدثان أيّ رقم هاتف: طابِق علىreference أو recipient_id.
campaign.recipient_completed — حصل مستلم على نتيجته النهائية:
campaign.completed — لكلّ مستلم نتيجة (status: "completed")، أو أوقفت أنت
الحملة (status: "stopped"). تذكر by_outcome كلّ النتائج، مع 0 للنتيجة غير
الموجودة:
الأخطاء
الخطوات التالية
قوائم الرد الصوتي
أنشئ مسار المكالمة الذي يسمعه الشخص.
الـ Webhooks
احصل على كلّ نتيجة فور حدوثها بدلًا من الاستعلام المتكرّر.

