Skip to main content
المصادقة الصوتية هي أداة اتصال-للموافقة صادرة. يطلب نظامك من Wave التحقّق من شخص؛ فتتّصل Wave بذلك الرقم، وتُشغّل رسالة قصيرة ثنائية اللغة تصف ما تجري الموافقة عليه، ثم تلتقط ضغطة المفتاح وتُعيد نتيجة موثوقة قابلة للقراءة آليًا عبر webhook موقّع (وواجهة استعلام عن الحالة). هي المكافئ الصوتي لخطوة الموافقة-بالدفع / رمز OTP — عامل أمان، وليست قائمة رد صوتي. ولأن النتيجة تحكم الوصول، فهي مصمّمة لتفشل بأمان: الموافقة الصريحة وحدها تمنح الوصول، ولا يمكن لردّ آليّ / بريد صوتي أن يوافق أبدًا.
هذا مسار صادر يبدأ عبر الواجهة (Wave تتّصل بالمستخدم). وهو يختلف عن قوائم الرد الصوتي (حيث يتّصل المتصل بك). المصادقة الصوتية مُقيّدة — اطلب من جهة تواصلك في Wave تفعيلها لحسابك.

المصادقة والفئات

كل مسار ضمن /v1/voice-auth يتطلّب مفتاح إنتاج (sk_live_) مع صلاحية voice_auth:write (أو voice_auth:read للاستعلام). لا تستطيع المفاتيح التجريبية إجراء مكالمات مصادقة حقيقية.

إنشاء طلب تحقّق (challenge)

تُعيد 201 معرّف الطلب و(في وضع number_match) الأرقام المطلوب عرضها:

النتيجة — الفشل الآمن

يصل الطلب إلى حالة نهائية واحدة state:
approved وdeclined فقط قراران صريحان من المستخدم. عامِل كل حالة أخرى كعدم منح وافشل بأمان. وتحقّق دائمًا من النتيجة عبر واجهة الحالة قبل اعتماد الموافقة — دفاعًا في العمق.

كشف الردّ الآلي (AMD)

قبل أي رسالة، تُصنّف Wave من ردّ على المكالمة. ردّ الآلة أو البريد الصوتي ينتهي إلى machine_detected ولا تُشغَّل رسالة الموافقة أبدًا — فلا يمكن لبريد صوتي التقاط ضغطة أو ترك موافقة. هذا مُطبَّق، وليس بأفضل جهد.

المطابقة الرقمية عالية التوكيد

للإجراءات عالية القيمة (المدفوعات، تغييرات المشرف)، اضبط assurance: "number_match". تتضمّن استجابة 201 قيمة match_digits (مثل "47") — اعرضها لمستخدمك. تطلب المكالمة حينها من المتّصل إدخال تلك الأرقام بالضبط للموافقة. أي إدخال خاطئ لا يوافق — وهذا يُبطل إرهاق المصادقة (“فقط اضغط 1”) والموافقات العرضية.

webhook النتيجة

عند بلوغ حالة نهائية ترسل Wave حدث voice_auth.completed موقّعًا إلى نقطة webhook الخاصّة بمشروعك. تحقّق من كل تسليم:
  • X-Wave-Signaturesha256=…، توقيع HMAC-SHA256 للمحتوى الخام بسرّ التوقيع الخاصّ بنقطتك. ارفض أي عدم تطابق.
  • X-Wave-Timestamp — بالثواني (unix)؛ ارفض التسليمات الأقدم من نافذتك (مثلًا 5 دقائق).
  • X-Wave-Event-Id — ثابت عبر إعادات الإرسال؛ استخدمه لمنع التكرار.
الـ webhook إشعار — أعد التأكيد عبر واجهة الحالة قبل المنح.

الاستعلام عن الحالة

تُعيد الحالة الحالية state وعدد المحاولات وamd_result والطوابع الزمنية و(عند الانتهاء) القرار. مقصورة على مؤسّستك فقط.

المعرّف الفريد للطلب، حدود المعدّل، ومكافحة الإساءة

  • Idempotency — أرسل Idempotency-Key؛ تُعيد المحاولة بنفس المفتاح نفس الطلب ولا تُجري مكالمة ثانية.
  • حدود لكل رقم ولكل جهة إصدار — تحدّ Wave من عدد الطلبات لرقم واحد ولكل مفتاح، وتحجب الأرقام/البادئات المُسيئة، لمنع القصف الصوتي والاحتيال. عند تجاوز الحدّ → 429.

الأخطاء