क्लाइंट इवेंट्स
क्लाइंट इवेंट्स
कन्वर्सेशनल ऐप्लिकेशन के दौरान क्लाइंट को मिलने वाले रीयल-टाइम इवेंट्स को समझें और हैंडल करें।
क्लाइंट इवेंट्स सर्वर से क्लाइंट को भेजे जाने वाले सिस्टम-लेवल इवेंट्स हैं, जो रीयल-टाइम कम्यूनिकेशन को आसान बनाते हैं। ये इवेंट्स क्लाइंट ऐप्लिकेशन को ऑडियो, ट्रांसक्रिप्शन, एजेंट रिस्पॉन्स और अन्य ज़रूरी जानकारी देते हैं।
क्लाइंट से सर्वर को भेजे जा सकने वाले इवेंट्स की जानकारी के लिए क्लाइंट-से-सर्वर इवेंट्स दस्तावेज़ देखें।
परिचय
क्लाइंट इवेंट्स बातचीत की रीयल-टाइम प्रकृति बनाए रखने के लिए ज़रूरी हैं। ये इनिशियलाइज़ेशन मेटाडेटा से लेकर प्रोसेस्ड ऑडियो और एजेंट रिस्पॉन्स तक सब कुछ देते हैं।
ये इवेंट्स WebSocket कम्यूनिकेशन प्रोटोकॉल का हिस्सा हैं और हमारे SDKs इन्हें अपने-आप हैंडल करते हैं। उन्नत इम्प्लीमेंटेशन और डीबगिंग के लिए इन्हें समझना ज़रूरी है।
क्लाइंट इवेंट के प्रकार
conversation_initiation_metadata
- बातचीत शुरू करते समय अपने-आप भेजा जाता है
- बातचीत की सेटिंग्स और पैरामीटर इनिशियलाइज़ करता है
queue_status
- एजेंट के concurrency limit पर होने के दौरान कॉल क्यू में रखे गए कॉलर को ही भेजा जाता है
waiting,conversation_initiation_metadataके बाद और किसी भी होल्ड ऑडियो से पहले, एक बार भेजा जाता है- प्रतीक्षा समाप्त होने पर
admittedयाtimed_outएक बार भेजा जाता है।timed_outके बाद कोड 4300 के साथ WebSocket बंद हो जाता है - क्यू में मौजूद कॉलर को हमेशा भेजा जाता है। इसे एजेंट के
client_eventsकॉन्फ़िगरेशन में सक्षम करने की ज़रूरत नहीं है
कॉलर के क्यू में होने पर, होल्ड ऑडियो नियमित audio इवेंट के रूप में आता है। होल्ड ऑडियो को एजेंट की
आवाज़ मानने के बजाय, प्रतीक्षा स्थिति दिखाने के लिए इस इवेंट का इस्तेमाल करें।
ping
- तुरंत जवाब देने वाला हेल्थ चेक इवेंट
- SDK इसे अपने-आप संभालता है
- WebSocket कनेक्शन बनाए रखने के लिए इस्तेमाल होता है
audio
- प्लेबैक के लिए base64 एन्कोडेड ऑडियो शामिल होता है
- ट्रैकिंग और क्रम तय करने के लिए न्यूमेरिक इवेंट ID शामिल होती है
- वॉइस आउटपुट स्ट्रीमिंग संभालता है
- कैरेक्टर-लेवल टाइमिंग जानकारी वाला अलाइनमेंट डेटा शामिल होता है
WebRTC कनेक्शन पर audio इवेंट नहीं भेजा जाता, क्योंकि ऑडियो को LiveKit सीधे संभालता है।
user_transcript
- फ़ाइनल स्पीच-टू-टेक्स्ट नतीजे शामिल होते हैं
- यूज़र के पूरे कथन दिखाता है
- बातचीत के इतिहास के लिए इस्तेमाल होता है
agent_response
- एजेंट का पूरा संदेश शामिल होता है
- संदेश पूरा होने पर एक बार भेजा जाता है, इसलिए वॉइस बातचीत में यह आमतौर पर संदेश का ऑडियो स्ट्रीम होना शुरू होने के बाद आता है।
- डिस्प्ले और इतिहास के लिए इस्तेमाल होता है
एजेंट के टेक्स्ट को बनते ही दिखाने के लिए, इस इवेंट की प्रतीक्षा करने के बजाय नीचे दिए गए
agent_chat_response_part इवेंट का उपयोग करें।
agent_response_correction
- रुकावट के बाद का छोटा किया गया जवाब शामिल होता है
- दिखाए गए संदेश को अपडेट करता है
- बातचीत की सटीकता बनाए रखता है
agent_response_metadata
- कस्टम LLM रिस्पॉन्स से कोई भी मेटाडेटा शामिल होता है
- केवल कस्टम LLM इस्तेमाल करने पर भेजा जाता है
- इसे एजेंट के
client_eventsकॉन्फ़िगरेशन में साफ़ तौर पर सक्षम करना ज़रूरी है
यह इवेंट कस्टम LLM इंटीग्रेशन के लिए खास है। यह आपके कस्टम LLM सर्वर को रिस्पॉन्स के साथ अतिरिक्त मेटाडेटा भेजने देता है, जिसे क्लाइंट ऐप इस्तेमाल कर सकता है।
client_tool_call
- एजेंट जिस फ़ंक्शन को क्लाइंट से चलवाना चाहता है, उसके फ़ंक्शन कॉल को दिखाता है
- टूल का नाम, टूल कॉल ID और पैरामीटर शामिल होते हैं
- क्लाइंट-साइड पर फ़ंक्शन चलाना और नतीजा वापस सर्वर को भेजना ज़रूरी है
SDK इस्तेमाल करने पर, नतीजा वापस सर्वर को भेजने के लिए कॉलबैक उपलब्ध होते हैं।
agent_tool_response
- एजेंट द्वारा टूल फ़ंक्शन चलाने का संकेत देता है
- टूल मेटाडेटा और चलाने की स्थिति शामिल होती है
- बातचीत के दौरान एजेंट द्वारा टूल इस्तेमाल करने की जानकारी देता है
agent_tool_response_full_payload
agent_tool_responseको मिरर करता है और टूल के पूरे रिज़ल्ट पेलोड कोfull_tool_resultमें स्ट्रिंग के रूप में भी स्ट्रीम करता है।- डिस्प्ले या आगे की प्रोसेसिंग के लिए क्लाइंट में टूल आउटपुट दिखाता है।
- इसे एजेंट के
client_eventsकॉन्फ़िगरेशन में साफ़ तौर पर सक्षम करना ज़रूरी है।
यह इवेंट क्लाइंट को टूल का पूरा नतीजा दिखाता है और इसमें संवेदनशील डेटा हो सकता है। इसे केवल तभी सक्षम करें, जब क्लाइंट पेलोड को सुरक्षित रूप से संभालने के लिए भरोसेमंद हो। 64 KB से बड़े नतीजे अपने-आप छोटे कर दिए जाते हैं।
React
JavaScript
vad_score
- वॉइस एक्टिविटी डिटेक्शन स्कोर इवेंट
- यूज़र के बोलने की संभावना बताता है
- वैल्यू 0 से 1 तक होती हैं; ज़्यादा वैल्यू बोलने की ज़्यादा निश्चितता बताती हैं
mcp_tool_call
- एजेंट द्वारा MCP टूल फ़ंक्शन चलाने का संकेत देता है
- टूल का नाम, टूल कॉल ID और पैरामीटर शामिल होते हैं
- चार में से किसी एक स्थिति के साथ कॉल किया जाता है:
loading,awaiting_approval,successऔरfailure।
agent_chat_response_part
- एजेंट के जवाब का टेक्स्ट बनते ही
start,deltaऔरstopमैसेज के रूप में स्ट्रीम करता है - टेक्स्ट-ओनली मोड में हमेशा भेजा जाता है; वॉइस बातचीत में इसे एजेंट के
client_eventsकॉन्फ़िगरेशन में साफ़ तौर पर सक्षम करना ज़रूरी है - एजेंट या कोई सक्रिय प्रक्रिया blocking guardrail इस्तेमाल करते समय नहीं भेजा जाता, क्योंकि किसी भी हिस्से को जारी करने से पहले उसे पूरे जवाब का मूल्यांकन करना होता है
response_idस्ट्रीम किए जा रहे मैसेज की पहचान करता है और बाद में उसे कमिट करने वालेagent_responseकेresponse_idसे मेल खाता है
agent_reasoning_response_part
agent_reasoning_response_part टेक्स्ट-ओनली बातचीत के दौरान मॉडल से मिला रीजनिंग स्ट्रीम करता है।
client_events में इवेंट सक्षम करें और एजेंट के लिए रीजनिंग
सारांश चालू करें। सर्वर start, delta और stop
मैसेज भेजता है। यह वॉइस बातचीत के दौरान या एजेंट अथवा कोई सक्रिय प्रक्रिया blocking guardrails इस्तेमाल करते समय
यह इवेंट नहीं भेजता।
यह इवेंट और इससे जुड़ा SDK कॉलबैक एक्सपेरिमेंटल हैं। इनका व्यवहार और स्वरूप किसी भी रिलीज़ में बदल सकता है।
स्टार्ट और स्टॉप इवेंट में text वैल्यू खाली होती है।
agent_response_complete
- एजेंट का जवाब पूरा होने पर ट्रिगर होता है, जिसमें लंबित टूल कॉल भी शामिल हैं। इस इवेंट के बाद एजेंट तभी आगे आउटपुट देगा, जब यूज़र नया इनपुट देगा या टर्न टाइमआउट नया टर्न शुरू करेगा।
- इसे एजेंट के
client_eventsकॉन्फ़िगरेशन में साफ़ तौर पर सक्षम करना ज़रूरी है
guardrail_triggered
- गार्डरेल उल्लंघन के कारण बातचीत खत्म होने पर ट्रिगर होता है। गार्डरेल के ऐसे रिट्राई पर नहीं भेजा जाता जो सफल हो जाए।
- इवेंट खुद ही संकेत है — इसमें
typeफ़ील्ड के अलावा कोई पेलोड नहीं होता। - इसे एजेंट के
client_eventsकॉन्फ़िगरेशन में साफ़ तौर पर सक्षम करना ज़रूरी है।
इवेंट फ्लो
किसी बातचीत के दौरान इवेंट्स का एक सामान्य क्रम यह होता है:
जब कोई एजेंट अपनी concurrency limit पर होता है और कॉल क्यूइंग चालू होती है, तो सर्वर conversation_initiation_metadata और पहले audio इवेंट के बीच queue_status इवेंट भेजता है। कॉलर को अनुमति मिलने तक होल्ड ऑडियो audio इवेंट्स के रूप में दिया जाता है।
बेहतरीन तरीके
-
एरर हैंडलिंग
- हर इवेंट टाइप के लिए सही एरर हैंडलिंग लागू करें
- डिबगिंग के लिए महत्वपूर्ण इवेंट्स लॉग करें
- कनेक्शन में रुकावटों को सहजता से संभालें
-
ऑडियो प्रबंधन
- ऑडियो चंक्स को सही तरीके से बफ़र करें
- रुकावट होने पर सही क्लीनअप लागू करें
- ऑडियो रिसोर्स प्रबंधन संभालें
-
कनेक्शन प्रबंधन
- PING इवेंट्स का तुरंत जवाब दें
- री-कनेक्शन लॉजिक लागू करें
- कनेक्शन की स्थिति मॉनिटर करें
समस्या निवारण
कनेक्शन संबंधी समस्याएं
- सही WebSocket कनेक्शन सुनिश्चित करें
- PING/PONG रिस्पॉन्स जांचें
- API क्रेडेंशियल्स सत्यापित करें
ऑडियो संबंधी समस्याएं
- ऑडियो चंक हैंडलिंग जांचें
- ऑडियो फ़ॉर्मैट अनुकूलता सत्यापित करें
- मेमोरी उपयोग मॉनिटर करें
इवेंट हैंडलिंग
- डिबगिंग के लिए सभी इवेंट्स लॉग करें
- एरर बाउंड्रीज़ लागू करें
- इवेंट हैंडलर रजिस्ट्रेशन जांचें
विस्तृत इम्प्लीमेंटेशन उदाहरणों के लिए हमारा SDK दस्तावेज़ देखें।