इवेंट्स कैटलॉग
ThunderPhone द्वारा भेजे जाने वाले सभी वेबहुक इवेंट प्रकार।
हर webhook बॉडी में एक type फ़ील्ड होता है जिसका मान इस पेज पर दिए गए इवेंट
टाइप में से एक होता है। जब आप किसी
एंडपॉइंट को सब्सक्राइब करते हैं, तो events ऐरे में वे
इवेंट टाइप होने चाहिए जो आप चाहते हैं (या सब कुछ सब्सक्राइब करने के लिए इसे खाली छोड़ें —
प्रति-टर्न इवेंट telephony.turn /
web.turn को छोड़कर, जो केवल उन एंडपॉइंट पर डिलीवर किए जाते हैं
जो उन्हें स्पष्ट रूप से नामित करते हैं)।
ये इवेंट दो डिलीवरी स्टाइल में भेजे जाते हैं:
- एंडपॉइंट डिलीवरी हमेशा रीट्राई के साथ नॉन-ब्लॉकिंग
नोटिफिकेशन होती हैं: किसी भी 2xx के साथ रिस्पॉन्ड करें; डीडुप्लिकेशन के लिए
एनवेलप में एक
event_idहोता है। - ब्लॉकिंग एक्सचेंज केवल
लेगसी सिंगल-URL webhook पर चलते हैं:
telephony.incoming/web.incomingकॉन्फ़िगरेशन रिक्वेस्ट (webhook-मोड नंबर और विजेट की, 10 s टाइमआउट) और webhook-मोड टूल डिस्पैच। आपका रिस्पॉन्स लाइव कॉल को आकार देता है।
नीचे दिए गए उदाहरण पेलोड अपने वायर ऑर्डर में एंडपॉइंट एनवेलप दिखाते हैं
(की को वर्णानुक्रम में सॉर्ट किया गया है: data, event_id, type); लेगसी
डिलीवरी में event_id के बिना वही data होता है।
कॉल इवेंट्स
telephony.incoming
जब कोई इनबाउंड कॉल आपके किसी
फ़ोन नंबर पर पहुँचती है, तब भेजा जाता है। एंडपॉइंट डिलीवरी
हर इनबाउंड कॉल के लिए फायर-एंड-फॉरगेट नोटिफ़िकेशन होती हैं, चाहे
नंबर एजेंट-कॉन्फ़िगर किया गया हो या वेबहुक-कॉन्फ़िगर किया गया हो। जिन नंबरों को
कोई एजेंट असाइन नहीं है, उन्हें लेगेसी वेबहुक पर अतिरिक्त रूप से ब्लॉकिंग
कॉन्फ़िगरेशन रिक्वेस्ट मिलती है — पूरी रिक्वेस्ट / रिस्पॉन्स स्कीमा के लिए
telephony.incoming / web.incoming देखें।
{
"data": {
"call_id": 987654321,
"from_number": "+14155550199",
"to_number": "+15551234567"
},
"event_id": "3f6b2ad0-1c9e-4a57-9f2b-8f6f0f9d2f11",
"type": "telephony.incoming"
}telephony.complete
जब कोई इनबाउंड या आउटबाउंड टेलीफोनी कॉल समाप्त होती है, तब भेजा जाता है। नॉन-ब्लॉकिंग।
इसमें ट्रांसक्रिप्ट, उपलब्ध होने पर रिकॉर्डिंग URL और बिलिंग सारांश शामिल होता है। पेलोड
स्कीमा के लिए telephony.complete / web.complete
देखें।
telephony.tool
टेलीफोनी कॉल द्वारा फ़ंक्शन टूल इनवोक किए जाने के बाद भेजा जाता है। नॉन-ब्लॉकिंग ऑडिट नोटिफ़िकेशन — यह इवेंट डिलीवर होने तक टूल पहले ही एक्जीक्यूट हो चुका होता है; यह आपके अपने फ़ंक्शन टूल्स को कवर करता है (बिल्ट-इन, नॉलेज-बेस, ऐप-कनेक्शन, या MCP टूल्स को नहीं)।
{
"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>"}।
telephony.turn
टेलीफोनी कॉल चालू होने के दौरान, प्रत्येक स्पीच वाले टर्न के लिए उसके होते ही
भेजा जाता है — एजेंट के बोले गए कंप्लीशन और कॉलर के ट्रांसक्राइब किए गए
टर्न। इससे आप पोलिंग करने के बजाय सामान्य वेबहुक्स के माध्यम से लाइव बातचीत
का अनुसरण कर सकते हैं
GET /v1/calls/{call_id}/transcript।
नॉन-ब्लॉकिंग।
{
"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"
}| फ़ील्ड | टाइप | विवरण |
|---|---|---|
position | इंटीजर | कॉल हिस्ट्री में टर्न का इंडेक्स — क्रम निर्धारण के लिए एक स्थिर पहचान |
role | स्ट्रिंग | assistant (एजेंट स्पीच) या user (कॉलर स्पीच) |
text | स्ट्रिंग | इमिशन के समय उपलब्ध टर्न का ट्रांसक्रिप्ट टेक्स्ट |
entry_type | स्ट्रिंग | अंतर्निहित हिस्ट्री एंट्री टाइप: completion (एजेंट), या user_turn / span (कॉलर) |
start_ms, end_ms | इंटीजर | कॉल शुरू होने के बाद से ms में ऑडियो ऑफ़सेट; केवल तब मौजूद होते हैं जब इमिशन के समय प्लेआउट टाइमिंग पहले से ज्ञात हो |
web.incoming
telephony.incoming का वेब-चैनल समकक्ष, जो
वेब विजेट सेशन या बिल्डर माइक टेस्ट कॉल शुरू होने पर भेजा जाता है।
एंडपॉइंट डिलीवरी हर वेब सेशन के लिए फायर-एंड-फॉरगेट होती हैं।
mode="webhook" में पब्लिशेबल कीज़ को लेगेसी वेबहुक पर अतिरिक्त रूप से
ब्लॉकिंग कॉन्फ़िगरेशन रिक्वेस्ट मिलती है — उस ब्लॉकिंग रिक्वेस्ट का आकार अलग होता है
(origin_domain, publishable_key_prefix; कोई फ़ोन नंबर नहीं)। देखें
telephony.incoming / web.incoming।
{
"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 खाली होते हैं।
web.complete
telephony.complete का वेब-चैनल समकक्ष, जिसमें वेब
विजेट कॉल्स (direction: "web") और बिल्डर माइक टेस्ट कॉल्स
(direction: "test") शामिल हैं। नॉन-ब्लॉकिंग। पेलोड संरचना
telephony.complete जैसी ही है, साथ में origin_domain,
और from_number को "web" पर सेट किया जाता है।
web.tool
telephony.tool का वेब-चैनल समकक्ष। data में
from_number / to_number के बजाय origin_domain होता है।
web.turn
telephony.turn का वेब-चैनल समकक्ष,
जिसमें वेब विजेट कॉल्स और बिल्डर माइक टेस्ट कॉल्स शामिल हैं। पेलोड
संरचना समान है, जिसमें from_number / to_number के बजाय origin_domain होता है।
telephony.turn की तरह, इसके लिए स्पष्ट सब्सक्रिप्शन आवश्यक है — यह
कभी भी खाली events ऐरे के माध्यम से डिलीवर नहीं होता।
वॉइस इवेंट्स
कस्टम वॉइस बनाना असिंक्रोनस है। ये नॉन-ब्लॉकिंग इवेंट्स आपको पोलिंग करने के बजाय अंतिम परिणाम पर प्रतिक्रिया देने देते हैं क्लोन डिटेल एंडपॉइंट।
voice.ready
जब कस्टम वॉइस की प्रोसेसिंग पूरी हो जाती है और उसे किसी एजेंट को असाइन किया जा सकता है, तब भेजा जाता है।
{
"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
जब कस्टम वॉइस प्रोसेसिंग किसी स्थायी विफलता तक पहुंचती है, तब भेजा जाता है।
{
"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 ग्रेडिंग रन पूरा होने पर भेजा जाता है। ब्लॉकिंग नहीं है।
{
"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"
}| फ़ील्ड | टाइप | विवरण |
|---|---|---|
grade.id | पूर्णांक | ग्रेड आईडी |
grade.score | पूर्णांक | null | 0–100 |
grade.call_outcome | स्ट्रिंग | success, failure, unknown, या no_conversation |
grade.summary | स्ट्रिंग | एक-पैराग्राफ सारांश |
grade.detected_issues | ऐरे | ग्रेडर द्वारा पाए गए समस्या स्ट्रिंग्स |
grade.status | स्ट्रिंग | हमेशा completed — केवल पूरे हुए रन ही भेजते हैं |
grade.grader_model | स्ट्रिंग | परिणाम देने वाला ग्रेडर, जैसे heuristic-v1 |
grade.graded_at, grade.created_at | टाइमस्टैम्प |
issue.reported
जब कोई समस्या रिपोर्ट बनाई जाती है, तब भेजा जाता है —
या तो डैशबोर्ड से किसी उपयोगकर्ता द्वारा दर्ज की गई (source: "user") या
कॉल ग्रेडिंग द्वारा स्वचालित रूप से बनाई गई (source: "system")। ब्लॉकिंग नहीं है।
{
"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"
}| फ़ील्ड | टाइप | विवरण |
|---|---|---|
issue_report.severity | स्ट्रिंग | critical, warning, या info |
issue_report.status | स्ट्रिंग | open या resolved |
issue_report.source | स्ट्रिंग | user (डैशबोर्ड से दर्ज) या system (ग्रेडिंग द्वारा बनाई गई) |
टेस्ट कॉल इवेंट्स
test-call.completed
जब कोई
टेस्ट-कॉल रन
टर्मिनल स्टेटस — completed या failed — पर पहुंचता है, तब भेजा जाता है। इसमें वे रन
भी शामिल हैं जो लॉन्च पर विफल हुए और जिन्होंने कभी कॉल नहीं बनाई। ब्लॉकिंग नहीं है।
बैच CI रनों को अपने चैट/नोटिफिकेशन सिस्टम्स से जोड़ने के लिए उपयोगी है।
{
"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"
}| फ़ील्ड | टाइप | विवरण |
|---|---|---|
test_call_run.target_type | स्ट्रिंग | agent या phone_number |
test_call_run.target_id | पूर्णांक | रन द्वारा लक्षित एजेंट आईडी या फोन-नंबर आईडी, जो target_type से मेल खाती है |
test_call_run.status | स्ट्रिंग | completed या failed |
test_call_run.call_id | पूर्णांक | null | जब कॉल किए जाने से पहले रन विफल हो जाए, तब null |
test_call_run.error_message | स्ट्रिंग | सफलता पर खाली |
अलर्ट इवेंट्स
alert.triggered
जब डेवलपर वेबहुक्स पर डिलीवर करें चैनल सक्षम वाला कोई अलर्ट नियम अपनी थ्रेशहोल्ड पार करता है, तब भेजा जाता है। नॉन-ब्लॉकिंग। कोई नियम एक बार फायर होता है और फिर अपने कूलडाउन का पालन करता है, इसलिए लगातार उल्लंघन से हर कूलडाउन विंडो में एक इवेंट बनता है।
{
"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 | अलर्ट फायरिंग आईडी — एनवेलप की डिलीवरी event_id से अलग |
rule_id, rule_name | UUID, स्ट्रिंग | वह नियम जो फायर हुआ |
metric | स्ट्रिंग | success_rate, failure_rate, avg_score, call_volume, या suite_regression |
comparator | स्ट्रिंग | lt, lte, gt, या gte |
metric_value | नंबर | नियम फायर होने के समय विंडो में मेट्रिक का मान |
threshold | नंबर | कॉन्फ़िगर की गई थ्रेशहोल्ड |
window_hours | इंटीजर | ट्रेलिंग मूल्यांकन विंडो |
fired_at | टाइमस्टैम्प |
नियम, मेट्रिक, कूलडाउन, और ईमेल / Slack चैनल बनाने के लिए अलर्ट्स गाइड देखें।
संबंधित
ब्लॉकिंग इनबाउंड-कॉल पेलोड, जिसका आपको जवाब देना आवश्यक है।
कॉल के बाद का ट्रांसक्रिप्ट और मेट्रिक।
इन इवेंट्स के किसी सबसेट के लिए एक URL सब्सक्राइब करें।
telephony.tool / web.tool इवेंट्स कैसे जनरेट होते हैं।