عمليات معاودة الاتصال

يمكنك تنفيذ عمليات الاستدعاء التالية في إجراء لوحة الرسم التفاعلي:

onUpdate()

تعمل ميزة onUpdate()معاودة الاتصال على تمرير البيانات من ردّك التلقائي على الويب إلى تطبيق الويب لتعديلها. تطبيق الويب بشكل مناسب. يجب عليك استخدام رد الاتصال هذا فقط مع جهة الخادم نموذج التنفيذ الخاص بتطوير لوحة الرسم التفاعلية.

لمزيد من المعلومات عن onUpdate()، يُرجى الاطّلاع على تمرير البيانات لتحديث تطبيق الويب.

onTtsMark()

يتم طلب استدعاء onTtsMark() عند تضمين علامات <mark> المخصّصة في لغة ترميزية تركيب الكلام (SSML) قراءة ردك للمستخدم أثناء تحويل النص إلى كلام (TTS). يمكنك استخدام 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() إشعارًا عند تغيُّر حالة الإدخال في مهمة Canvas التفاعلية تشير تغييرات حالة الإدخال إلى الوقت الذي يتمّ فتح الميكروفون وإغلاقه أو أثناء معالجة "مساعد Google" لطلب بحث. تشير رسالة الأشكال البيانية يمكن أن تؤدي الأحداث التالية إلى تغيير حالة الإدخال:

  • المستخدم يتحدث إلى الإجراء الخاص بك
  • المستخدم الذي يُدخل نصًا في تطبيق "بحث Google" على جهاز Android (AGSA)
  • تطبيق الويب الذي يستخدم واجهة برمجة تطبيقات sendTextQuery() لإرسال طلب بحث نصي إلى الإجراء
  • "كتابة الإجراء" إلى مساحة التخزين في المنزل وغيرها من الأحداث في "مساعد Google"

إن حالة الاستخدام الأساسية لمعاودة الاتصال هذه هي مزامنة الإجراء مع والتفاعلات الصوتية للمستخدم. فعلى سبيل المثال، إذا كان المستخدم يلعب لعبة لوحة الرسم وفتح الميكروفون، يمكنك إيقاف اللعبة مؤقتًا أثناء تشغيل المستخدم ويتحدث يمكنك أيضًا الانتظار إلى أن يتم فتح الميكروفون لإرسال طلب نصي إلى "مساعد Google" للتأكد من استلام الرسالة الإلكترونية

تعرض واجهة برمجة التطبيقات هذه الحالات التالية:

  • LISTENING: تشير هذه السمة إلى أن الميكروفون مفتوح.
  • IDLE: تشير هذه السمة إلى أن الميكروفون مغلق.
  • PROCESSING: تشير هذه السمة إلى أنّ "مساعد Google" ينفّذ طلب بحث حاليًا. الميكروفون مغلق.

تُبلغ واجهة برمجة التطبيقات عن حالة الإدخال في الإجراء الخاص بك في كل مرة تتغيّر فيها الحالة.

في حين أن أي انتقال بين الحالات ممكن، فإن التدفقات التالية شائعة:

  • 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.

بعد ذلك، أضِف onInputStatusChanged() إلى الكائن callbacks لتسجيله، باعتباره كما هو موضح في المقتطف التالي:

 /**
  * 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);
 }
}