Geri çağırma işlevleri

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

onUpdate()

onUpdate()Geri çağırma, güncellemek için webhook'unuzdan web uygulamanıza veri iletir web uygulamasını uygun şekilde yükleyin. Bu geri çağırmayı yalnızca sunucu tarafı ile Interactive Canvas geliştirmesinin sipariş karşılama modeli.

onUpdate() hakkında daha fazla bilgi için bkz. Web uygulamasını güncellemek için verileri iletin.

onTtsMark()

onTtsMark() geri çağırma, özel <mark> etiketleri Konuşma Sentezi Biçimlendirme Dili (SSML) metin okuma (TTS) sırasında kullanıcıya sesli olarak okunur. Şunları yapabilirsiniz: onTtsMark() öğesini hem sunucu tarafı hem de istemci tarafı sipariş karşılama geliştirmede kullanma modeller.

Aşağıdaki snippet'lerde onTtsMark(), web uygulamasının animasyonunu senkronize eder karşılık gelen TTS çıkışıyla değiştirin. İşlem, kullanıcıya "Maalesef "kaybettiniz" demek yerine web uygulaması doğru kelimeyi yazıyor ve harfleri gösterir.

Aşağıdaki örnekte revealWord adlı webhook işleyicisi, Oyunu kaybettiğinde kullanıcıya verilecek yanıtta işaretini kaldırın:

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

Daha sonra aşağıdaki kod snippet'i onTtsMark() geri çağırmasını kaydeder ve işaretinin adını belirtir ve güncellenen revealCorrectWord() işlevini yürütür. web uygulaması:

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()

Giriş durumu değiştiğinde onInputStatusChanged() geri çağırması sizi bilgilendirir. etkileşimli Tuval İşleminizde kullanabilirsiniz. Giriş durumu değişiklikleri, Mikrofon açılıp kapanırken veya Asistan bir sorguyu işlerken. İlgili içeriği oluşturmak için kullanılan Aşağıdaki olaylar giriş durumunun değişmesine neden olabilir:

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

Bu geri çağırmanın birincil kullanım alanı, İşleminizi kullanıcının sesli etkileşimleri. Örneğin, kullanıcı etkileşimli bir oyun oynuyorsa Canvas oyununu açıp mikrofonu açar. Kullanıcı çalışırken oyunu duraklatabilirsiniz. konuşur. Metin sorgusu göndermek için mikrofon açılana kadar bekleyebilirsiniz. Asistan'ı kullanarak mesajı alın.

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

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

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

Durumlar arasında herhangi bir geçiş mümkündür, ancak aşağıdaki akışlar yaygındır:

  • IDLE>LISTENING>PROCESSING>IDLE - Kullanıcı bir sorgu söyler, işleme alınır ve mikrofon kapatılır.
  • IDLE>PROCESSING>IDLE - Web uygulaması sendTextQuery() API'yi kullanır ifadesini kullanabilirsiniz.
  • IDLE>LISTENING>IDLE - Kullanıcı mikrofonu açar ancak açmaz bir sorgu söyleyin.

Bu özelliği işleminizde kullanmak için web uygulamanıza onInputStatusChanged() ekleyin aşağıdaki kodda gösterildiği gibi:

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

onInputStatusChanged() geri çağırması, tek bir enum parametresi iletir. inputStatus. Geçerli giriş durumunu görmek için bu değeri kontrol edebilirsiniz. İlgili içeriği oluşturmak için kullanılan inputStatus; LISTENING, PROCESSING veya IDLE olabilir.

Sonra, onInputStatusChanged() öğesini callbacks nesnesine ekleyerek kaydedin. aşağıdaki snippet'te gösterilmiştir:

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