<Gather> يُشغّل
التحية ويجمع ضغطة زرّ واحدة، ثم يُنفّذ الفرع الخاصّ بذلك الرقم. هذه الواجهة هي طبقة
التأليف فوق WaveML — تصف القائمة بصيغة JSON وتحوّلها Wave إلى مسار مكالمة.
هذه هي القائمة أحادية المستوى — تحية واحدة ومجموعة خيارات واحدة، ينهي كلٌّ منها
المكالمة أو يحوّلها. القوائم الفرعية المتداخلة وأداة البناء المرئية ميزات منفصلة
لاحقة. للتفريعات الكاملة اليوم، أعِد WaveML من نقطة النهاية
الخاصّة بك بدلاً من ذلك.
المصادقة والطبقات
تتطلّب جميع نقاط/v1/callflows مفتاح واجهة بنطاق callflows:read أو
callflows:write، أو جلسة لوحة تحكّم. يمكنك التأليف والاختبار بمفتاح
sandbox (sk_sandbox_)، أمّا تقديم قائمة إلى مكالمة واردة حقيقية فيتطلّب مفتاح
production (sk_live_) ومؤسسة بطبقة production ورقمًا مربوطًا (راجع ربط رقم أدناه).
تعريف القائمة
القائمة عبارة عنdefinition بصيغة JSON: تحية، وفروع لوحة المفاتيح، واحتياطيّ اختياريّ
عند عدم ضغط المتّصل أيّ زرّ.
التحية والإجراءات
التحية وكلّ إجراء فرع هو أحد هذه الأنواع. إجراء الفرع طرفيّ — ينهي المكالمة أو يحوّلها.أهداف
dial مقيّدة بأرقام سعوديّة (KSA) — حماية من الاحتيال، لأنّ <Dial> يجسر
المتّصل إلى مسار جديد.مُدخل الفرع (حمولة webhook خاصّتك)
امنح الفرع كائنinput، فتدمجه Wave في webhook باسم call.input
حين يختار المتّصل ذلك الخيار — نقطة ربط تكاملك لمعرفة ما اختاره المتّصل.
- حتّى 20 حقلًا؛ القيم نصّ (≤512) أو عدد أو قيمة منطقيّة.
- المفتاحان
call_idوdigitsمحجوزان (تضبطهما Wave) ويُرفضان.
إنشاء قائمة
POST /v1/callflows — أنشئ قائمة بالاسم. مرّر "activate": true لجعلها مباشرة فورًا.
يُعيد
201 Created القائمة، متضمّنةً سجلّ إصداراتها:
409 — استخدم PUT لإضافة إصدار بدلاً من ذلك.
سرد القوائم وجلبها
يسردGET /v1/callflows صفًّا واحدًا لكلّ قائمة (إصدارها النشط أو الأحدث):
GET /v1/callflows/{name} القائمة كاملةً — definition الإصدار النشط (أو
الأحدث) مع سجلّ versions الكامل. 404 إن لم تكن القائمة موجودة.
الإصدارات والاسترجاع
القوائم غير قابلة للتغيير وتُضاف فقط. التعديل لا يغيّر إصدارًا في مكانه أبدًا — بل يُضيف إصدارًا جديدًا.PUT /v1/callflows/{name}بتعريفdefinitionجديد (وactivateاختياريّ) يُضيف الإصدار التالي.404إن لم تكن القائمة موجودة.POST /v1/callflows/{name}/activateبـ{ "version": N }يجعل الإصدارNمباشرًا — الاسترجاع هو ببساطة تفعيل إصدار أقدم.404إن لم يكن ذلك الإصدار موجودًا.
ربط رقم
POST /v1/callflows/{name}/bind-number يوجّه أحد أرقام Wave لديك إلى الإصدار النشط
للقائمة — عندها تُنفّذ المكالمات الواردة إلى ذلك الرقم القائمة.
cURL
يُعيد
{ "bound": true }. الأرقام تُوفّرها Wave — راجع الأرقام الافتراضيّة.
إيقاف قائمة
DELETE /v1/callflows/{name} يوقف القائمة إيقافًا ناعمًا: تتوقّف عن خدمة المتّصلين ويُلغى
ربط أيّ رقم، لكن يُحفَظ سجلّ الإصدارات (يمكنك إعادة إنشائها لاحقًا). يُعيد
{ "retired": true }؛ و404 إن لم تكن القائمة موجودة.
webhook باسم call.input
حين يضغط المتّصل رقمًا، تُرسل Wave webhook باسم call.input. تحمل
data الأرقام المضغوطة digits إضافةً إلى كائن input لذلك الفرع — فيعرف نظامك
الخلفيّ بالضبط ما اختاره المتّصل:
المقاطع الصوتيّة
تُشغّل تحية أو إجراءplay ملفًّا مسجّلًا بدلاً من TTS — مناسب لتحية مُنتَجة، ويتجاوز
تأخّر التركيب الصوتيّ. ارفع الملفّ أوّلًا، ثم أشِر إلى audio_ref المُعاد.
POST /v1/callflows/audio يأخذ ملفّ WAV مُرمَّزًا بـ base64 (يُوصى بـ 8 kHz أحاديّ
16-bit PCM — جودة الهاتف) ويُعيد audio_ref مُستضافًا لدى Wave:
cURL
audio_ref في play:
رفع الملفّات الصوتيّة قيد الإطلاق. حتّى تفعيله لحسابك، يُعيد الرفع
503 وتستخدم
القوائم تحيات say (TTS). يجب أن يكون audio_ref ملفًّا رفعته أنت — تُرفض
الروابط العشوائيّة.
