Geri çağırma işlevleri

Etkileşimli Tuval İşleminize aşağıdaki geri çağırmaları uygulayabilirsiniz:

onUpdate()

onUpdate()Geri çağırma, web uygulamasını uygun şekilde güncellemek için webhook'unuzdan web uygulamanıza veri aktarır. Bu geri çağırmayı yalnızca Etkileşimli Tuval geliştirmenin sunucu tarafı karşılama modeliyle kullanmanız gerekir.

onUpdate() hakkında daha fazla bilgi edinmek için Web uygulamasını güncellemek için verileri iletme bölümünü inceleyin.

onTtsMark()

Metin Okuma (TTS) sırasında yanıtınızın Konuşma Sentezi Biçimlendirme Dili'ne (SSML) dahil edilen özel <mark> etiketleri kullanıcıya okunduğunda onTtsMark() geri çağırması çağrılır. onTtsMark() öğesini hem sunucu tarafı hem de istemci tarafı istek karşılama geliştirme modellerinde kullanabilirsiniz.

Aşağıdaki snippet'lerde onTtsMark(), web uygulamasının animasyonunu karşılık gelen TTS çıkışıyla senkronize eder. İşlem kullanıcıya "Üzgünüz, kaybettiniz" dediğinde web uygulaması doğru kelimeyi okur ve harfleri kullanıcıya gösterir.

Aşağıdaki örnekte revealWord adlı webhook işleyici, oyunu kaybettiğinde kullanıcıya verilen yanıtta özel bir işaret içeriyor:

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());
});
…
    

Aşağıdaki kod snippet'i daha sonra onTtsMark() geri çağırmasını kaydeder, işaretin adını kontrol eder ve web uygulamasını güncelleyen revealCorrectWord() işlevini yürütür:

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() geri çağırması, Etkileşimli Tuval İşleminizdeki giriş durumu değiştiğinde sizi bilgilendirir. Giriş durumu değişiklikleri, mikrofonun ne zaman açılıp kapandığını veya Asistan'ın bir sorguyu işlediğini gösterir. Aşağıdaki etkinlikler, giriş durumunun değişmesine neden olabilir:

  • İşleminizle konuşan kullanıcı
  • Kullanıcı, Android Google Arama uygulamasına (AGSA) metin giren bir kullanıcı
  • Action'a metin sorgusu göndermek için sendTextQuery() API kullanan web uygulaması
  • Evdeki depolama alanına ve diğer Asistan etkinliklerine yazma işlemi

Bu geri çağırmanın birincil kullanım alanı, İşleminizi kullanıcının sesli etkileşimleriyle senkronize etmektir. Örneğin, bir kullanıcı Etkileşimli Tuval oyunu oynarken mikrofonu açarsa kullanıcı konuşurken oyunu duraklatabilirsiniz. Ayrıca, Asistan'a metin sorgusu göndererek yanıtın alındığından emin olmak için mikrofon açılıncaya kadar bekleyebilirsiniz.

Bu API aşağıdaki durumları bildirir:

  • LISTENING - Mikrofonun açık olduğunu gösterir.
  • IDLE - Mikrofonun kapalı olduğunu gösterir.
  • PROCESSING: Asistan'ın şu anda bir sorgu yürüttüğünü ve mikrofonun kapalı olduğunu belirtir.

Durum her değiştiğinde API, İşleminize giriş durumunu bildirir.

Eyaletler arasında geçiş yapılması mümkün olsa da aşağıdaki akışlar yaygındır:

  • IDLE>LISTENING>PROCESSING>IDLE - Kullanıcı bir sorgu söyler, sorgu işlenir ve mikrofon kapanır.
  • IDLE>PROCESSING>IDLE - Web uygulaması, İşleme metin sorgusu göndermek için sendTextQuery() API'yi kullanır.
  • IDLE>LISTENING>IDLE - Kullanıcı mikrofonu açar ancak sorgu söylemez.

Bu özelliği İşleminizde kullanmak için aşağıdaki snippet'te gösterildiği gibi web uygulaması kodunuza onInputStatusChanged() ekleyin:

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

onInputStatusChanged() geri çağırma işlevi, tek bir enum parametresini (inputStatus) geri gönderir. Mevcut giriş durumunu görmek için bu değeri kontrol edebilirsiniz. inputStatus; LISTENING, PROCESSING veya IDLE olabilir.

Ardından, aşağıdaki snippet'te gösterildiği gibi kaydetmek için callbacks nesnesine onInputStatusChanged() ekleyin:

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