---
title: "ਈਵੈਂਟ ਕੈਟਾਲਾਗ"
description: "ThunderPhone ਵੱਲੋਂ ਭੇਜੇ ਜਾਣ ਵਾਲੇ ਸਾਰੇ webhook ਈਵੈਂਟ ਕਿਸਮਾਂ।"
---

ਹਰ ਵੈੱਬਹੁੱਕ ਬਾਡੀ ਵਿੱਚ ਇੱਕ `type` ਫੀਲਡ ਹੁੰਦੀ ਹੈ ਜਿਸਦਾ ਮੁੱਲ ਇਸ ਸਫ਼ੇ ਦੇ ਇਵੈਂਟ
ਕਿਸਮਾਂ ਵਿੱਚੋਂ ਇੱਕ ਹੁੰਦਾ ਹੈ। ਜਦੋਂ ਤੁਸੀਂ ਕਿਸੇ
[ਐਂਡਪੌਇੰਟ](/pa/webhooks/endpoints) ਨੂੰ ਸਬਸਕ੍ਰਾਈਬ ਕਰਦੇ ਹੋ, ਤਾਂ `events` ਐਰੇ ਵਿੱਚ ਉਹ
ਇਵੈਂਟ ਕਿਸਮਾਂ ਹੋਣੀਆਂ ਚਾਹੀਦੀਆਂ ਹਨ ਜੋ ਤੁਸੀਂ ਚਾਹੁੰਦੇ ਹੋ (ਜਾਂ ਹਰ ਚੀਜ਼ ਲਈ ਸਬਸਕ੍ਰਾਈਬ ਕਰਨ ਲਈ ਇਹ ਖਾਲੀ ਹੋਵੇ —
ਸਿਵਾਏ ਪ੍ਰਤੀ-ਟਰਨ ਇਵੈਂਟਾਂ [`telephony.turn`](#telephony-turn) /
[`web.turn`](#web-turn) ਦੇ, ਜੋ ਸਿਰਫ਼ ਉਹਨਾਂ ਐਂਡਪੌਇੰਟਾਂ ਨੂੰ ਭੇਜੇ ਜਾਂਦੇ ਹਨ
ਜੋ ਉਨ੍ਹਾਂ ਨੂੰ ਸਪਸ਼ਟ ਤੌਰ 'ਤੇ ਨਾਮਿਤ ਕਰਦੇ ਹਨ)।

ਇਹ ਇਵੈਂਟ ਦੋ ਡਿਲੀਵਰੀ ਸ਼ੈਲੀਆਂ ਰਾਹੀਂ ਭੇਜੇ ਜਾਂਦੇ ਹਨ:

* **ਐਂਡਪੌਇੰਟ ਡਿਲੀਵਰੀਆਂ** ਹਮੇਸ਼ਾ [ਮੁੜ-ਕੋਸ਼ਿਸ਼ਾਂ](/pa/webhooks/overview) ਦੇ ਨਾਲ **ਨਾ-ਰੋਕਣ ਵਾਲੀਆਂ**
  ਸੂਚਨਾਵਾਂ ਹੁੰਦੀਆਂ ਹਨ: ਕੋਈ ਵੀ 2xx ਜਵਾਬ ਦਿਓ; ਐਨਵਲਪ ਵਿੱਚ
  `event_id` ਹੁੰਦਾ ਹੈ ਜਿਸਦੇ ਆਧਾਰ 'ਤੇ ਡੀਡੁਪਲੀਕੇਟ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।
* **ਰੋਕਣ ਵਾਲੇ** ਲੈਣ-ਦੇਣ ਸਿਰਫ਼
  [ਪੁਰਾਣੇ ਸਿੰਗਲ-URL ਵੈੱਬਹੁੱਕ](/pa/webhooks/overview) 'ਤੇ ਚੱਲਦੇ ਹਨ: 
  [`telephony.incoming` / `web.incoming`](/pa/webhooks/call-incoming)
  ਕੌਂਫਿਗਰੇਸ਼ਨ ਬੇਨਤੀ (ਵੈੱਬਹੁੱਕ-ਮੋਡ ਨੰਬਰ ਅਤੇ ਵਿਜਟ ਕੁੰਜੀਆਂ, 10 s
  ਟਾਈਮਆਉਟ) ਅਤੇ ਵੈੱਬਹੁੱਕ-ਮੋਡ
  [ਟੂਲ ਡਿਸਪੈਚ](/pa/tools/overview)। ਤੁਹਾਡਾ ਜਵਾਬ
  ਚੱਲ ਰਹੀ ਕਾਲ ਨੂੰ ਆਕਾਰ ਦਿੰਦਾ ਹੈ।

ਹੇਠਾਂ ਦਿੱਤੇ ਉਦਾਹਰਨ ਪੇਲੋਡ ਆਪਣੇ ਵਾਇਰ ਕ੍ਰਮ ਵਿੱਚ ਐਂਡਪੌਇੰਟ ਐਨਵਲਪ ਦਿਖਾਉਂਦੇ ਹਨ
(ਕੁੰਜੀਆਂ ਵਰਣਮਾਲਾ ਅਨੁਸਾਰ ਕ੍ਰਮਬੱਧ ਹਨ: `data`, `event_id`, `type`); ਪੁਰਾਣੀਆਂ
ਡਿਲੀਵਰੀਆਂ ਵਿੱਚ `event_id` ਤੋਂ ਬਿਨਾਂ ਉਹੀ `data` ਹੁੰਦਾ ਹੈ।

## ਕਾਲ ਇਵੈਂਟ

### `telephony.incoming`

ਜਦੋਂ ਇੱਕ ਇਨਬਾਊਂਡ ਕਾਲ ਤੁਹਾਡੇ ਕਿਸੇ
[ਫੋਨ ਨੰਬਰ](/api-reference/phone-numbers) ਤੱਕ ਪਹੁੰਚਦੀ ਹੈ ਤਾਂ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ। ਐਂਡਪੌਇੰਟ ਡਿਲਿਵਰੀਆਂ
ਹਰ ਇਨਬਾਊਂਡ ਕਾਲ ਲਈ ਭੇਜੀਆਂ ਜਾਣ ਵਾਲੀਆਂ ਫਾਇਰ-ਐਂਡ-ਫਰਗੈਟ ਸੂਚਨਾਵਾਂ ਹਨ, ਭਾਵੇਂ
ਨੰਬਰ ਏਜੰਟ-ਸੰਰਚਿਤ ਹੋਵੇ ਜਾਂ ਵੈੱਬਹੁੱਕ-ਸੰਰਚਿਤ। ਕਿਸੇ ਨਿਰਧਾਰਤ ਏਜੰਟ ਤੋਂ ਬਿਨਾਂ
ਨੰਬਰਾਂ ਨੂੰ ਲੈਗੇਸੀ ਵੈੱਬਹੁੱਕ ਉੱਤੇ **ਬਲਾਕਿੰਗ** ਸੰਰਚਨਾ ਬੇਨਤੀ ਵੀ ਮਿਲਦੀ ਹੈ — ਪੂਰੀ
ਬੇਨਤੀ / ਜਵਾਬ ਸਕੀਮਾ ਲਈ
[`telephony.incoming` / `web.incoming`](/pa/webhooks/call-incoming) ਵੇਖੋ।

```json
{
  "data": {
    "call_id": 987654321,
    "from_number": "+14155550199",
    "to_number": "+15551234567"
  },
  "event_id": "3f6b2ad0-1c9e-4a57-9f2b-8f6f0f9d2f11",
  "type": "telephony.incoming"
}
```

| ਫੀਲਡ | ਕਿਸਮ | ਵੇਰਵਾ |
|-------|------|-------------|
| `agent_id` | integer \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਨਿਰਧਾਰਤ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |
| `agent_name` | string \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਨਿਰਧਾਰਤ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |

### `telephony.complete`

ਜਦੋਂ ਇਨਬਾਊਂਡ ਜਾਂ ਆਉਟਬਾਊਂਡ ਟੈਲੀਫੋਨੀ ਕਾਲ ਸਮਾਪਤ ਹੁੰਦੀ ਹੈ ਤਾਂ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ। ਗੈਰ-ਬਲਾਕਿੰਗ।
ਇਸ ਵਿੱਚ ਟ੍ਰਾਂਸਕ੍ਰਿਪਟ, ਉਪਲਬਧ ਹੋਣ 'ਤੇ ਰਿਕਾਰਡਿੰਗ URL, ਅਤੇ ਬਿਲਿੰਗ ਸੰਖੇਪ ਸ਼ਾਮਲ ਹੁੰਦੇ ਹਨ।
ਪੇਲੋਡ ਸਕੀਮਾ ਲਈ
[`telephony.complete` / `web.complete`](/pa/webhooks/call-complete) ਵੇਖੋ।

| ਫੀਲਡ | ਕਿਸਮ | ਵੇਰਵਾ |
|-------|------|-------------|
| `agent_id` | integer \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਨਿਰਧਾਰਤ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |
| `agent_name` | string \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਨਿਰਧਾਰਤ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |

### `telephony.tool`

ਟੈਲੀਫੋਨੀ ਕਾਲ ਵੱਲੋਂ
[ਫੰਕਸ਼ਨ ਟੂਲ](/pa/tools/overview) ਨੂੰ ਚਲਾਉਣ ਤੋਂ ਬਾਅਦ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ। ਗੈਰ-ਬਲਾਕਿੰਗ ਆਡਿਟ ਸੂਚਨਾ —
ਇਹ ਇਵੈਂਟ ਡਿਲਿਵਰ ਹੋਣ ਤੱਕ ਟੂਲ ਪਹਿਲਾਂ ਹੀ ਚੱਲ ਚੁੱਕਾ ਹੁੰਦਾ ਹੈ; ਇਹ
ਤੁਹਾਡੇ ਆਪਣੇ ਫੰਕਸ਼ਨ ਟੂਲਾਂ ਨੂੰ ਕਵਰ ਕਰਦਾ ਹੈ (ਬਿਲਟ-ਇਨ, ਗਿਆਨ-ਅਧਾਰਿਤ, ਐਪ-ਕਨੈਕਸ਼ਨ,
ਜਾਂ MCP ਟੂਲਾਂ ਨੂੰ ਨਹੀਂ)।

```json
{
  "data": {
    "arguments": { "date": "2026-04-21" },
    "call_id": 987654321,
    "from_number": "+14155550199",
    "response": {
      "response": { "available_slots": ["9:00 AM", "2:00 PM"] },
      "status": 200
    },
    "to_number": "+15551234567",
    "tool_name": "search_appointments"
  },
  "event_id": "1f0a7c3e-52d4-4a0e-8f4b-b1a6a1c0d9e2",
  "type": "telephony.tool"
}
```

`response` ਚਲਾਇਆ ਗਿਆ ਨਤੀਜਾ ਹੈ: ਸਫਲਤਾ 'ਤੇ `{"status": <http status>,
"response": <your endpoint's JSON>}`, ਜਾਂ ਅਸਫਲਤਾ 'ਤੇ
`{"status": <status>, "error": "<message>"}`।

| ਫੀਲਡ | ਕਿਸਮ | ਵੇਰਵਾ |
|-------|------|-------------|
| `agent_id` | integer \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਨਿਰਧਾਰਤ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |
| `agent_name` | string \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਨਿਰਧਾਰਤ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |

### `telephony.turn`

ਟੈਲੀਫੋਨੀ ਕਾਲ **ਚੱਲ ਰਹੀ ਹੋਣ** ਦੌਰਾਨ, ਹਰ ਬੋਲੀ ਵਾਲੀ ਟਰਨ ਲਈ
ਜਿਵੇਂ ਹੀ ਉਹ ਹੁੰਦੀ ਹੈ, ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ — ਏਜੰਟ ਦੇ ਬੋਲੇ ਗਏ ਸੰਪੂਰਨ ਜਵਾਬ ਅਤੇ
ਕਾਲਰ ਦੀਆਂ ਟ੍ਰਾਂਸਕ੍ਰਾਈਬ ਕੀਤੀਆਂ ਟਰਨਾਂ। ਤੁਹਾਨੂੰ ਪੋਲਿੰਗ ਕਰਨ ਦੀ ਬਜਾਏ ਸਧਾਰਨ ਵੈੱਬਹੁੱਕਾਂ ਰਾਹੀਂ
ਲਾਈਵ ਗੱਲਬਾਤ ਦਾ ਪਾਲਣ ਕਰਨ ਦਿੰਦਾ ਹੈ
[`GET /v1/calls/{call_id}/transcript`](/api-reference/calls#get-transcript)।
ਗੈਰ-ਬਲਾਕਿੰਗ।

<Note>
  **ਸਪੱਸ਼ਟ ਸਬਸਕ੍ਰਿਪਸ਼ਨ ਲਾਜ਼ਮੀ ਹੈ।** ਹਰ ਹੋਰ ਇਵੈਂਟ ਕਿਸਮ ਤੋਂ ਉਲਟ,
  ਟਰਨ ਇਵੈਂਟ ਕਦੇ ਵੀ ਖਾਲੀ `events` ਐਰੇ ਰਾਹੀਂ ਨਹੀਂ ਭੇਜੇ ਜਾਂਦੇ
  (ਸਭ ਲਈ ਸਬਸਕ੍ਰਾਈਬ ਕਰੋ)। ਐਂਡਪੌਇੰਟ ਨੂੰ ਇਹ ਸਿਰਫ਼ ਉਦੋਂ ਮਿਲਦੇ ਹਨ ਜਦੋਂ ਉਸਦੀ `events`
  ਸੂਚੀ ਵਿੱਚ ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ `telephony.turn` / `web.turn` ਸ਼ਾਮਲ ਹੋਵੇ।
</Note>

```json
{
  "data": {
    "call_id": 987654321,
    "entry_type": "completion",
    "from_number": "+14155550199",
    "position": 7,
    "role": "assistant",
    "start_ms": 15200,
    "text": "How many employees does your company have?",
    "to_number": "+15551234567"
  },
  "event_id": "8d3f5a2c-7b1e-4c9a-b6d0-2e4f6a8c0d1e",
  "type": "telephony.turn"
}
```

| ਫੀਲਡ | ਕਿਸਮ | ਵੇਰਵਾ |
|-------|------|-------------|
| `agent_id` | integer \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਨਿਰਧਾਰਤ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |
| `agent_name` | string \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਨਿਰਧਾਰਤ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |
| `position` | integer | ਕਾਲ ਇਤਿਹਾਸ ਵਿੱਚ ਟਰਨ ਦਾ ਸੂਚਕਾਂਕ — ਕ੍ਰਮਬੱਧ ਕਰਨ ਲਈ ਇੱਕ ਸਥਿਰ ਪਛਾਣ |
| `role` | string | `assistant` (ਏਜੰਟ ਦੀ ਬੋਲੀ) ਜਾਂ `user` (ਕਾਲਰ ਦੀ ਬੋਲੀ) |
| `text` | string | ਜਾਰੀ ਕਰਨ ਵੇਲੇ ਜਾਣਿਆ ਟਰਨ ਦਾ ਟ੍ਰਾਂਸਕ੍ਰਿਪਟ ਪਾਠ |
| `entry_type` | string | ਅੰਦਰੂਨੀ ਇਤਿਹਾਸ ਐਂਟਰੀ ਕਿਸਮ: `completion` (ਏਜੰਟ), ਜਾਂ `user_turn` / `span` (ਕਾਲਰ) |
| `start_ms`, `end_ms` | integer | ਕਾਲ ਸ਼ੁਰੂ ਹੋਣ ਤੋਂ ਬਾਅਦ ਮਿਲੀਸਕਿੰਟ ਵਿੱਚ ਆਡੀਓ ਆਫਸੈੱਟ; ਸਿਰਫ਼ ਉਦੋਂ ਮੌਜੂਦ ਹੁੰਦੇ ਹਨ ਜਦੋਂ ਜਾਰੀ ਕਰਨ ਵੇਲੇ ਪਲੇਆਉਟ ਟਾਈਮਿੰਗ ਪਹਿਲਾਂ ਹੀ ਜਾਣੀ ਹੋਵੇ |

<Note>
  ਡਿਲਿਵਰੀ ਘੱਟੋ-ਘੱਟ ਇੱਕ ਵਾਰ ਹੁੰਦੀ ਹੈ ਅਤੇ ਟਰਨਾਂ **ਕ੍ਰਮ ਤੋਂ ਬਾਹਰ** ਆ ਸਕਦੀਆਂ ਹਨ:
  ਐਨਵਲਪ ਦੇ `event_id` ਉੱਤੇ ਡੀਡੁਪ ਕਰੋ ਅਤੇ `position` ਅਨੁਸਾਰ ਕ੍ਰਮਬੱਧ ਕਰੋ। ਕਾਲਰ
  ਟ੍ਰਾਂਸਕ੍ਰਿਪਟ ਜਾਰੀ ਹੋਣ ਤੋਂ ਬਾਅਦ ਵੀ ਸੁਧਰ ਸਕਦੇ ਹਨ; ਕਾਲ ਤੋਂ ਬਾਅਦ ਵਾਲਾ
  [`telephony.complete`](/pa/webhooks/call-complete) ਟ੍ਰਾਂਸਕ੍ਰਿਪਟ
  ਅਧਿਕਾਰਤ ਹੈ। ਸਿਰਫ਼ ਬੋਲੀਆਂ ਗਈਆਂ ਟਰਨਾਂ ਜਾਰੀ ਹੁੰਦੀਆਂ ਹਨ — ਟੂਲ ਕਾਲਾਂ, ਵਿਸਪਰ ਅਤੇ
  ਹੋਰ ਅੰਦਰੂਨੀ ਐਂਟਰੀਆਂ ਕਦੇ ਵੀ ਇਸ ਸਟ੍ਰੀਮ ਉੱਤੇ ਨਹੀਂ ਦਿਸਦੀਆਂ।
</Note>

### `web.incoming`

`telephony.incoming` ਦਾ ਵੈੱਬ-ਚੈਨਲ ਸਮਕੱਖ, ਜੋ ਇੱਕ
[ਵੈੱਬ ਵਿਜਟ](/pa/widget/overview) ਸੈਸ਼ਨ ਜਾਂ ਬਿਲਡਰ ਮਾਈਕ ਟੈਸਟ ਕਾਲ ਸ਼ੁਰੂ ਹੋਣ 'ਤੇ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ।
ਐਂਡਪੌਇੰਟ ਡਿਲਿਵਰੀਆਂ ਹਰ ਵੈੱਬ ਸੈਸ਼ਨ ਲਈ ਫਾਇਰ-ਐਂਡ-ਫਰਗੈਟ ਹੁੰਦੀਆਂ ਹਨ।
`mode="webhook"` ਵਿੱਚ ਪ੍ਰਕਾਸ਼ਯੋਗ ਕੁੰਜੀਆਂ ਨੂੰ ਲੈਗੇਸੀ ਵੈੱਬਹੁੱਕ ਉੱਤੇ
**ਬਲਾਕਿੰਗ** ਸੰਰਚਨਾ ਬੇਨਤੀ ਵੀ ਮਿਲਦੀ ਹੈ — ਉਸ ਬਲਾਕਿੰਗ ਬੇਨਤੀ ਦਾ ਆਕਾਰ ਵੱਖਰਾ ਹੁੰਦਾ ਹੈ
(`origin_domain`, `publishable_key_prefix`; ਕੋਈ ਫੋਨ ਨੰਬਰ ਨਹੀਂ)। ਵੇਖੋ
[`telephony.incoming` / `web.incoming`](/pa/webhooks/call-incoming)।

```json
{
  "data": {
    "call_id": 987654322,
    "from_number": "web",
    "origin_domain": "https://example.com",
    "publishable_key_prefix": "pk_live_a1b2",
    "to_number": "+15551234567"
  },
  "event_id": "9a2b4c6d-8e0f-4a1b-9c2d-3e4f5a6b7c8d",
  "type": "web.incoming"
}
```

`from_number` ਹਮੇਸ਼ਾ ਸ਼ਾਬਦਿਕ `"web"` ਹੁੰਦਾ ਹੈ। ਵੈੱਬਹੁੱਕ-ਮੋਡ ਵਿਜਟ
ਸੈਸ਼ਨਾਂ ਲਈ `to_number` ਖਾਲੀ ਹੁੰਦਾ ਹੈ (ਸੈਸ਼ਨ ਦਾ ਏਜੰਟ ਨੰਬਰ ਸੰਰਚਨਾ ਤੋਂ
ਬਾਅਦ ਨਿਰਧਾਰਤ ਹੁੰਦਾ ਹੈ); ਬਿਲਡਰ ਮਾਈਕ ਟੈਸਟ ਕਾਲਾਂ ਲਈ `origin_domain` ਅਤੇ
`publishable_key_prefix` ਖਾਲੀ ਹੁੰਦੇ ਹਨ।

| ਫੀਲਡ | ਕਿਸਮ | ਵੇਰਵਾ |
|-------|------|-------------|
| `agent_id` | integer \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਨਿਰਧਾਰਤ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |
| `agent_name` | string \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਨਿਰਧਾਰਤ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |

### `web.complete`

`telephony.complete` ਦਾ ਵੈੱਬ-ਚੈਨਲ ਸਮਕੱਖ, ਜੋ ਵੈੱਬ ਵਿਜਟ ਕਾਲਾਂ
(`direction: "web"`) ਅਤੇ ਬਿਲਡਰ ਮਾਈਕ ਟੈਸਟ ਕਾਲਾਂ
(`direction: "test"`) ਨੂੰ ਕਵਰ ਕਰਦਾ ਹੈ। ਗੈਰ-ਬਲਾਕਿੰਗ। ਇਸਦਾ ਪੇਲੋਡ ਆਕਾਰ
[`telephony.complete`](/pa/webhooks/call-complete) ਵਰਗਾ ਹੀ ਹੈ, ਨਾਲ ਹੀ `origin_domain`,
ਅਤੇ `from_number` ਨੂੰ `"web"` 'ਤੇ ਸੈੱਟ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।

| ਫੀਲਡ | ਕਿਸਮ | ਵੇਰਵਾ |
|-------|------|-------------|
| `agent_id` | integer \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਨਿਰਧਾਰਤ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |
| `agent_name` | string \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਨਿਰਧਾਰਤ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |

<Note>
  ਲੈਗੇਸੀ ਸਿੰਗਲ-URL ਵੈੱਬਹੁੱਕ ਉੱਤੇ, ਬਿਲਡਰ ਮਾਈਕ ਟੈਸਟ ਕਾਲਾਂ ਇਤਿਹਾਸਕ ਤੌਰ 'ਤੇ
  `telephony.complete` ਵਜੋਂ ਰਿਪੋਰਟ ਹੁੰਦੀਆਂ ਹਨ — ਉੱਥੇ ਸਿਰਫ਼ `direction:
  "web"` ਕਾਲਾਂ ਹੀ `web.complete` ਕਿਸਮ ਵਰਤਦੀਆਂ ਹਨ। ਐਂਡਪੌਇੰਟ ਸਿਸਟਮ
  ਵੈੱਬ ਅਤੇ ਟੈਸਟ ਦੋਵੇਂ ਕਾਲਾਂ ਨੂੰ `web.*` ਨਾਲ ਮੈਪ ਕਰਦਾ ਹੈ। ਇਤਿਹਾਸਕ ਪੇਲੋਡਾਂ ਵਿੱਚ
  ਲੈਗੇਸੀ `direction` ਮੁੱਲ `widget` ਜਾਂ `mic` ਹੋ ਸਕਦੇ ਹਨ।
</Note>

### `web.tool`

`telephony.tool` ਦਾ ਵੈੱਬ-ਚੈਨਲ ਸਮਕੱਖ। `data` ਵਿੱਚ
`from_number` / `to_number` ਦੀ ਥਾਂ `origin_domain` ਹੁੰਦਾ ਹੈ।

| ਫੀਲਡ | ਕਿਸਮ | ਵੇਰਵਾ |
|-------|------|-------------|
| `agent_id` | integer \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਨਿਰਧਾਰਤ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |
| `agent_name` | string \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਨਿਰਧਾਰਤ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |

### `web.turn`

[`telephony.turn`](#telephony-turn) ਦਾ ਵੈੱਬ-ਚੈਨਲ ਸਮਕੱਖ,
ਜੋ ਵੈੱਬ ਵਿਜਟ ਕਾਲਾਂ ਅਤੇ ਬਿਲਡਰ ਮਾਈਕ ਟੈਸਟ ਕਾਲਾਂ ਨੂੰ ਕਵਰ ਕਰਦਾ ਹੈ। ਪੇਲੋਡ ਦਾ ਆਕਾਰ ਉਹੀ ਹੈ,
ਪਰ `from_number` / `to_number` ਦੀ ਥਾਂ `origin_domain` ਹੁੰਦਾ ਹੈ।
`telephony.turn` ਵਾਂਗ, ਇਸ ਲਈ ਵੀ ਇੱਕ **ਸਪੱਸ਼ਟ ਸਬਸਕ੍ਰਿਪਸ਼ਨ** ਲੋੜੀਂਦੀ ਹੈ —
ਇਹ ਕਦੇ ਵੀ ਖਾਲੀ `events` ਐਰੇ ਰਾਹੀਂ ਡਿਲਿਵਰ ਨਹੀਂ ਹੁੰਦਾ।

| ਫੀਲਡ | ਕਿਸਮ | ਵੇਰਵਾ |
|-------|------|-------------|
| `agent_id` | integer \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਨਿਰਧਾਰਤ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |
| `agent_name` | string \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਨਿਰਧਾਰਤ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |

---

## ਆਵਾਜ਼ ਇਵੈਂਟ

ਕਸਟਮ ਆਵਾਜ਼ ਬਣਾਉਣਾ ਅਸਿੰਕ੍ਰੋਨਸ ਹੁੰਦਾ ਹੈ। ਇਹ ਨਾਨ-ਬਲਾਕਿੰਗ ਇਵੈਂਟ ਤੁਹਾਨੂੰ
ਪੋਲਿੰਗ ਕਰਨ ਦੀ ਬਜਾਏ ਅੰਤਿਮ ਨਤੀਜੇ 'ਤੇ ਪ੍ਰਤੀਕਿਰਿਆ ਕਰਨ ਦਿੰਦੇ ਹਨ
[ਕਲੋਨ ਵੇਰਵਾ ਐਂਡਪੌਇੰਟ](/api-reference/custom-voices#list-and-retrieve-clones)।

`voice.ready` ਅਤੇ `voice.failed` ਸਿਰਫ਼ `events: []` ਵਾਲੇ ਸੰਗਠਨ-ਪੱਧਰੀ
ਐਂਡਪੌਇੰਟ 'ਤੇ ਭੇਜੇ ਜਾਂਦੇ ਹਨ। ਇਨ੍ਹਾਂ ਨੂੰ ਸਪਸ਼ਟ ਇਵੈਂਟ ਫਿਲਟਰਾਂ ਵਜੋਂ ਚੁਣਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ।

### `voice.ready`

ਜਦੋਂ ਕਸਟਮ ਆਵਾਜ਼ ਦੀ ਪ੍ਰੋਸੈਸਿੰਗ ਪੂਰੀ ਹੋ ਜਾਂਦੀ ਹੈ ਅਤੇ ਇਸਨੂੰ ਕਿਸੇ
ਏਜੰਟ ਨੂੰ ਸੌਂਪਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਤਾਂ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ।

```json
{
  "data": {
    "voice": {
      "created_at": "2026-07-30T14:12:08.317Z",
      "display_name": "Support voice",
      "failure_reason": "",
      "gender": "female",
      "id": "cv_2f6f90b0e9a34ee8b39be7d1",
      "language": "en",
      "name": "custom:cv_2f6f90b0e9a34ee8b39be7d1",
      "status": "ready",
      "updated_at": "2026-07-30T14:13:31.605Z"
    }
  },
  "event_id": "2d5f0a61-e9b5-4a3c-b684-29d7d9e4b214",
  "type": "voice.ready"
}
```

### `voice.failed`

ਜਦੋਂ ਕਸਟਮ ਆਵਾਜ਼ ਦੀ ਪ੍ਰੋਸੈਸਿੰਗ ਸਥਾਈ ਅਸਫਲਤਾ ਤੱਕ ਪਹੁੰਚਦੀ ਹੈ, ਤਾਂ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ।

```json
{
  "data": {
    "reason": "audio sample could not be processed",
    "voice": {
      "created_at": "2026-07-30T14:12:08.317Z",
      "display_name": "Support voice",
      "failure_reason": "audio sample could not be processed",
      "gender": "female",
      "id": "cv_2f6f90b0e9a34ee8b39be7d1",
      "language": "en",
      "name": "custom:cv_2f6f90b0e9a34ee8b39be7d1",
      "status": "failed",
      "updated_at": "2026-07-30T14:13:31.605Z"
    }
  },
  "event_id": "3493e985-1a75-4f77-a10a-e74af440cd31",
  "type": "voice.failed"
}
```

| ਫੀਲਡ | ਕਿਸਮ | ਵੇਰਵਾ |
|-------|------|-------------|
| `voice.id` | ਸਟ੍ਰਿੰਗ | ਕਸਟਮ ਆਵਾਜ਼ ਦਾ ਜਨਤਕ ID |
| `voice.name` | ਸਟ੍ਰਿੰਗ | `custom:<public_id>` ਫਾਰਮ ਵਿੱਚ ਏਜੰਟ ਆਵਾਜ਼ ਦਾ ਮੁੱਲ |
| `voice.display_name` | ਸਟ੍ਰਿੰਗ | ਸੰਗਠਨ ਲਈ ਦਿਖਾਈ ਦੇਣ ਵਾਲਾ ਆਵਾਜ਼ ਨਾਮ |
| `voice.language` | ਸਟ੍ਰਿੰਗ | ਕਲੋਨ ਦਾ ਇਕੱਲਾ ਭਾਸ਼ਾ ਕੋਡ |
| `voice.gender` | ਸਟ੍ਰਿੰਗ | `male`, `female`, ਜਾਂ ਖਾਲੀ ਸਟ੍ਰਿੰਗ |
| `voice.status` | ਸਟ੍ਰਿੰਗ | `voice.ready` ਲਈ `ready`; `voice.failed` ਲਈ `failed` |
| `voice.failure_reason` | ਸਟ੍ਰਿੰਗ | ਸਫਲਤਾ ਹੋਣ 'ਤੇ ਖਾਲੀ; ਅਸਫਲਤਾ ਹੋਣ 'ਤੇ ਪ੍ਰੋਸੈਸਿੰਗ ਅਸਫਲਤਾ ਦਾ ਵੇਰਵਾ |
| `voice.created_at`, `voice.updated_at` | ਟਾਈਮਸਟੈਂਪ | ISO 8601 ਟਾਈਮਸਟੈਂਪ |
| `reason` | ਸਟ੍ਰਿੰਗ | ਅਸਫਲਤਾ ਦਾ ਵੇਰਵਾ; ਸਿਰਫ਼ `voice.failed` ਵਿੱਚ ਮੌਜੂਦ |

---

## ਗੁਣਵੱਤਾ ਇਵੈਂਟ

### `call.graded`

ਜਦੋਂ ਵੀ ਕਿਸੇ ਕਾਲ ਲਈ [AI ਗ੍ਰੇਡਿੰਗ ਰਨ](/api-reference/calls#ai-call-grading)
ਪੂਰਾ ਹੁੰਦਾ ਹੈ, ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ। ਨਾਨ-ਬਲਾਕਿੰਗ।

```json
{
  "data": {
    "call_id": 987654321,
    "grade": {
      "call_outcome": "success",
      "created_at": "2026-04-20T18:25:11.002Z",
      "detected_issues": [],
      "graded_at": "2026-04-20T18:25:11.002Z",
      "grader_model": "heuristic-v1",
      "id": 5512,
      "score": 92,
      "status": "completed",
      "summary": "Caller asked about their policy and got a full answer…"
    }
  },
  "event_id": "7c1d2e3f-4a5b-4c6d-8e9f-0a1b2c3d4e5f",
  "type": "call.graded"
}
```

| ਫੀਲਡ | ਕਿਸਮ | ਵੇਰਵਾ |
|-------|------|-------------|
| `agent_id` | integer \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਅਸਾਈਨ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |
| `agent_name` | string \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਅਸਾਈਨ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |
| `grade.id` | integer | ਗ੍ਰੇਡ id |
| `grade.score` | integer \| null | 0–100 |
| `grade.call_outcome` | string | `success`, `failure`, `unknown`, ਜਾਂ `no_conversation` |
| `grade.summary` | string | ਇੱਕ-ਪੈਰਾਗ੍ਰਾਫ ਸੰਖੇਪ |
| `grade.detected_issues` | array | ਗ੍ਰੇਡਰ ਵੱਲੋਂ ਮਿਲੀਆਂ ਸਮੱਸਿਆ ਸਟਰਿੰਗਾਂ |
| `grade.status` | string | ਹਮੇਸ਼ਾ `completed` — ਸਿਰਫ਼ ਮੁਕੰਮਲ ਰਨ ਹੀ ਭੇਜੇ ਜਾਂਦੇ ਹਨ |
| `grade.grader_model` | string | ਨਤੀਜਾ ਬਣਾਉਣ ਵਾਲਾ ਗ੍ਰੇਡਰ (ਉਦਾਹਰਨ ਲਈ, `heuristic-v1`) |
| `grade.graded_at`, `grade.created_at` | timestamp | |

<Note>
  ਇੱਕ ਕਾਲ ਨੂੰ ਇੱਕ ਤੋਂ ਵੱਧ ਵਾਰ ਗ੍ਰੇਡ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ — ਤੇਜ਼ ਹਿਊਰਿਸਟਿਕ ਗ੍ਰੇਡ ਤੋਂ
  ਬਾਅਦ ਅਕਸਰ ਪੂਰਾ ਮਾਡਲ ਗ੍ਰੇਡ ਹੁੰਦਾ ਹੈ, ਜਦੋਂ ਰਿਕਾਰਡਿੰਗ ਉਪਲਬਧ ਹੋ ਜਾਂਦੀ ਹੈ, ਅਤੇ
  ਮੈਨੂਅਲ ਰੀਗ੍ਰੇਡ ਵੀ ਸੰਭਵ ਹਨ। ਹਰੇਕ ਮੁਕੰਮਲ ਰਨ ਆਪਣਾ `call.graded` ਇਵੈਂਟ
  ਭੇਜਦਾ ਹੈ; ਸਭ ਤੋਂ ਨਵੇਂ `graded_at` ਨੂੰ ਅਧਿਕਾਰਤ ਮੰਨੋ।
</Note>

### `call.data_extracted`

ਜਦੋਂ ਵੀ ਸਟ੍ਰਕਚਰਡ ਡਾਟਾ ਐਕਸਟ੍ਰੈਕਸ਼ਨ ਸਫਲਤਾਪੂਰਵਕ ਪੂਰਾ ਹੁੰਦਾ ਹੈ, ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ
`telephony.complete` / `web.complete` ਤੋਂ ਬਾਅਦ ਦਾ ਦੇਰ ਨਾਲ ਹੋਇਆ ਰੀਟ੍ਰਾਈ ਜਾਂ
[`POST /v1/calls/{call_id}/extract`](/api-reference/calls#run-data-extraction) ਰਾਹੀਂ ਮੈਨੂਅਲ ਰੀ-ਰਨ ਵੀ ਸ਼ਾਮਲ ਹੈ।
ਨਾਨ-ਬਲਾਕਿੰਗ।

ਬਲਾਕਿੰਗ ਐਕਸਟ੍ਰੈਕਸ਼ਨ ਮੋਡ ਵਿੱਚ, ਮੁਕੰਮਲਤਾ ਇਵੈਂਟ ਆਮ ਤੌਰ 'ਤੇ 75-ਸਕਿੰਟ ਦੇ
ਐਕਸਟ੍ਰੈਕਸ਼ਨ ਬਜਟ ਤੋਂ ਵੱਧ ਉਡੀਕ ਨਹੀਂ ਕਰਦਾ। ਜੇ ਐਕਸਟ੍ਰੈਕਸ਼ਨ ਵਰਕਰ ਪ੍ਰਕਿਰਿਆ
ਖਤਮ ਹੋ ਜਾਵੇ, ਤਾਂ ਪ੍ਰੋਡਕਸ਼ਨ ਫਾਈਨਲਾਈਜ਼ੇਸ਼ਨ ਡ੍ਰੇਨ (ਹਰ ਪੰਜ ਮਿੰਟ ਬਾਅਦ)
ਅਗਲੀ ਐਕਸਟ੍ਰੈਕਸ਼ਨ ਕੋਸ਼ਿਸ਼ ਸ਼ੁਰੂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਉਸ ਮੁਕੰਮਲਤਾ ਨੂੰ ਜਾਰੀ ਕਰਦਾ ਹੈ
ਜਿਸਦਾ `blocking_deadline_at` ਲੰਘ ਚੁੱਕਿਆ ਹੋਵੇ। ਬਾਅਦ ਦੀ ਸਫਲਤਾ ਇਸ ਇਵੈਂਟ ਵਜੋਂ
ਵੱਖਰੇ ਤੌਰ 'ਤੇ ਭੇਜੀ ਜਾਂਦੀ ਹੈ।

<Warning>
  ਐਕਸਟ੍ਰੈਕਟ ਕੀਤੀਆਂ ਵੈਲਯੂਆਂ ਗੱਲਬਾਤ ਬਾਰੇ ਮਾਡਲ ਦੀ ਵਿਆਖਿਆ ਹੁੰਦੀਆਂ ਹਨ। ਹਰੇਕ
  non-null ਵੈਲਯੂ ਵਿੱਚ ਉਹ ਕੋਟ, ਬੋਲਣ ਵਾਲੇ ਦੀ ਭੂਮਿਕਾ ਅਤੇ ਟਰਨ ਇੰਡੈਕਸ ਸ਼ਾਮਲ ਹੁੰਦੇ
  ਹਨ ਜਿਸ 'ਤੇ ਇਹ ਆਧਾਰਿਤ ਸੀ, ਨਾਲ ਹੀ ਰਨ-ਪੱਧਰ ਦਾ ਵੇਰੀਫਿਕੇਸ਼ਨ ਫਲੈਗ ਵੀ ਹੁੰਦਾ ਹੈ।
  ਪੈਸੇ, ਪਛਾਣ ਜਾਂ ਪਹੁੰਚ ਨਾਲ ਸੰਬੰਧਿਤ ਫ਼ੈਸਲੇ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਨਤੀਜੇ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ।
</Warning>

```json
{
  "data": {
    "call_id": 987654321,
    "agent_id": 12,
    "agent_name": "Acme intake",
    "extracted_data": {
      "status": "completed",
      "fields": {
        "customer_name": "Alex Morgan",
        "appointment_date": "2026-04-23"
      },
      "evidence": {
        "customer_name": {
          "quote": "My name is Alex Morgan",
          "speaker_role": "caller",
          "turn_index": 4
        },
        "appointment_date": {
          "quote": "April 23 works for me",
          "speaker_role": "caller",
          "turn_index": 7
        }
      },
      "verification": "verified",
      "field_reasons": {},
      "schema_version": "92850758e231a3c95a..."
    },
    "extracted_at": "2026-04-20T18:25:11.002Z",
    "model": "gemini-2.5-flash"
  },
  "event_id": "4d79ef1d-c2b1-4ed6-85b8-8326bd2895ef",
  "type": "call.data_extracted"
}
```

| ਫੀਲਡ | ਕਿਸਮ | ਵੇਰਵਾ |
|-------|------|-------------|
| `agent_id` | integer \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਅਸਾਈਨ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |
| `agent_name` | string \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਅਸਾਈਨ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |
| `extracted_data.status` | string | ਇਸ ਇਵੈਂਟ ਲਈ ਹਮੇਸ਼ਾ `completed` |
| `extracted_data.fields` | object | ਕਨਫਿਗਰ ਕੀਤੀਆਂ ਐਕਸਟ੍ਰੈਕਸ਼ਨ ਫੀਲਡ ਕੁੰਜੀਆਂ ਅਨੁਸਾਰ ਵੈਲਯੂਆਂ; ਅਣਉਪਲਬਧ ਵੈਲਯੂਆਂ `null` ਹੁੰਦੀਆਂ ਹਨ |
| `extracted_data.evidence` | object | ਐਕਸਟ੍ਰੈਕਸ਼ਨ ਫੀਲਡ ਅਨੁਸਾਰ ਐਵੀਡੈਂਸ। non-null ਵੈਲਯੂ ਵਿੱਚ ਬਿਲਕੁਲ ਸਟ੍ਰਕਚਰਲ ਤੌਰ 'ਤੇ ਜਾਂਚਿਆ ਗਿਆ ਕੋਟ (ਵੱਧ ਤੋਂ ਵੱਧ 1,000 ਅੱਖਰ), `speaker_role` (`caller` ਜਾਂ `agent`), ਅਤੇ `turn_index` ਹੁੰਦੇ ਹਨ; ਮਾਡਲ ਵੱਲੋਂ ਵਾਪਸ ਕੀਤੇ ਲੰਬੇ ਕੋਟ ਕੱਟੇ ਜਾਣ ਦੀ ਬਜਾਏ ਰੱਦ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਅਤੇ ਜਦੋਂ ਵੀ ਇਸਦੀ ਫੀਲਡ `null` ਹੋਵੇ ਐਵੀਡੈਂਸ `null` ਹੁੰਦਾ ਹੈ |
| `extracted_data.verification` | string | `verified` ਕੇਵਲ ਤਦੋਂ, ਜਦੋਂ ਸੁਤੰਤਰ ਐਵੀਡੈਂਸ ਪਾਸ ਨੇ ਹਰੇਕ ਉਮੀਦਵਾਰ ਫੀਲਡ ਲਈ ਬਿਲਕੁਲ ਇੱਕ ਵੈਧ ਫ਼ੈਸਲਾ ਵਾਪਸ ਕੀਤਾ ਹੋਵੇ। `unavailable` ਦਾ ਮਤਲਬ ਹੈ ਕਿ ਪਾਸ ਅਸਫਲ ਰਿਹਾ, ਟਾਈਮ ਆਉਟ ਹੋਇਆ, ਲੋੜੀਂਦਾ ਬਜਟ ਨਹੀਂ ਸੀ, ਜਾਂ ਖਰਾਬ ਜਾਂ ਅਧੂਰਾ ਆਉਟਪੁੱਟ ਵਾਪਸ ਕੀਤਾ। ਪੂਰੀ ਤਰ੍ਹਾਂ ਅਣਉਪਲਬਧ ਪਾਸ ਗਾਹਕ ਸਮੀਖਿਆ ਲਈ ਸਟ੍ਰਕਚਰਲ ਤੌਰ 'ਤੇ ਆਧਾਰਿਤ ਵੈਲਯੂਆਂ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਦਾ ਹੈ। ਅੰਸ਼ਕ ਆਉਟਪੁੱਟ ਲਈ, ਵੈਧ ਫ਼ੈਸਲੇ ਲਾਗੂ ਹੁੰਦੇ ਹਨ ਅਤੇ ਬਿਲਕੁਲ ਇੱਕ ਵੈਧ ਫ਼ੈਸਲੇ ਤੋਂ ਬਿਨਾਂ ਹਰੇਕ ਉਮੀਦਵਾਰ ਨੂੰ null ਕੀਤਾ ਜਾਂਦਾ ਹੈ |
| `extracted_data.field_reasons` | object | ਸਟ੍ਰਕਚਰਲ ਗ੍ਰਾਊਂਡਿੰਗ ਜਾਂ ਸੁਤੰਤਰ ਵੇਰੀਫਾਇਰ ਵੱਲੋਂ null ਕੀਤੀਆਂ ਫੀਲਡਾਂ ਅਨੁਸਾਰ ਕਾਰਨ |
| `extracted_data.schema_version` | string | ਇਸ ਐਕਸਟ੍ਰੈਕਸ਼ਨ ਲਈ ਵਰਤੀ ਗਈ ਬਿਲਕੁਲ ਫੀਲਡ ਸਕੀਮਾ ਦਾ ਹੈਸ਼ |
| `extracted_at` | timestamp | ISO 8601 ਮੁਕੰਮਲਤਾ ਸਮਾਂ |
| `model` | string | ਐਕਸਟ੍ਰੈਕਸ਼ਨ ਲਈ ਵਰਤਿਆ ਮਾਡਲ |

### `campaign.completed`

ਜਦੋਂ ਕੋਈ ਕੈਂਪੇਨ `running` ਤੋਂ `completed` ਵਿੱਚ ਜਾਂਦੀ ਹੈ, ਇੱਕ ਵਾਰ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ, ਭਾਵੇਂ
ਉਸਦਾ ਸ਼ਡਿਊਲ ਸਮਾਪਤ ਹੋਇਆ ਹੋਵੇ ਜਾਂ ਸਾਰੇ ਸੰਪਰਕ ਅੰਤਿਮ ਸਥਿਤੀਆਂ ਤੱਕ ਪਹੁੰਚ ਗਏ ਹੋਣ। ਰਨਰ
ਰੀਟ੍ਰਾਈ ਕੋਈ ਹੋਰ ਇਵੈਂਟ ਨਹੀਂ ਭੇਜਦੇ। ਇਹ ਸੰਸਥਾ-ਪੱਧਰੀ ਲਾਈਫਸਾਈਕਲ ਇਵੈਂਟ ਸਿਰਫ਼
ਸੰਸਥਾ-ਸਕੋਪਡ ਐਂਡਪੁਆਇੰਟਾਂ ਨੂੰ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ, ਏਜੰਟ-ਸਕੋਪਡ ਐਂਡਪੁਆਇੰਟਾਂ ਨੂੰ ਨਹੀਂ।
ਨਾਨ-ਬਲਾਕਿੰਗ।

```json
{
  "data": {
    "campaign_id": "3f6b2c9e-2a0d-4c63-b6d6-a708dc98f403",
    "name": "May win-back",
    "agent_id": 12,
    "status": "completed",
    "started_at": "2026-04-20T17:00:00Z",
    "completed_at": "2026-04-20T18:25:11Z",
    "counts": {
      "contacts_total": 150,
      "completed": 121,
      "failed": 11,
      "no_answer": 18,
      "remaining": 0
    }
  },
  "event_id": "8d8f52ce-6b46-423f-9dde-cea0b91ec135",
  "type": "campaign.completed"
}
```

ਚਾਰ ਨਤੀਜਾ ਗਿਣਤੀਆਂ ਆਪਸੀ ਤੌਰ 'ਤੇ ਵੱਖਰੀਆਂ ਹਨ ਅਤੇ `contacts_total` ਦੇ ਬਰਾਬਰ ਜੋੜ ਬਣਾਉਂਦੀਆਂ ਹਨ:
`completed` ਵਿੱਚ ਸਫਲ ਸੰਪਰਕ ਹੁੰਦੇ ਹਨ; `no_answer` ਵਿੱਚ ਉਹ ਅੰਤਿਮ ਅਸਫਲ/ਸਮਾਪਤ
ਸੰਪਰਕ ਹੁੰਦੇ ਹਨ ਜਿਨ੍ਹਾਂ ਦਾ ਅੰਤਿਮ ਨਤੀਜਾ ਕੋਈ ਜਵਾਬ ਨਹੀਂ ਸੀ; `failed` ਵਿੱਚ ਹੋਰ ਸਾਰੇ
ਅੰਤਿਮ ਅਸਫਲ/ਸਮਾਪਤ ਸੰਪਰਕ ਹੁੰਦੇ ਹਨ; ਅਤੇ `remaining` ਵਿੱਚ ਬਕਾਇਆ, ਸ਼ਡਿਊਲ ਕੀਤੇ ਜਾਂ
ਮੌਜੂਦਾ ਸਮੇਂ ਕਾਲ ਕੀਤੇ ਜਾ ਰਹੇ ਸੰਪਰਕ ਹੁੰਦੇ ਹਨ। ਰੀਟ੍ਰਾਈ ਦੀ ਉਡੀਕ ਕਰ ਰਿਹਾ ਸੰਪਰਕ
`remaining` ਹੁੰਦਾ ਹੈ, ਭਾਵੇਂ ਉਸਦੀ ਸਭ ਤੋਂ ਹਾਲੀਆ ਕੋਸ਼ਿਸ਼ ਦਾ ਨਤੀਜਾ ਕੋਈ ਜਵਾਬ ਨਾ ਹੋਵੇ।
ਇੱਕ-ਵਾਰ ਵਾਲੇ ਮੁਕੰਮਲਤਾ ਸਨੈਪਸ਼ਾਟ ਤੋਂ ਪਹਿਲਾਂ ਚੱਲ ਰਹੀਆਂ ਕਾਲਾਂ ਦਾ ਮੇਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।
`started_at` ਕਨਫਿਗਰ ਕੀਤਾ ਕੈਂਪੇਨ ਸ਼ੁਰੂ ਸਮਾਂ ਹੈ, ਜਾਂ ਜਦੋਂ ਕੋਈ ਸ਼ੁਰੂ ਸਮਾਂ ਕਨਫਿਗਰ ਨਾ ਹੋਵੇ
ਤਾਂ ਕੈਂਪੇਨ ਬਣਾਉਣ ਦਾ ਸਮਾਂ ਹੈ।

### `issue.reported`

ਜਦੋਂ ਇੱਕ [ਸਮੱਸਿਆ ਰਿਪੋਰਟ](/api-reference/issue-reports) ਬਣਾਈ ਜਾਂਦੀ ਹੈ, ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ —
ਜਾਂ ਤਾਂ ਡੈਸ਼ਬੋਰਡ ਤੋਂ ਕਿਸੇ ਯੂਜ਼ਰ ਵੱਲੋਂ ਦਰਜ ਕੀਤੀ ਗਈ (`source: "user"`) ਜਾਂ
ਕਾਲ ਗ੍ਰੇਡਿੰਗ ਵੱਲੋਂ ਆਪਣੇ ਆਪ ਬਣਾਈ ਗਈ (`source: "system"`)। ਨਾਨ-ਬਲਾਕਿੰਗ।

```json
{
  "data": {
    "call_id": 987654321,
    "issue_report": {
      "created_at": "2026-04-20T18:25:11.002Z",
      "description": "Five-second silence before responding to the main question.",
      "id": 4321,
      "severity": "warning",
      "source": "system",
      "status": "open",
      "title": "Agent paused too long"
    }
  },
  "event_id": "5e6f7a8b-9c0d-4e1f-8a2b-3c4d5e6f7a8b",
  "type": "issue.reported"
}
```

| ਫੀਲਡ | ਕਿਸਮ | ਵੇਰਵਾ |
|-------|------|-------------|
| `agent_id` | integer \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਅਸਾਈਨ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |
| `agent_name` | string \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਅਸਾਈਨ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |
| `issue_report.severity` | string | `critical`, `warning`, ਜਾਂ `info` |
| `issue_report.status` | string | `open` ਜਾਂ `resolved` |
| `issue_report.source` | string | `user` (ਡੈਸ਼ਬੋਰਡ ਤੋਂ ਦਰਜ ਕੀਤੀ) ਜਾਂ `system` (ਗ੍ਰੇਡਿੰਗ ਵੱਲੋਂ ਬਣਾਈ ਗਈ) |

<Note>
  ਕਾਲ ਨੂੰ ਰੀਗ੍ਰੇਡ ਕਰਨ ਨਾਲ ਇਸ ਦੀਆਂ ਸਿਸਟਮ-ਜਨਰੇਟ ਕੀਤੀਆਂ ਸਮੱਸਿਆ ਰਿਪੋਰਟਾਂ ਮੁੜ ਬਣਦੀਆਂ
  ਹਨ, ਜਿਸ ਕਾਰਨ ਮੁੜ ਬਣਾਈਆਂ ਰਿਪੋਰਟਾਂ ਲਈ `issue.reported` ਫਿਰ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ।
  ਜੇ ਤੁਸੀਂ ਹਰੇਕ ਮੂਲ ਸਮੱਸਿਆ ਲਈ ਸਿਰਫ਼ ਇੱਕ ਨੋਟੀਫਿਕੇਸ਼ਨ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ
  `call_id` + `title` ਉੱਤੇ ਡੀਡਿਊਪ ਕਰੋ।
</Note>

### `issue.escalated`

ਜਦੋਂ ਕਿਸੇ ਸਮੱਸਿਆ ਪੈਟਰਨ ਨੂੰ ਸਟਾਫ਼ ਸਮੀਖਿਆ ਲਈ ThunderPhone ਨੂੰ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ:
**ThunderPhone ਨੂੰ ਰਿਪੋਰਟ ਕਰੋ** ਤੋਂ ਬਾਅਦ, ਜਾਂ ਜਦੋਂ AI ਨਾਲ ਠੀਕ ਕਰੋ ਗਾਹਕ-ਪੱਖੀ
ਸੁਧਾਰ ਦੀ ਪੁਸ਼ਟੀ ਨਹੀਂ ਕਰ ਸਕਦਾ ਅਤੇ ਸਮੱਸਿਆ ਨੂੰ ਆਪਣੇ ਆਪ ਰੂਟ ਕਰਦਾ ਹੈ। ਸਿਰਫ਼
ਸੰਸਥਾ-ਵਿਆਪੀ ਐਂਡਪੁਆਇੰਟ ਹੀ ਇਹ ਇਵੈਂਟ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹਨ।

```json
{
  "data": {
    "automatic": false,
    "cluster_id": "7ac2844c-2df0-4fa8-a560-7378da649e19",
    "escalation_id": "ec99f52b-c8c0-41dd-a4f2-dd8a07b10894",
    "status": "open"
  },
  "event_id": "d8f8f420-7a42-45ba-bcf1-b747f9bbecda",
  "type": "issue.escalated"
}
```

| ਫੀਲਡ | ਕਿਸਮ | ਵੇਰਵਾ |
|-------|------|-------------|
| `automatic` | boolean | ਆਟੋਮੈਟਿਕ ਐਸਕਲੇਸ਼ਨ ਲਈ `true`; ਮੈਨੂਅਲ ਐਸਕਲੇਸ਼ਨ ਲਈ `false` |
| `cluster_id` | UUID | ਐਸਕਲੇਟ ਕੀਤਾ ਸਮੱਸਿਆ ਪੈਟਰਨ |
| `escalation_id` | UUID | ਐਸਕਲੇਸ਼ਨ ਰਿਕਾਰਡ |
| `status` | string | ਇਵੈਂਟ ਭੇਜੇ ਜਾਣ ਵੇਲੇ `open` |

ਇਹ ਇੱਕ ਨੋਟੀਫਿਕੇਸ਼ਨ ਹੈ, ਐਵੀਡੈਂਸ ਬੰਡਲ ਨਹੀਂ। ਇਸਨੂੰ ਸਮੱਸਿਆ ਪੈਟਰਨ ਨਾਲ ਜੋੜਨ ਲਈ
`cluster_id` ਵਰਤੋ। [ThunderPhone ਨੂੰ ਰਿਪੋਰਟ ਕਰੋ](/pa/guides/issues) ਵੇਖੋ।

---

## ਟੈਸਟ ਕਾਲ ਇਵੈਂਟਸ

### `test-call.completed`

ਜਦੋਂ ਕੋਈ
[ਟੈਸਟ-ਕਾਲ ਰਨ](/api-reference/test-calls#test-call-run-object)
ਅੰਤਿਮ ਸਥਿਤੀ — `completed` ਜਾਂ `failed` — ਤੱਕ ਪਹੁੰਚਦਾ ਹੈ, ਤਦੋਂ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ। ਇਸ ਵਿੱਚ ਉਹ ਰਨ ਵੀ ਸ਼ਾਮਲ ਹਨ ਜੋ ਸ਼ੁਰੂਆਤ ਵੇਲੇ ਅਸਫਲ ਹੋ ਗਏ ਅਤੇ ਕਦੇ ਕਾਲ ਨਹੀਂ ਬਣੀ। ਨਾਨ-ਬਲਾਕਿੰਗ। ਬੈਚ CI ਰਨਾਂ ਨੂੰ ਆਪਣੇ ਚੈਟ/ਨੋਟੀਫਿਕੇਸ਼ਨ ਸਿਸਟਮਾਂ ਨਾਲ ਜੋੜਨ ਲਈ ਲਾਭਦਾਇਕ।

```json
{
  "data": {
    "test_call_run": {
      "call_id": 987654321,
      "completed_at": "2026-04-20T18:25:04.822Z",
      "error_message": "",
      "id": 7110,
      "status": "completed",
      "target_id": 12,
      "target_type": "agent"
    }
  },
  "event_id": "2b3c4d5e-6f7a-4b8c-9d0e-1f2a3b4c5d6e",
  "type": "test-call.completed"
}
```

| ਫੀਲਡ | ਕਿਸਮ | ਵੇਰਵਾ |
|-------|------|-------------|
| `agent_id` | integer \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਅਸਾਈਨ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |
| `agent_name` | string \| null | ਕਾਲ ਸੰਭਾਲਣ ਵਾਲਾ ਏਜੰਟ, ਜਦੋਂ ਕੋਈ ਅਸਾਈਨ ਕੀਤਾ ਗਿਆ ਹੋਵੇ |
| `test_call_run.target_type` | string | `agent` ਜਾਂ `phone_number` |
| `test_call_run.target_id` | integer | ਉਹ ਏਜੰਟ id ਜਾਂ ਫ਼ੋਨ-ਨੰਬਰ id ਜਿਸ ਨੂੰ ਰਨ ਨੇ ਟਾਰਗੇਟ ਕੀਤਾ, ਜੋ `target_type` ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ |
| `test_call_run.status` | string | `completed` ਜਾਂ `failed` |
| `test_call_run.call_id` | integer \| null | ਜਦੋਂ ਕਾਲ ਸ਼ੁਰੂ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ ਰਨ ਅਸਫਲ ਹੋ ਜਾਵੇ ਤਾਂ `null` |
| `test_call_run.error_message` | string | ਸਫਲਤਾ ਹੋਣ 'ਤੇ ਖਾਲੀ |

---

## ਅਲਰਟ ਇਵੈਂਟਸ

### `alert.triggered`

ਜਦੋਂ **ਡਿਵੈਲਪਰ ਵੈੱਬਹੁੱਕਸ ਨੂੰ ਭੇਜੋ** ਚੈਨਲ ਸਮਰੱਥ ਵਾਲਾ ਕੋਈ [ਅਲਰਟ ਨਿਯਮ](/pa/guides/alerts) ਆਪਣੀ ਥ੍ਰੈਸ਼ਹੋਲਡ ਨੂੰ ਪਾਰ ਕਰਦਾ ਹੈ, ਤਦੋਂ ਭੇਜਿਆ ਜਾਂਦਾ ਹੈ।
ਨਾਨ-ਬਲਾਕਿੰਗ। ਨਿਯਮ ਇੱਕ ਵਾਰ ਟ੍ਰਿਗਰ ਹੁੰਦਾ ਹੈ ਅਤੇ ਫਿਰ ਆਪਣੇ ਕੂਲਡਾਊਨ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ, ਇਸ ਲਈ ਲਗਾਤਾਰ ਉਲੰਘਣਾ ਹਰ ਕੂਲਡਾਊਨ ਵਿੰਡੋ ਲਈ ਇੱਕ ਇਵੈਂਟ ਬਣਾਉਂਦੀ ਹੈ।

```json
{
  "data": {
    "comparator": "lt",
    "event_id": "b8e6a1d4-2c3f-4a5b-9c8d-7e6f5a4b3c2d",
    "fired_at": "2026-04-20T18:00:00+00:00",
    "metric": "success_rate",
    "metric_value": 71.4,
    "rule_id": "d2c3b4a5-6f7e-4d8c-9b0a-1c2d3e4f5a6b",
    "rule_name": "Success rate below 80%",
    "threshold": 80.0,
    "window_hours": 24
  },
  "event_id": "4d5e6f7a-8b9c-4d0e-9f1a-2b3c4d5e6f7a",
  "type": "alert.triggered"
}
```

| ਫੀਲਡ | ਕਿਸਮ | ਵੇਰਵਾ |
|-------|------|-------------|
| `event_id` (in `data`) | UUID | ਅਲਰਟ **ਟ੍ਰਿਗਰਿੰਗ** id — ਐਨਵਲਪ ਦੀ ਡਿਲਿਵਰੀ `event_id` ਤੋਂ ਵੱਖਰੀ |
| `rule_id`, `rule_name` | UUID, string | ਟ੍ਰਿਗਰ ਹੋਇਆ ਨਿਯਮ |
| `metric` | string | `success_rate`, `failure_rate`, `avg_score`, `call_volume`, ਜਾਂ `suite_regression` |
| `comparator` | string | `lt`, `lte`, `gt`, ਜਾਂ `gte` |
| `metric_value` | number | ਨਿਯਮ ਟ੍ਰਿਗਰ ਹੋਣ ਵੇਲੇ ਵਿੰਡੋ ਵਿੱਚ ਮੈਟ੍ਰਿਕ ਦਾ ਮੁੱਲ |
| `threshold` | number | ਕਨਫਿਗਰ ਕੀਤੀ ਥ੍ਰੈਸ਼ਹੋਲਡ |
| `window_hours` | integer | ਪਿਛਲੀ ਮੁਲਾਂਕਣ ਵਿੰਡੋ |
| `fired_at` | timestamp | |

ਨਿਯਮ, ਮੈਟ੍ਰਿਕਸ, ਕੂਲਡਾਊਨ, ਅਤੇ ਈਮੇਲ / Slack ਚੈਨਲ ਬਣਾਉਣ ਲਈ [ਅਲਰਟਸ ਗਾਈਡ](/pa/guides/alerts) ਦੇਖੋ।

---

## ਸੰਬੰਧਿਤ

<CardGroup cols={2}>
  <Card title="telephony.incoming / web.incoming" icon="phone" href="/pa/webhooks/call-incoming">
    ਬਲਾਕਿੰਗ ਇਨਬਾਊਂਡ-ਕਾਲ ਪੇਲੋਡ ਜਿਸ ਦਾ ਤੁਹਾਨੂੰ ਜਵਾਬ ਦੇਣਾ ਲਾਜ਼ਮੀ ਹੈ।
  </Card>
  <Card title="telephony.complete / web.complete" icon="phone-slash" href="/pa/webhooks/call-complete">
    ਕਾਲ ਤੋਂ ਬਾਅਦ ਦਾ ਟ੍ਰਾਂਸਕ੍ਰਿਪਟ ਅਤੇ ਮੈਟ੍ਰਿਕਸ।
  </Card>
  <Card title="ਵੈੱਬਹੁੱਕ ਐਂਡਪੌਇੰਟਸ" icon="bolt" href="/pa/webhooks/endpoints">
    ਇੱਕ URL ਨੂੰ ਇਨ੍ਹਾਂ ਇਵੈਂਟਸ ਦੇ ਕਿਸੇ ਸਬਸੈੱਟ ਲਈ ਸਬਸਕ੍ਰਾਈਬ ਕਰੋ।
  </Card>
  <Card title="ਫੰਕਸ਼ਨ ਟੂਲਜ਼" icon="screwdriver-wrench" href="/pa/tools/overview">
    `telephony.tool` / `web.tool` ਇਵੈਂਟਸ ਕਿਵੇਂ ਬਣਾਏ ਜਾਂਦੇ ਹਨ।
  </Card>
</CardGroup>
