ThunderPhone 2.0 आता लाइव्ह आहे.स्वतःच सुरू करा—2¢/मिनिटपासून.घोषणा वाचा

Webhooks

Webhook एंडपॉइंट्स

प्रत्येक एंडपॉइंटसाठी स्वतंत्र सीक्रेट्स आणि इव्हेंट फिल्टर्ससह अनेक webhook URL व्यवस्थापित करा.

एंडपॉइंट-आधारित वेबहुक प्रणाली तुम्हाला प्रत्येक संस्थेसाठी अनेक गंतव्ये नोंदवू देते, प्रत्येकाचे स्वतःचे गुपित, स्वतःची स्थिती आणि इव्हेंट प्रकारांच्या उपसंचासाठी स्वतःची सदस्यता असते. सर्व नवीन एकत्रीकरणांसाठी हे शिफारस केलेले मॉडेल आहे.

मागील सुसंगततेसाठी ठेवलेल्या, परंतु प्रत्येक संस्थेसाठी फक्त एक URL समर्थित असलेल्या लेगसी सिंगल-URL वेबहुकशी तुलना करा.

एंडपॉइंट्स

पद्धतपथआवश्यक भूमिकावर्णन
GET/v1/developer/webhook-endpointsadmin+एंडपॉइंट्सची यादी करा
POST/v1/developer/webhook-endpointsadmin+एंडपॉइंट तयार करा
PATCH/v1/developer/webhook-endpoints/{endpoint_id}admin+लेबल / URL / इव्हेंट्स / स्थिती अद्यतनित करा
DELETE/v1/developer/webhook-endpoints/{endpoint_id}admin+एंडपॉइंट हटवा
POST/v1/developer/webhook-endpoints/{endpoint_id}/testadmin+स्वाक्षरीत चाचणी वितरण पाठवा
GET/v1/developer/webhook-deliveriesadmin+अलीकडील एंडपॉइंट आणि लेगसी वितरण परिणाम तपासा

एंडपॉइंट ऑब्जेक्ट

{
  "id": "c4d5e6f7-...",
  "label": "Production — Call events",
  "url": "https://example.com/thunderphone/hook",
  "events": ["telephony.incoming", "telephony.complete"],
  "status": "active",
  "agent_id": 42,
  "agent_name": "Support Agent",
  "secret_hint": "a1b2…9f0e",
  "created_at": "2026-04-20T18:24:10.113Z",
  "updated_at": "2026-04-20T18:24:10.113Z"
}
फील्डप्रकारवर्णन
idUUIDएंडपॉइंट id
labelstringप्रदर्शन नाव, 1–120 वर्ण
urlstringHTTPS URL; डेव्हलपमेंटसाठी http://localhost अनुमत आहे
eventsstring ची arrayसदस्यत्व घेतलेले इव्हेंट प्रकार (वैध मूल्ये पहा). रिकामी array स्पष्टपणे निवडाव्या लागणाऱ्या प्रति-टर्न इव्हेंट्स (telephony.turn / web.turn) वगळता सर्व इव्हेंट्सचे सदस्यत्व घेते
statusstringactive, disabled (हाताने थांबवलेले), किंवा failing (एकाही 2xx शिवाय डिलिव्हरीने तिचे 24 तासांचे retry वेळापत्रक संपवल्यावर आपोआप सेट होते)
agent_idinteger | nullहा एंडपॉइंट ज्या एजंटपुरता मर्यादित आहे तो एजंट; null म्हणजे संपूर्ण संस्थेसाठी
agent_namestring | nullमर्यादित एजंटचे नाव किंवा संपूर्ण संस्थेच्या एंडपॉइंटसाठी null
secret_hintstringस्वाक्षरी secret मधील पहिले 4 आणि शेवटचे 4 वर्ण, मधे ellipsis सह (a1b2…9f0e) — पूर्ण मूल्य उघड न करता तुम्ही स्थानिकरित्या जतन केलेल्या secret शी संदर्भ जुळवण्यासाठी पुरेसे
created_at, updated_attimestamp

वैध इव्हेंट प्रकार

events हे नेमक्या या संचाविरुद्ध पडताळले जाते — सूचीबाहेरील मूल्ये 400 परत करतात. प्रत्येक प्रकाराच्या payload संरचनेसाठी इव्हेंट्स कॅटलॉग पहा.

  • telephony.incoming, telephony.complete, telephony.tool, telephony.turn
  • web.incoming, web.complete, web.tool, web.turn
  • call.graded, call.data_extracted
  • campaign.completed
  • issue.reported, issue.escalated
  • test-call.completed
  • alert.triggered

issue.escalated ला एजंट संदर्भ नसतो आणि तो फक्त संपूर्ण संस्थेच्या एंडपॉइंट्सना वितरित केला जातो.

voice.ready आणि voice.failed स्पष्टपणे निवडता येत नाहीत. ते प्राप्त करण्यासाठी, events: [] सह संपूर्ण संस्थेचा एंडपॉइंट तयार करा. रिकामी इव्हेंट सूची telephony.turn आणि web.turn वगळता प्रत्येक समर्थित इव्हेंट प्राप्त करते; हे स्पष्टपणे निवडणे आवश्यक आहे.

