الانتقال إلى المحتوى الرئيسي
تتّصل الحملة بقائمة من المستلمين نيابةً عنك. تعطي Wave الأرقام، ومسار مكالمة محفوظًا، ومعرّف متّصل. تتّصل Wave بكلّ مستلم، وتعيد المحاولة مع من لم يردّ، وتشغّل كشف جهاز الرد الآلي على كلّ مكالمة مُجابة. يسمع الشخص مسار المكالمة الخاصّ بك. ويتلقّى جهاز الرد الآلي رسالة البريد الصوتي، إن حدّدتها.
تُطرح الحملات خلف مفتاح تفعيل لكلّ بيئة. وإلى أن تُفعَّل في بيئتك تُعيد كلّ نقطة نهاية 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.

فعّل مسار المكالمة أوّلًا

يسمع الشخص الإصدار النشط من مسار المكالمة. يقبل الإنشاء مسار مكالمة ليس له إصدار نشط. وعندها تنتهي كلّ مكالمة مُجابة ولا يسمع الشخص شيئًا، لكنّ النتيجة تبقى answered. فعّل إصدارًا من مسار المكالمة قبل أن تبدأ الحملة.

كيف تتّصل 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

احصل على كلّ نتيجة فور حدوثها بدلًا من الاستعلام المتكرّر.