> ## Documentation Index
> Fetch the complete documentation index at: https://docs.wave.sa/llms.txt
> Use this file to discover all available pages before exploring further.

# كيف يعمل الصوت

> شكل مكالمة Wave الصوتيّة — الأرقام، ومسارات المكالمة، والأحداث.

تتكوّن أيّ مكالمة صوتيّة على Wave من ثلاثة أجزاء:

<CardGroup cols={3}>
  <Card title="الأرقام" icon="hashtag">
    الرقم (أو مستخدم SIP) هو نقطة الدخول — يتّصل به أحدهم، أو تُجري أنت مكالمة منه.
  </Card>

  <Card title="مسارات المكالمة" icon="diagram-project">
    يقرّر **مسار المكالمة** ما تفعله المكالمة، مكتوبًا بلغة [WaveML](/ar/voice/waveml) —
    تشغيل رسالة، جمع رقم، تحويل، تسجيل، أو تسليم المكالمة لوكيل ذكاء اصطناعيّ.
  </Card>

  <Card title="الأحداث" icon="bell">
    يُرسَل كلّ تغيّر في الحالة (رنين، ردّ، انتهاء، ضغطة زرّ) إلى
    [الـ webhook endpoint](/ar/webhooks) الخاصّ بك.
  </Card>
</CardGroup>

## دورة حياة المكالمة

<Steps>
  <Step title="تبدأ المكالمة">
    إمّا أن يتّصل أحدهم برقمك (**وارد**)، أو تُجري أنت مكالمة عبر
    [Callbacks API](/ar/quickstart) (**صادر**). تحصل كلّ مكالمة على مُعرّف ثابت
    `wave_call_id` (UUID) يظهر في كلّ أحداثها وفي سجلّات المكالمات.
  </Step>

  <Step title="يشغّل المحرّك مسار مكالمتك">
    يجلب محرّك Wave الصوتيّ مسار مكالمتك وينفّذه أمرًا بأمر. وإن احتاج المسار إلى
    مُدخَل (رقم من لوحة المفاتيح، أو نتيجة وكيل ذكاء اصطناعيّ) يتوقّف المحرّك، يجمعه،
    ثمّ يُكمِل — راجِع الحلقة أدناه.
  </Step>

  <Step title="تصل الأحداث إلى الـ webhook">
    مع تقدّم المكالمة، يُرسِل Wave أحداثًا موقّعة إلى نقطتك: `call.initiated`،
    `call.answered`، `call.ended`، و — عند اختيار المتّصل من قائمة — `call.input`.
  </Step>

  <Step title="تظهر المكالمة في سجلّاتك">
    عند انتهائها، تظهر المكالمة (مع المدّة والحالة وأيّ مؤشّر تسجيل) في
    `GET /v1/calls`.
  </Step>
</Steps>

## حلقة مسار المكالمة

تعمل مسارات المكالمة عبر **حلقة مُجزّأة**. حين يحتاج المحرّك إلى تعليمات يُرسِل إلى
مسارك طلب JSON؛ فتردّ أنت بمستند [WaveML](/ar/voice/waveml). الحقل `node_id` على كلّ
أمر هو مؤشّر يُعيده المحرّك إليك، فيعرف مسارك دائمًا أين وصلت المكالمة.

```json theme={null}
// ما يُرسِله المحرّك إلى مسارك
{
  "wave_call_id": "27d6dd39-f9e8-4fed-b378-a830b23bacd3",
  "src_number": "0115209300",
  "dst_number": "9001",
  "direction": "inbound",
  "node_id": "",              // المؤشّر — فارغ في الطلب الأوّل
  "dtmf": "",                 // الأرقام التي جمعها <Gather> السابق
  "aiagent_result": ""        // نتيجة <AIAgent> السابق
}
```

تردّ بـ WaveML. عند `<Gather>` تعود أرقام المتّصل في الطلب التالي عبر `dtmf`؛ وعند
`<AIAgent>` تعود النتيجة عبر `aiagent_result`. تفرّع بناءً على `node_id` والمُدخَل.

<Note>
  **أين تُخزّن المسارات اليوم.** ينفّذ المحرّك WaveML، لكن مسارات المكالمة تُهيَّأ
  حاليًّا لحسابك (لوحة التحكّم + جهة اتّصالك في Wave) لا عبر API عامّ — وواجهة تأليف
  المسارات على خارطة الطريق. أمّا ما عدا ذلك — إجراء المكالمات، واستقبال الأحداث،
  وقراءة السجلّات، وتخصيص الأرقام، وإدارة الطوابير — فمتاح اليوم.
</Note>

## الأحداث التي يمكنك الاشتراك بها

سجّل endpoint في [Webhooks](/ar/webhooks) واشترك في أحداث الصوت:

| الحدث                                                             | متى                                                     |
| ----------------------------------------------------------------- | ------------------------------------------------------- |
| `call.initiated`                                                  | أُجريت المكالمة / وصلت.                                 |
| `call.answered`                                                   | ردّ الطرف الآخر.                                        |
| `call.ended`                                                      | اكتملت المكالمة.                                        |
| `call.missed` · `call.timeout` · `call.failed` · `call.cancelled` | لم تتّصل المكالمة.                                      |
| `call.input`                                                      | ضغط المتّصل زرًّا في `<Gather>` — يحمل `{ digits, … }`. |

## ما يمكنك بناؤه اليوم

<CardGroup cols={2}>
  <Card title="مرجع WaveML" icon="code" href="/ar/voice/waveml">
    كلّ أمر يمكن لمسار المكالمة استخدامه.
  </Card>

  <Card title="الأرقام الافتراضيّة" icon="user-tag" href="/ar/voice/virtual-numbers">
    امنح كلّ مستخدم من مستخدميك رقمه السعوديّ الخاصّ.
  </Card>

  <Card title="الطوابير" icon="users-line" href="/ar/voice/queues">
    وجّه المتّصلين إلى الوكلاء وأدِر من سجّل دخوله.
  </Card>

  <Card title="Webhooks" icon="webhook" href="/ar/webhooks">
    استقبِل أحداث المكالمات على نقطتك.
  </Card>
</CardGroup>
