কলব্যাক

আপনি আপনার ইন্টারেক্টিভ ক্যানভাস অ্যাকশনে নিম্নলিখিত কলব্যাকগুলি বাস্তবায়ন করতে পারেন:

onUpdate()

onUpdate() কলব্যাক ওয়েব অ্যাপটিকে যথাযথভাবে আপডেট করতে আপনার ওয়েবহুক থেকে আপনার ওয়েব অ্যাপে ডেটা পাস করে। আপনার শুধুমাত্র ইন্টারেক্টিভ ক্যানভাস ডেভেলপমেন্টের সার্ভার-সাইড পূর্ণতা মডেলের সাথে এই কলব্যাকটি ব্যবহার করা উচিত।

onUpdate() সম্পর্কে আরও তথ্যের জন্য, ওয়েব অ্যাপ আপডেট করতে পাস ডেটা দেখুন।

onTtsMark()

onTtsMark() কলব্যাক বলা হয় যখন টেক্সট টু স্পিচ (TTS) এর সময় আপনার প্রতিক্রিয়ার স্পিচ সিন্থেসিস মার্কআপ ল্যাঙ্গুয়েজ ( SSML ) এ অন্তর্ভুক্ত কাস্টম <mark> ট্যাগগুলি ব্যবহারকারীর কাছে পড়ে শোনানো হয়। আপনি সার্ভার-সাইড এবং ক্লায়েন্ট-সাইড পরিপূর্ণতা উন্নয়ন মডেল উভয় ক্ষেত্রেই onTtsMark() ব্যবহার করতে পারেন।

নিম্নলিখিত স্নিপেটে, onTtsMark() সংশ্লিষ্ট TTS আউটপুটের সাথে ওয়েব অ্যাপের অ্যানিমেশন সিঙ্ক্রোনাইজ করে। যখন অ্যাকশন ব্যবহারকারীকে বলে, "দুঃখিত, আপনি হারিয়েছেন," ওয়েব অ্যাপটি সঠিক শব্দটি বানান করে এবং ব্যবহারকারীর কাছে অক্ষরগুলি প্রদর্শন করে।

নিম্নলিখিত উদাহরণে, ওয়েবহুক হ্যান্ডলার revealWord ব্যবহারকারীর প্রতিক্রিয়াতে একটি কাস্টম চিহ্ন অন্তর্ভুক্ত করে যখন তারা গেমটি হারিয়ে ফেলে:

জাভাস্ক্রিপ্ট

…
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() ফাংশনটি চালায়, যা ওয়েব অ্যাপ আপডেট করে:

জাভাস্ক্রিপ্ট

…
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 একটি ক্যোয়ারী প্রক্রিয়া করছে। নিম্নলিখিত ইভেন্টগুলি ইনপুট স্থিতি পরিবর্তন করতে পারে:

  • ব্যবহারকারী আপনার অ্যাকশনের সাথে কথা বলছেন
  • অ্যান্ড্রয়েড গুগল সার্চ অ্যাপে (এজিএসএ) ব্যবহারকারী পাঠ্য ইনপুট করছে
  • অ্যাকশনে একটি পাঠ্য ক্যোয়ারী পাঠাতে sendTextQuery() API ব্যবহার করে ওয়েব অ্যাপ
  • হোম স্টোরেজ এবং অন্যান্য অ্যাসিস্ট্যান্ট ইভেন্টে অ্যাকশন লেখা

এই কলব্যাকের প্রাথমিক ব্যবহারের ক্ষেত্রে ব্যবহারকারীর ভয়েস ইন্টারঅ্যাকশনের সাথে আপনার অ্যাকশন সিঙ্ক্রোনাইজ করা হচ্ছে। উদাহরণস্বরূপ, যদি একজন ব্যবহারকারী একটি ইন্টারেক্টিভ ক্যানভাস গেম খেলছেন এবং মাইক্রোফোন খোলেন, ব্যবহারকারী কথা বলার সময় আপনি গেমটি বিরতি দিতে পারেন। অ্যাসিস্ট্যান্টকে টেক্সট কোয়েরি পাঠানোর জন্য মাইক্রোফোন খোলা না হওয়া পর্যন্ত আপনি অপেক্ষা করতে পারেন।

এই API নিম্নলিখিত অবস্থা রিপোর্ট করে:

  • LISTENING - নির্দেশ করে যে মাইক্রোফোন খোলা আছে৷
  • IDLE - নির্দেশ করে যে মাইক্রোফোন বন্ধ আছে।
  • PROCESSING - নির্দেশ করে যে অ্যাসিস্ট্যান্ট বর্তমানে একটি কোয়েরি চালাচ্ছে এবং মাইক্রোফোন বন্ধ রয়েছে।

এপিআই প্রতিবার স্ট্যাটাস পরিবর্তিত হলে আপনার অ্যাকশনে ইনপুট স্ট্যাটাস রিপোর্ট করে।

রাজ্যগুলির মধ্যে যে কোনও পরিবর্তন সম্ভব হলেও, নিম্নলিখিত প্রবাহগুলি সাধারণ:

  • IDLE > LISTENING > PROCESSING > IDLE - ব্যবহারকারী একটি ক্যোয়ারী বলে, কোয়েরি প্রক্রিয়া করা হয় এবং মাইক্রোফোন বন্ধ হয়ে যায়।
  • IDLE > PROCESSING > IDLE - ওয়েব অ্যাপটি অ্যাকশনে একটি টেক্সট কোয়েরি পাঠাতে sendTextQuery() API ব্যবহার করে।
  • 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);
 }
}