تسجيل endpoint
تُدار الـ webhook endpoints في لوحة تحكّم Wave ضمن Webhooks: أضِف URL، واختر الأحداث، وانسخ الـ signing secret (يُعرَض مرّة واحدة). يجب أن يكون الـ URL رابطhttps عامًّا. ترفض Wave أيّ URL يشير إلى عنوان loopback أو خاصّ أو link-local أو أيّ عنوان داخلي آخر (400 WEBHOOK_URL_INVALID). تتحقّق Wave من العنوان مرّة أخرى قبل كلّ إرسال، ولا تتبع عمليات إعادة التوجيه.
بيئة واحدة لكلّ endpoint
ينتمي كلّ endpoint إلى بيئة واحدة: sandbox أو production. ويستقبل أحداث بيئته فقط، فلا تصل أحداث الاختبار أبدًا إلى الـ endpoint الحيّ. في مشروع الـ production، تعرض لوحة التحكّم الـ endpoints الخاصّة بعرض البيئة المحدّد، ويأخذ الـ endpoint الجديد بيئة ذلك العرض.- يمكنك إضافة الـ URL نفسه مرّة واحدة في كلّ بيئة؛ ولكلّ نسخة signing secret خاصّ بها.
- الحدّ الأقصى 5 endpoints يُحتسب لكلّ بيئة.
- لا يستطيع مشروع الـ sandbox إضافة endpoint للـ production. أضِفه في نموذج Go-Live بدلًا من ذلك: يبقى غير نشط حتّى توافق Wave على طلبك، ويعرض النموذج الـ signing secret الخاصّ به مرّة واحدة. إذا رفضت Wave الطلب، يُحذف الـ endpoint.
الأحداث
يمكنك الاشتراك في أيّ حدث أدناه (بحدّ أقصى 5 endpoints لكلّ مشروع).الحمولة (Payload)
كلّ عمليّة تسليم هي جسم JSON يحتوي على نوع الـevent وenvironment وكائن data. ويحمل الـ X-Wave-Event-Id header معرّفًا فريدًا لضمان عدم التكرار (idempotency).
environment بجانب event وخارج data. وقيمته "sandbox" أو "production". تأخذه Wave من المكالمة: المكالمة التي أجراها sandbox key قيمتها "sandbox"، والمكالمات الواردة "production". أمّا webhook النتيجة voice_auth.completed فيأخذه من مفتاح الـ challenge. ويحمل كلّ حدث بيئة مكالمته، بما في ذلك أحداث Verify والـ callback والبريد الصوتي والمؤتمر والـ IVR والتحويل.
التحقّق من التوقيع
كلّ عمليّة تسليم موقّعة. الـX-Wave-Signature header هو sha256=<hex> — وهو HMAC-SHA256 لجسم الطلب الخام باستخدام الـ signing secret الخاصّ بالـ endpoint لديك (whsec_…). تحقّق منه عبر مقارنة بزمن ثابت (constant-time) قبل الوثوق بالحمولة:
إعادة المحاولات والـ dead-letter
لكلّ محاولة مهلة قدرها 10 ثوانٍ. تُعاد عمليّات التسليم الفاشلة حتّى 5 محاولات وفق سلّم تراجع (backoff)، ثمّ تُحوَّل إلى dead-letter:
تُحوَّل عمليّات التسليم المُستنفَدة إلى dead-letter (تُحفَظ 72 ساعة) وتظهر في سجلّات التسليم بلوحة التحكّم، بعلامة مُحوَّل إلى Dead-letter.

