هذا مسار صادر يبدأ عبر الواجهة (Wave تتّصل بالمستخدم). وهو يختلف عن
قوائم الرد الصوتي (حيث يتّصل المتصل بك). المصادقة الصوتية مُقيّدة —
اطلب من جهة تواصلك في Wave تفعيلها لحسابك.
المصادقة والفئات
كل مسار ضمن/v1/voice-auth يتطلّب مفتاح إنتاج (sk_live_) مع صلاحية
voice_auth:write (أو voice_auth:read للاستعلام). لا تستطيع المفاتيح التجريبية
إجراء مكالمات مصادقة حقيقية.
إنشاء طلب تحقّق (challenge)
تُعيد
201 معرّف الطلب و(في وضع number_match) الأرقام المطلوب عرضها:
النتيجة — الفشل الآمن
يصل الطلب إلى حالة نهائية واحدةstate:
كشف الردّ الآلي (AMD)
قبل أي رسالة، تُصنّف Wave من ردّ على المكالمة. ردّ الآلة أو البريد الصوتي ينتهي إلىmachine_detected ولا تُشغَّل رسالة الموافقة أبدًا — فلا يمكن لبريد صوتي التقاط ضغطة
أو ترك موافقة. هذا مُطبَّق، وليس بأفضل جهد.
المطابقة الرقمية عالية التوكيد
للإجراءات عالية القيمة (المدفوعات، تغييرات المشرف)، اضبطassurance: "number_match".
تتضمّن استجابة 201 قيمة match_digits (مثل "47") — اعرضها لمستخدمك. تطلب المكالمة
حينها من المتّصل إدخال تلك الأرقام بالضبط للموافقة. أي إدخال خاطئ لا يوافق — وهذا
يُبطل إرهاق المصادقة (“فقط اضغط 1”) والموافقات العرضية.
اسم المتصل
تقول المكالمة افتراضيًا «مكالمة من Wave…». يمكن لمؤسّستك أن تجعلها تقول اسمك أنت (اسم المتصل) بدلًا من ذلك، بلغة المكالمة: «مكالمة من أكمي للتحقّق من…». اسم المتصل اسمٌ منطوق فقط — يبقى رقم المتصل هو رقم Wave الموثَّق. اعتماد اسم (البوابة). في بوابة المطوّرين، افتح أسماء المتصل واطلب اسمًا بالإنجليزية وبالعربية. يحتاج الاسم إلى موافقتين قبل أن تستخدمه أي مكالمة: مالك أو مسؤول في مؤسّستك (طلب المالك أو المسؤول يتجاوز هذه الخطوة)، ثم Wave. الاسم من 2 إلى 40 حرفًا (حروف وأرقام ومسافات و. & ' -؛ بلا عناوين ويب؛ بلا 4 أرقام متتالية أو أكثر)، ويجب أن يستخدم
الاسم العربي حروفًا عربية. لا يتغيّر اسم بعد طلبه — لاستخدام اسم جديد، اطلب اسمًا جديدًا.
استخدامه في طلب تحقّق. أرسل brand_id عند الإنشاء. تنطق المكالمة:
- قيمة
brand_idالتي ترسلها، إن وُجدت؛ وإلا - الاسم الافتراضي لمشروعك (يُضبط من صفحة أسماء المتصل)؛ وإلا
- «Wave» — فيستمر عمل أي تكامل لا يرسل
brand_id.
brand_id اسمًا معتمدًا لمؤسّستك؛ أي شيء آخر (غير معروف، أو قيد المراجعة،
أو مرفوض، أو متوقف، أو تابع لمؤسّسة أخرى) يُعيد 422 VOICE_AUTH_BRAND_NOT_APPROVED
ولا تُجرى أي مكالمة. يحتفظ الطلب بالاسم الذي بدأ به، فإيقاف اسم أثناء مكالمة لا يغيّر ما
يسمعه المستخدم. تحمل استجابة 201 وواجهة الحالة والـ webhook قيمة brand_id
(null = «Wave»).
عرض أسمائك من نظامك.
voice_auth:read. يُعيد كل أسماء مؤسّستك مع status
(pending_tenant، pending_wave، approved، rejected، retired) وسبب الرفض، و
is_default لـ مشروع المفتاح. للصفحة التالية أرسل cursor = قيمة next_cursor السابقة.
إذا تعذّرت خدمة تحويل النص إلى كلام، يمكن أن تنتقل Wave إلى رسائل مسجّلة مسبقًا. في هذا
الوضع لا تذكر الرسالة العادية اسم أي متصل (لا «Wave» ولا اسمك)؛ وتبقى رسالة مطابقة
الرقم تذكر اسمك. ويبقى
brand_id محفوظًا ومُعادًا.webhook النتيجة
voice_auth.completed موقّعًا إلى نقطة webhook
الخاصّة بمشروعك. تحقّق من كل تسليم:
X-Wave-Signature—sha256=…، توقيع HMAC-SHA256 للمحتوى الخام بسرّ التوقيع الخاصّ بنقطتك. ارفض أي عدم تطابق.X-Wave-Timestamp— بالثواني (unix)؛ ارفض التسليمات الأقدم من نافذتك (مثلًا 5 دقائق).X-Wave-Event-Id— ثابت عبر إعادات الإرسال؛ استخدمه لمنع التكرار.
الاستعلام عن الحالة
state وعدد المحاولات وamd_result وbrand_id والطوابع الزمنية و(عند الانتهاء)
القرار. مقصورة على مؤسّستك فقط.
المعرّف الفريد للطلب، حدود المعدّل، ومكافحة الإساءة
- Idempotency — أرسل
Idempotency-Key؛ تُعيد المحاولة بنفس المفتاح نفس الطلب ولا تُجري مكالمة ثانية. - حدود لكل رقم ولكل جهة إصدار — تحدّ Wave من عدد الطلبات لرقم واحد ولكل مفتاح، وتحجب
الأرقام/البادئات المُسيئة، لمنع القصف الصوتي والاحتيال. عند تجاوز الحدّ →
429.

