वेबहुक्स
वेबहुक्स
वेबहुक इवेंट्स पाकर बाहरी इंटीग्रेशन सक्षम करें।
परिचय
ElevenLabs में कुछ इवेंट्स को वेबहुक ट्रिगर करने के लिए कॉन्फ़िगर किया जा सकता है, जिससे बाहरी ऐप्लिकेशन और सिस्टम इन इवेंट्स के होने पर उन्हें प्राप्त और प्रोसेस कर सकें। फ़िलहाल समर्थित इवेंट टाइप में शामिल हैं:
कॉन्फ़िगरेशन
वेबहुक को सामान्य सेटिंग्स पेज से बनाया, बंद और हटाया जा सकता है। वर्कस्पेसेज़ के यूज़र्स के लिए, केवल वर्कस्पेस एडमिन ही वर्कस्पेस के वेबहुक कॉन्फ़िगर कर सकते हैं।

बनाने के बाद, वेबहुक को Agents Platform जैसी प्रोडक्ट सेटिंग्स में इवेंट्स सुनने के लिए चुना जा सकता है।
वेबहुक को कभी भी सामान्य सेटिंग्स पेज से बंद किया जा सकता है। अगर लगातार 10 या उससे ज़्यादा बार डिलीवरी विफल हो और आखिरी सफल डिलीवरी 7 दिन से ज़्यादा पहले हुई हो या कभी सफल डिलीवरी न हुई हो, तो बार-बार विफल होने वाले वेबहुक अपने-आप बंद हो जाते हैं। अपने-आप बंद हुए वेबहुक को सेटिंग्स पेज से फिर से सक्षम करना होगा। अगर वे किसी प्रोडक्ट में उपयोग नहीं हो रहे हैं, तो उन्हें हटाया जा सकता है।
दोबारा कोशिशें
किसी अनुरोध के विफल होने पर डिलीवरी की फिर से कोशिश करने के लिए, हर वेबहुक पर रिट्राई सक्षम किया जा सकता है। रिट्राई डिफ़ॉल्ट रूप से बंद होते हैं। API या वेबहुक सेटिंग्स से वेबहुक बनाते या अपडेट करते समय रिट्राई सक्षम करें।
post_call_transcription वेबहुक के लिए समर्थित हैं।रिट्राई शेड्यूल
जब डिलीवरी का प्रयास रिट्राई किए जा सकने वाले एरर के साथ विफल होता है, तो सिस्टम प्रयासों के बीच बढ़ती देरी के साथ अधिकतम 5 बार फिर से कोशिश करता है:
लोड को वितरित करने और थंडरिंग हर्ड समस्याओं से बचने के लिए, हर रिट्राई में थोड़ी रैंडम जिटर (देरी का 10% तक) जोड़ी जाती है।
रिट्राई किए जा सकने वाले एरर
हर विफलता रिट्राई ट्रिगर नहीं करती। केवल निम्न HTTP स्टेटस कोड रिट्राई किए जा सकने वाले माने जाते हैं:
5xxस्टेटस कोड (सर्वर एरर, जैसे 500, 502, 503, 504)।429(बहुत ज़्यादा अनुरोध)।408(अनुरोध टाइम आउट)।
4xx रेंज के अनुरोध एरर (जैसे 400, 401, 403, 404) पर रिट्राई नहीं किया जाता, क्योंकि वे आम तौर पर ऐसी कॉन्फ़िगरेशन समस्या बताते हैं जिसे मैन्युअल रूप से ठीक करना ज़रूरी होता है।
हर वेबहुक की क्यू सीमा
हर वेबहुक में अधिकतम 100 लंबित रिट्राई जॉब हो सकते हैं। अगर किसी वेबहुक में 100 से ज़्यादा रिट्राई क्यू में जमा हो जाते हैं, तो मौजूदा रिट्राई प्रोसेस होने तक अतिरिक्त जॉब हटा दिए जाते हैं। इससे गलत तरीके से कॉन्फ़िगर किया गया एक वेबहुक अत्यधिक संसाधनों का उपयोग नहीं कर पाता।
अपने-आप बंद होने का व्यवहार
सिस्टम हर वेबहुक के लिए लगातार डिलीवरी विफलताओं को ट्रैक करता है। नीचे दी गई दोनों शर्तें पूरी होने पर वेबहुक अपने-आप बंद हो जाता है:
- लगातार 10 या उससे ज़्यादा डिलीवरी विफलताएं हुई हों।
- वेबहुक की कभी सफल डिलीवरी नहीं हुई हो, या आखिरी सफल डिलीवरी 7 दिन से ज़्यादा पहले हुई हो।
जब कोई वेबहुक अपने-आप बंद होता है, तो वर्कस्पेस एडमिन को ईमेल सूचना मिलती है। डिलीवरी फिर से शुरू होने से पहले वेबहुक को सेटिंग्स पेज से मैन्युअल रूप से फिर से सक्षम करना होगा।
इंटीग्रेशन
वेबहुक के साथ इंटीग्रेट करने के लिए, POST अनुरोधों के रूप में वेबहुक इवेंट डेटा पाने वाला एंडपॉइंट हैंडलर बनाएं। सिग्नेचर वैलिडेट करने के बाद, सफल प्राप्ति बताने के लिए हैंडलर को तुरंत HTTP 200 लौटाना चाहिए। सफल रिस्पॉन्स लौटाने में बार-बार विफलता होने पर वेबहुक अपने-आप बंद हो सकता है।
रिट्राई पेलोड मूल डिलीवरी प्रयास जैसा ही होता है। वेबहुक कंज़्यूमर केवल पेलोड से शुरुआती डिलीवरी और रिट्राई में अंतर नहीं कर सकते, इसलिए अपने हैंडलर को idempotent बनाएं — एक ही इवेंट को कई बार प्रोसेस करने पर एक ही परिणाम मिलना चाहिए। ज़रूरत हो तो इवेंट्स को डुप्लिकेट हटाने के लिए event_timestamp और इवेंट-विशिष्ट आइडेंटिफ़ायर (जैसे conversation_id) का उपयोग करें।
टॉप-लेवल फ़ील्ड्स
उदाहरण वेबहुक पेलोड
ऑथेंटिकेशन
लिस्नर के लिए सभी इनकमिंग वेबहुक को वैलिडेट करना ज़रूरी है। वेबहुक फ़िलहाल HMAC सिग्नेचर के ज़रिए ऑथेंटिकेशन सपोर्ट करते हैं। HMAC ऑथेंटिकेशन सेट अप करने के लिए:
- वेबहुक बनाते समय जनरेट हुए शेयर किए गए सीक्रेट को सुरक्षित रूप से स्टोर करें
- SDK का इस्तेमाल करके अपने एंडपॉइंट में ElevenLabs-Signature हेडर को वेरिफ़ाई करें
JavaScript SDK में constructEvent और Python SDK में rawBody, sig_header, और secret के साथ construct_event उपलब्ध है (Python में इनके नाम payload / signature नहीं हैं)। दोनों सिग्नेचर वेरिफ़ाई करते हैं, टाइमस्टैम्प वैलिडेट करते हैं और JSON पेलोड पार्स करते हैं।
Python
JavaScript
FastAPI का इस्तेमाल करने वाले वेबहुक हैंडलर का उदाहरण: