कॉलबैक

अपने इंटरैक्टिव कैनवस ऐक्शन में, ये कॉलबैक लागू किए जा सकते हैं:

onUpdate()

onUpdate()कॉलबैक, डेटा को अपडेट करने के लिए आपके वेबहुक से आपके वेब ऐप्लिकेशन में भेजता है वेब ऐप्लिकेशन को सही तरीके से इस्तेमाल करना. आपको इस कॉलबैक का इस्तेमाल सिर्फ़ सर्वर-साइड के साथ करना चाहिए इंटरैक्टिव कैनवस डेवलपमेंट का पूरा मॉडल.

onUpdate() के बारे में ज़्यादा जानकारी के लिए, इसे देखें वेब ऐप्लिकेशन को अपडेट करने के लिए डेटा पास करें.

onTtsMark()

onTtsMark() कॉलबैक को तब कॉल किया जाता है, जब<mark> स्पीच सिंथेसिस मार्कअप लैंग्वेज (SSML) लिखाई को बोली में बदलने की सुविधा (टीटीएस) के दौरान, आपके जवाब को उपयोगकर्ता को पढ़कर सुनाया जाता है. आप सर्वर-साइड और क्लाइंट-साइड फ़ुलफ़िलमेंट डेवलपमेंट, दोनों में onTtsMark() का इस्तेमाल करें मॉडल.

नीचे दिए गए स्निपेट में, onTtsMark() वेब ऐप्लिकेशन के ऐनिमेशन को सिंक करता है उससे जुड़े टीटीएस आउटपुट के साथ. जब कार्रवाई ने उपयोगकर्ता से कहा, "माफ़ करें, तो आप हार गए हैं," वेब ऐप्लिकेशन सही शब्द लिखता है और अक्षर को उपयोगकर्ता है.

इस उदाहरण में, वेबहुक हैंडलर revealWord में जब उपयोगकर्ता गेम हार गया हो, तो उसके जवाब में मार्क करें:

JavaScript

…
app.handle('revealWord', conv => {
  conv.add(new Simple(`<speak>Sorry, you lost.<mark name="REVEAL_WORD"/> The word is ${conv.session.params.word}.</speak>`));
  conv.add(new Canvas());
});
…
    

इसके बाद, यह कोड स्निपेट onTtsMark() कॉलबैक को रजिस्टर करता है. साथ ही, मार्क का नाम सेट करता है और revealCorrectWord() फ़ंक्शन को लागू करता है. यह फ़ंक्शन अपडेट हो जाता है वेब ऐप्लिकेशन:

JavaScript


setCallbacks() {
    // declare Assistant Canvas Action callbacks
    const callbacks = {
        onTtsMark(markName) {
            if (markName === 'REVEAL_WORD') {
                // display the correct word to the user
                that.revealCorrectWord();
            }
        },
    }
    callbacks.onUpdate.bind(this);
}

    

onInputStatusChanged()

इनपुट के स्टेटस में बदलाव होने पर, onInputStatusChanged() कॉलबैक आपको इसकी सूचना देता है अपने इंटरैक्टिव कैनवस ऐक्शन में. इनपुट की स्थिति में बदलाव होने पर यह पता चलता है कि माइक्रोफ़ोन चालू और बंद हो जाता है या जब Assistant किसी क्वेरी को प्रोसेस कर रही होती है. कॉन्टेंट बनाने इन इवेंट की वजह से, इनपुट का स्टेटस बदल सकता है:

  • आपकी सेट की गई कार्रवाई को बोलने वाला उपयोगकर्ता
  • उपयोगकर्ता की ओर से Android के Google Search ऐप्लिकेशन (AGSA) पर टेक्स्ट डाला जा रहा है
  • कार्रवाई के लिए टेक्स्ट क्वेरी भेजने के लिए, sendTextQuery() एपीआई का इस्तेमाल करने वाला वेब ऐप्लिकेशन
  • होम स्टोरेज और Assistant के अन्य इवेंट के लिए लिखने की सुविधा

इस कॉलबैक का मुख्य इस्तेमाल का उदाहरण आपकी कार्रवाई को वॉइस इंटरैक्शन. उदाहरण के लिए, अगर कोई उपयोगकर्ता इंटरैक्टिव कैनवस गेम खेलकर माइक्रोफ़ोन को चालू कर दिया जाता है. जब तक उपयोगकर्ता ऐसा नहीं करता, तब तक आप गेम को रोक सकते हैं बोलता है. टेक्स्ट क्वेरी भेजने के लिए, माइक्रोफ़ोन के चालू होने तक भी इंतज़ार किया जा सकता है Assistant की मदद से पक्का करें कि यह मिल गया हो.

यह एपीआई इन स्थितियों के बारे में बताता है:

  • LISTENING - बताता है कि माइक्रोफ़ोन खुला है.
  • IDLE - बताता है कि माइक्रोफ़ोन बंद है.
  • PROCESSING - इससे पता चलता है कि Assistant अभी किसी क्वेरी पर काम कर रही है और माइक्रोफ़ोन बंद है.

हर बार स्टेटस बदलने पर, एपीआई आपकी कार्रवाई के इनपुट स्टेटस को रिपोर्ट करता है.

हालांकि, स्थितियों के बीच किसी भी तरह का ट्रांज़िशन हो सकता है. हालांकि, ये सामान्य तौर पर हो सकते हैं:

  • IDLE>LISTENING>PROCESSING>IDLE - उपयोगकर्ता ने कोई क्वेरी पूछी है, क्वेरी प्रोसेस हो जाती है और माइक्रोफ़ोन बंद हो जाता है.
  • IDLE>PROCESSING>IDLE - वेब ऐप्लिकेशन, sendTextQuery() एपीआई का इस्तेमाल करता है कार्रवाई को टेक्स्ट क्वेरी भेजने के लिए.
  • IDLE>LISTENING>IDLE - उपयोगकर्ता, माइक्रोफ़ोन खोलता है, लेकिन उसे नहीं खोलता कोई क्वेरी बोलें.

कार्रवाई में इस सुविधा का इस्तेमाल करने के लिए, अपने वेब ऐप्लिकेशन में onInputStatusChanged() जोड़ें दिया गया है, जैसा कि नीचे दिए गए स्निपेट में दिखाया गया है:

onInputStatusChanged(inputStatus) {
   console.log("The new input status is: ", inputStatus);
}

onInputStatusChanged() कॉलबैक, एक enum पैरामीटर वापस पास करता है, inputStatus. इनपुट का मौजूदा स्टेटस देखने के लिए, इस वैल्यू की जांच करें. कॉन्टेंट बनाने inputStatus, LISTENING, PROCESSING या IDLE हो सकता है.

इसके बाद, callbacks ऑब्जेक्ट को इस तरह रजिस्टर करने के लिए, उसमें onInputStatusChanged() जोड़ें निम्न स्निपेट में दिखाया गया है:

 /**
  * Register all callbacks used by the Interactive Canvas Action
  * executed during game creation time.
  */
 setCallbacks() {
   const that = this;
   // Declare the Interactive Canvas action callbacks.
   const callbacks = {
     onUpdate(data) {
       console.log('Received data', data);
     },
     onInputStatusChanged(inputStatus) {
       console.log("The new input status is: ", inputStatus);
     },
   };
   // Called by the Interactive Canvas web app once web app has loaded to
   // register callbacks.
   this.canvas.ready(callbacks);
 }
}