---
title: "इव्हेंट्स कॅटलॉग"
description: "ThunderPhone उत्सर्जित करत असलेले सर्व webhook इव्हेंट प्रकार."
---

प्रत्येक वेबहुक बॉडीमध्ये `type` फील्ड असते, ज्याचे मूल्य या पृष्ठावरील इव्हेंट
प्रकारांपैकी एक असते. तुम्ही एखाद्या
[एंडपॉइंटचे](/mr/webhooks/endpoints) सदस्यत्व घेतल्यावर, `events` अॅरेमध्ये तुम्हाला हवे असलेले
इव्हेंट प्रकार असणे आवश्यक आहे (किंवा सर्व गोष्टींचे सदस्यत्व घेण्यासाठी ते रिकामे असू शकते —
प्रति-टर्न इव्हेंट्स [`telephony.turn`](#telephony-turn) /
[`web.turn`](#web-turn) वगळता, जे फक्त त्यांना स्पष्टपणे
नाव देणाऱ्या एंडपॉइंट्सना वितरित केले जातात).

हे इव्हेंट दोन वितरण शैलींमधून पाठवले जातात:

* **एंडपॉइंट वितरण** नेहमी [पुनर्प्रयत्नांसह](/mr/webhooks/overview)
  **नॉन-ब्लॉकिंग** सूचना असतात: कोणत्याही 2xx सह प्रतिसाद द्या; डिडुप्लिकेशनसाठी
  एन्व्हलपमध्ये `event_id` असतो.
* **ब्लॉकिंग** एक्स्चेंजेस फक्त
  [लेगसी सिंगल-URL वेबहुकवर](/mr/webhooks/overview) चालतात: 
  [`telephony.incoming` / `web.incoming`](/mr/webhooks/call-incoming)
  कॉन्फिगरेशन विनंती (वेबहुक-मोड क्रमांक आणि विजेट की, 10 s
  टाइमआउट) आणि वेबहुक-मोड
  [टूल डिस्पॅच](/mr/tools/overview). तुमचा प्रतिसाद
  लाइव्ह कॉलला आकार देतो.

खालील उदाहरण पेलोड्स वायर क्रमातील एंडपॉइंट एन्व्हलप दाखवतात
(की वर्णक्रमानुसार क्रमबद्ध आहेत: `data`, `event_id`, `type`); लेगसी
वितरणांमध्ये `event_id` शिवाय समान `data` असतो.

## कॉल इव्हेंट्स

### `telephony.incoming`

इनबाउंड कॉल तुमच्या [फोन नंबरपैकी](/api-reference/phone-numbers) एका नंबरवर पोहोचल्यावर पाठवला जातो. एन्डपॉइंट डिलिव्हरी प्रत्येक इनबाउंड कॉलसाठी फायर-अँड-फॉरगेट सूचना म्हणून पाठवल्या जातात, नंबर एजंट-कॉन्फिगर केलेला असो किंवा webhook-कॉन्फिगर केलेला असो. नियुक्त एजंट नसलेल्या नंबरना लेगसी webhook वर अतिरिक्त **ब्लॉकिंग** कॉन्फिगरेशन विनंती मिळते — संपूर्ण विनंती / प्रतिसाद स्कीमासाठी [`telephony.incoming` / `web.incoming`](/mr/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`](/mr/webhooks/call-complete) पहा.

| फील्ड | प्रकार | वर्णन |
|-------|------|-------------|
| `agent_id` | integer \| null | नियुक्त असल्यास, कॉल हाताळणारा एजंट |
| `agent_name` | string \| null | नियुक्त असल्यास, कॉल हाताळणाऱ्या एजंटचे नाव |

### `telephony.tool`

टेलिफोनी कॉलने [फंक्शन टूल](/mr/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`

टेलिफोनी कॉल **सुरू असताना**, प्रत्येक भाषणयुक्त टर्नसाठी तो घडत असतानाच पाठवला जातो — एजंटची बोललेली पूर्ण उत्तरे आणि कॉलरचे ट्रान्स्क्राइब केलेले टर्न. पोलिंग करण्याऐवजी साध्या webhooks वरून तुम्हाला थेट संभाषणाचे अनुसरण करता येते
[`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 | कॉल सुरू झाल्यापासूनचे ms मधील ऑडिओ ऑफसेट; उत्सर्जनाच्या वेळी प्लेआउट वेळ आधीच ज्ञात असल्यासच उपलब्ध |

<Note>
  डिलिव्हरी किमान-एकदा होते आणि टर्न **क्रमाबाहेर** येऊ शकतात:
  एन्व्हलपच्या `event_id` वर डिड्युप्लिकेट करा आणि `position` नुसार क्रम लावा. कॉलरचे ट्रान्स्क्रिप्ट उत्सर्जनानंतरही सुधारले जाऊ शकते; कॉलनंतरचे
  [`telephony.complete`](/mr/webhooks/call-complete) ट्रान्स्क्रिप्ट अधिकृत असते. फक्त बोललेले टर्न उत्सर्जित होतात — टूल कॉल्स, व्हिस्पर्स आणि इतर अंतर्गत नोंदी या स्ट्रीमवर कधीही दिसत नाहीत.
</Note>

### `web.incoming`

`telephony.incoming` चा वेब-चॅनेल समतुल्य, जो [वेब विजेट](/mr/widget/overview) सत्र किंवा बिल्डर माइक चाचणी कॉल सुरू झाल्यावर पाठवला जातो. एन्डपॉइंट डिलिव्हरी प्रत्येक वेब सत्रासाठी फायर-अँड-फॉरगेट असतात. `mode="webhook"` मधील पब्लिशेबल कींना लेगसी webhook वर अतिरिक्त **ब्लॉकिंग** कॉन्फिगरेशन विनंती मिळते — त्या ब्लॉकिंग विनंतीचा आकार वेगळा असतो (`origin_domain`,
`publishable_key_prefix`; फोन नंबर नाहीत). [`telephony.incoming` / `web.incoming`](/mr/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"` असतो. webhook-मोड विजेट सत्रांसाठी `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`](/mr/webhooks/call-complete) प्रमाणेच पेलोड आकार असतो, त्यात `origin_domain` अतिरिक्त असते आणि `from_number` `"web"` वर सेट केलेले असते.

| फील्ड | प्रकार | वर्णन |
|-------|------|-------------|
| `agent_id` | integer \| null | नियुक्त असल्यास, कॉल हाताळणारा एजंट |
| `agent_name` | string \| null | नियुक्त असल्यास, कॉल हाताळणाऱ्या एजंटचे नाव |

<Note>
  लेगसी सिंगल-URL webhook वर, बिल्डर माइक चाचणी कॉल्सचा ऐतिहासिकदृष्ट्या `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` | स्ट्रिंग | सानुकूल आवाजाचा सार्वजनिक आयडी |
| `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 | ग्रेड आयडी |
| `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>
  एक्स्ट्रॅक्ट केलेली मूल्ये ही संभाषणाची मॉडेलची व्याख्या असते. प्रत्येक
  नॉन-नल मूल्यात त्यावर आधारित असलेला कोट, वक्त्याची भूमिका आणि टर्न इंडेक्स,
  तसेच रन-स्तरीय पडताळणी फ्लॅग समाविष्ट असतो. पैसे, ओळख किंवा प्रवेशाशी
  संबंधित निर्णय घेण्यापूर्वी निकाल पडताळा.
</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 | एक्स्ट्रॅक्शन फील्डनुसार पुरावे. नॉन-नल मूल्यात अचूक संरचनात्मकदृष्ट्या तपासलेला कोट (जास्तीत जास्त 1,000 वर्ण), `speaker_role` (`caller` किंवा `agent`) आणि `turn_index` असतात; मॉडेलने परत केलेले मोठे कोट कापण्याऐवजी नाकारले जातात आणि फील्ड `null` असल्यास पुरावा नेहमी `null` असतो |
| `extracted_data.verification` | string | स्वतंत्र पुरावा पासने प्रत्येक उमेदवार फील्डसाठी नेमका एक वैध निकाल परत केल्यावरच `verified`. `unavailable` म्हणजे पास अयशस्वी झाला, टाइम आउट झाला, पुरेसे बजेट नव्हते किंवा त्याने विकृत अथवा अंशतः आउटपुट परत केले. पूर्णपणे अनुपलब्ध पास ग्राहक पुनरावलोकनासाठी संरचनात्मकदृष्ट्या आधारित मूल्ये जतन करतो. अंशतः आउटपुटसाठी, वैध निकाल लागू केले जातात आणि नेमका एक वैध निकाल नसलेला प्रत्येक उमेदवार नल केला जातो |
| `extracted_data.field_reasons` | object | संरचनात्मक आधार किंवा स्वतंत्र पडताळणीकर्त्यामुळे नल केलेल्या फील्डनुसार कारणे |
| `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 कडे अहवाल द्या](/mr/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 | `target_type` शी जुळणारा, रनने लक्ष्य केलेला एजंट id किंवा फोन-नंबर id |
| `test_call_run.status` | string | `completed` किंवा `failed` |
| `test_call_run.call_id` | integer \| null | कॉल करण्यापूर्वी रन अयशस्वी झाल्यास `null` |
| `test_call_run.error_message` | string | यशस्वी झाल्यास रिक्त |

---

## अलर्ट इव्हेंट्स

### `alert.triggered`

**डेव्हलपर वेबहुक्सवर वितरित करा** चॅनेल सक्षम असलेला
[अलर्ट नियम](/mr/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` (`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 चॅनेल तयार करण्यासाठी
[अलर्ट्स मार्गदर्शक](/mr/guides/alerts) पहा.

---

## संबंधित

<CardGroup cols={2}>
  <Card title="telephony.incoming / web.incoming" icon="phone" href="/mr/webhooks/call-incoming">
    तुम्ही प्रतिसाद देणे आवश्यक असलेला ब्लॉकिंग इनबाउंड-कॉल पेलोड.
  </Card>
  <Card title="telephony.complete / web.complete" icon="phone-slash" href="/mr/webhooks/call-complete">
    कॉलनंतरचे ट्रान्सक्रिप्ट आणि मेट्रिक्स.
  </Card>
  <Card title="वेबहुक एंडपॉइंट्स" icon="bolt" href="/mr/webhooks/endpoints">
    या इव्हेंट्सच्या उपसंचासाठी URL सबस्क्राइब करा.
  </Card>
  <Card title="फंक्शन टूल्स" icon="screwdriver-wrench" href="/mr/tools/overview">
    `telephony.tool` / `web.tool` इव्हेंट्स कसे जनरेट केले जातात.
  </Card>
</CardGroup>