एंडपॉइंट स्थिती

  • active — डिलिव्हरी सामान्यपणे सुरू राहतात.
  • disabledPATCH द्वारे हाताने थांबवलेले. कोणत्याही विनंत्या पाठवल्या जात नाहीत. आम्ही disabled एंडपॉइंटची स्थिती कधीही बदलत नाही; ती पुन्हा active करायची की नाही हे नेहमी तुमच्या निर्णयावर असते.
  • failing — एंडपॉइंटकडे जाणारी डिलिव्हरी एकाही 2xx शिवाय तिचे संपूर्ण retry वेळापत्रक (24 तासांत 8 प्रयत्न) संपवते तेव्हा आपोआप सेट होते. failing एंडपॉइंटला पुढील कोणताही ट्रॅफिक मिळत नाही. एंडपॉइंट दुरुस्त झाल्यावर, PATCH वापरून त्याची स्थिती पुन्हा active करा; ज्या डिलिव्हरींचे retry वेळापत्रक अद्याप संपलेले नाही, त्या जिथे थांबल्या होत्या तिथून पुन्हा सुरू होतात.

एंडपॉइंट्सची सूची

cURL
curl https://api.thunderphone.com/v1/developer/webhook-endpoints \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"

एंडपॉइंट ऑब्जेक्ट्सची array परत करते. फक्त त्या एजंटपुरते मर्यादित एंडपॉइंट्स परत करण्यासाठी ?agent_id=42 पास करा.

एजंट-पुरते मर्यादित एंडपॉइंट्स

संपूर्ण संस्थेचे एंडपॉइंट्स प्रत्येक जुळणारा इव्हेंट प्राप्त करतात. agent_id असलेला एंडपॉइंट फक्त त्या एजंटने हाताळलेल्या कॉल्ससाठीचे जुळणारे इव्हेंट प्राप्त करतो; alert.triggered सारखे एजंट संदर्भ नसलेले इव्हेंट त्याच्यापर्यंत कधीही पोहोचत नाहीत. तुम्ही एजंट बिल्डरच्या Webhooks विभागातूनही हे एंडपॉइंट्स तयार आणि व्यवस्थापित करू शकता.


एंडपॉइंट तयार करा

cURL
curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "label":  "Production — Call events",
    "url":    "https://example.com/thunderphone/hook",
    "events": ["telephony.incoming", "telephony.complete"]
  }'
Python
result = requests.post(
    "https://api.thunderphone.com/v1/developer/webhook-endpoints",
    headers={"Authorization": "Bearer sk_live_YOUR_API_KEY"},
    json={
        "label":  "Production — Call events",
        "url":    "https://example.com/thunderphone/hook",
        "events": ["telephony.incoming", "telephony.complete"],
    },
).json()
secret = result["secret"]
endpoint_id = result["id"]

विनंती फील्ड

फील्डप्रकारआवश्यकवर्णन
labelस्ट्रिंगहोय1–120 वर्ण
urlस्ट्रिंगहोयHTTPS URL (http फक्त localhost / 127.0.0.1 साठी अनुमत)
eventsअ‍ॅरेनाहीरिक्त/वगळल्यास telephony.turn / web.turn वगळता सर्व इव्हेंट्सची सदस्यता घेतली जाते; यांसाठी स्पष्ट सदस्यता आवश्यक आहे. वैध इव्हेंट प्रकार मध्ये सूचीबद्ध मूल्ये वापरणे आवश्यक आहे; डुप्लिकेट काढले जातात
agent_idपूर्णांक | nullनाहीया संस्थेतील एजंटपर्यंत वितरण मर्यादित करा; संस्थाभराच्या एंडपॉइंटसाठी वगळा किंवा null वापरा

एंडपॉइंट ऑब्जेक्ट सोबत 201 Created परत करते, तसेच मूळ स्वाक्षरी की असलेले अतिरिक्त शीर्ष-स्तरीय secret फील्ड परत करते — ही 48-वर्णांची हेक्स स्ट्रिंग आहे:

{
  "id": "c4d5e6f7-…",
  "label": "Production — Call events",
  "url": "https://example.com/thunderphone/hook",
  "events": ["telephony.incoming", "telephony.complete"],
  "status": "active",
  "secret_hint": "a1b2…9f0e",
  "created_at": "2026-04-20T18:24:10.113Z",
  "updated_at": "2026-04-20T18:24:10.113Z",
  "secret": "a1b2c37e08d94f5b16a2c8d90e7f3a4b5c6d7e8f90a19f0e"
}

एंडपॉइंट अपडेट करा

cURL
curl -X PATCH https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-... \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "label":  "Production — Call + Grade events",
    "events": ["telephony.incoming", "telephony.complete", "call.graded"]
  }'
फील्डप्रकारवर्णन
labelस्ट्रिंग
urlस्ट्रिंग
eventsअ‍ॅरे
statusस्ट्रिंगactive किंवा disabled. सर्व्हरने failing म्हणून चिन्हांकित केलेला एंडपॉइंट पुन्हा सक्षम करण्यासाठी active सेट करा
agent_idपूर्णांक | nullएंडपॉइंट मर्यादित करण्यासाठी एजंट आयडी सेट करा किंवा तो संस्थाभराचा करण्यासाठी null सेट करा

अपडेट केलेल्या एंडपॉइंट ऑब्जेक्ट सोबत 200 OK परत करते.


चाचणी डिलिव्हरी पाठवा

कॅनॉनिकल JSON सिरिअलायझेशन, X-ThunderPhone-Signature, डिलिव्हरी रेकॉर्डिंग आणि रीट्राय नोंदींसह, सामान्य डिलिव्हरी पाइपलाइन वापरून एका एंडपॉइंटला कृत्रिम webhook.test इव्हेंट पाठवा. चाचणी एंडपॉइंटच्या events फिल्टरकडे दुर्लक्ष करून निवडलेल्या एंडपॉइंटला लक्ष्य करते.

cURL
curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-.../test \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"

एंडपॉइंटला खालीलप्रमाणे एन्क्लोजर प्राप्त होते:

{
  "data": {
    "message": "ThunderPhone webhook test",
    "sent_at": "2026-07-17T20:12:34.567890+00:00"
  },
  "event_id": "2ad6507c-7d19-4498-9b2d-7e8f944ab5a1",
  "type": "webhook.test"
}

पहिल्या प्रयत्नानंतर API 200 OK परत करते, जरी गंतव्य त्रुटी परत करत असले तरी. डिलिव्हरीचा परिणाम पाहण्यासाठी success, status, response_code आणि error तपासा:

{
  "success": true,
  "event_id": "2ad6507c-7d19-4498-9b2d-7e8f944ab5a1",
  "event_type": "webhook.test",
  "status": "delivered",
  "response_code": 204,
  "error": ""
}

webhook.test कृत्रिम आहे आणि एंडपॉइंटच्या events सबस्क्रिप्शनमध्ये जोडता येत नाही. पहिला प्रयत्न अयशस्वी झाल्यास, डिलिव्हरी सामान्य इव्हेंट डिलिव्हरीप्रमाणेच रीट्राय वेळापत्रकाचे अनुसरण करते.

वास्तविक इव्हेंट स्वरूपासाठी ट्रिगर कॉन्फिगर करण्यासाठी, पर्यायी event_type पास करा. डिलिव्हरी तरीही कृत्रिम असते आणि त्यात "sample": true असते; कॉल-संबंधित नमुन्यांमध्ये call_id: 0 आणि agent_id: 0 वापरले जातात.

curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-.../test \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"event_type":"call.graded"}'

event_type वैध इव्हेंट प्रकारांमधील कोणतेही मूल्य स्वीकारते. ते वगळल्यास सामान्य webhook.test वर्तन कायम राहते.


एंडपॉइंट हटवा

cURL
curl -X DELETE https://api.thunderphone.com/v1/developer/webhook-endpoints/c4d5e6f7-... \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"

204 No Content परत करते. URL वरची डिलिव्हरी तात्काळ थांबते; प्रगतीत असलेले रीट्राय रद्द केले जातात.


डिलिव्हरी डीबग करा

वेबहुक पाठवला गेला नाही असा निष्कर्ष काढण्यापूर्वी, GET /v1/developer/webhook-deliveries तपासा. यात कॉल आयडी, URL ओरिजिन, HTTP स्टेटस, प्रयत्नांची संख्या, अलाउलिस्ट केलेली अपयश श्रेणी आणि पुढील रीट्राय वेळ यांसह दोन्ही वेबहुक प्रणालींमधील अलीकडील प्रयत्न दिसतात. ते कधीही इव्हेंट पेलोड, ट्रान्सक्रिप्ट, साठवलेला त्रुटी मजकूर, रिस्पॉन्स बॉडी किंवा URL पथ परत करत नाही.

तुम्ही हाच अलीकडील इतिहास एजंट्स → एजंट निवडा → वेबहुक्स → अलीकडील डिलिव्हरी मध्येही पाहू शकता. ओळींमध्ये एंडपॉइंट लेबल आणि सर्वात अलीकडील प्रयत्नाने वापरलेला URL ओरिजिन दिसतो. ही अपरिवर्तनीय ऑडिट लॉगऐवजी ऑपरेशनल स्थिती आहे: एंडपॉइंट हटवल्यास त्याच्या डिलिव्हरी ओळीही हटवल्या जातात.

n8n 404 साठी, प्रथम वर्कफ्लो सक्रिय आहे, POST स्वीकारतो आणि चाचणी URL ऐवजी प्रॉडक्शन वेबहुक URL वापरतो याची पुष्टी करा. 401 किंवा 403 हे ऑथेंटिकेशन किंवा सिग्नेचर व्हॅलिडेशनकडे निर्देश करतात; टाइमआउट गंतव्य लेटन्सी किंवा उपलब्धतेकडे निर्देश करतात; TLS त्रुटी सर्टिफिकेट चेन, होस्टनेम किंवा कालबाह्यतेकडे निर्देश करतात.


संबंधित