Rappels

Vous pouvez implémenter les rappels suivants dans votre action Interactive Canvas:

onUpdate()

Le rappel onUpdate() transmet les données de votre webhook à votre application Web pour la mise à jour l'application Web de manière appropriée. Vous ne devez utiliser ce rappel qu'avec la commande de développement d'Interactive Canvas.

Pour en savoir plus sur onUpdate(), consultez Transmettre des données pour mettre à jour l'application Web

onTtsMark()

Le rappel onTtsMark() est appelé lorsque des balises <mark> personnalisées sont incluses dans le Langage de balisage de synthèse vocale (SSML) de votre réponse sont lues à voix haute à l'utilisateur lors de la synthèse vocale. Vous pouvez utiliser onTtsMark() dans le développement de traitement côté serveur et côté client ; des modèles de ML.

Dans les extraits de code suivants, onTtsMark() synchronise l'animation de l'application Web. avec la sortie correspondante. Lorsque l'action dit à l'utilisateur : "Désolé, que vous avez perdu », l'application Web énonce le mot correct et affiche les lettres pour l'utilisateur.

Dans l'exemple suivant, le gestionnaire de webhooks revealWord inclut un élément personnalisé dans la réponse à l'utilisateur lorsqu'il a perdu la partie:

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

L'extrait de code suivant enregistre ensuite le rappel onTtsMark(), vérifie nom de la marque et exécute la fonction revealCorrectWord(), qui met à jour l'application Web:

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

Le rappel onInputStatusChanged() vous informe lorsque l'état de l'entrée change. dans votre action Interactive Canvas. Les changements d'état des entrées indiquent quand le micro s'ouvre et se ferme ou lorsque l'Assistant traite une requête. La Les événements suivants peuvent entraîner la modification de l'état de l'entrée:

  • L'utilisateur qui parle à votre action
  • Utilisateur saisissant du texte dans l'application Recherche Google pour Android.
  • L'application Web utilisant l'API sendTextQuery() pour envoyer une requête textuelle à l'action
  • Écriture de l'action sur l'espace de stockage personnel et d'autres événements de l'Assistant

Le cas d'utilisation principal de ce rappel est la synchronisation de votre action avec la les interactions vocales de l'utilisateur. Par exemple, si un utilisateur lance une session interactive Jeu en mode canevas et ouvre le micro, vous pouvez mettre le jeu en pause pendant que l'utilisateur parle. Vous pouvez également attendre que le micro soit ouvert avant d'envoyer une requête textuelle à l'Assistant pour s'assurer qu'il le reçoit.

Cette API indique les états suivants:

  • LISTENING : indique que le micro est ouvert.
  • IDLE : indique que le micro est fermé.
  • PROCESSING : indique que l'Assistant exécute actuellement une requête. le micro est fermé.

L'API indique l'état de l'entrée à votre action chaque fois que l'état change.

Bien que toute transition entre les états soit possible, les flux suivants sont courants:

  • IDLE>LISTENING>PROCESSING>IDLE : l'utilisateur énonce une requête, le requête est traitée et le micro se ferme.
  • IDLE>PROCESSING>IDLE : l'application Web utilise l'API sendTextQuery(). pour envoyer une requête textuelle à l'action.
  • IDLE>LISTENING>IDLE : l'utilisateur ouvre le micro, mais ne le fait pas. énoncez une requête.

Pour utiliser cette fonctionnalité dans votre action, ajoutez onInputStatusChanged() à votre application Web comme indiqué dans l'extrait suivant:

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

Le rappel onInputStatusChanged() renvoie un seul paramètre enum, inputStatus Vous pouvez vérifier cette valeur pour voir l'état actuel de la saisie. La inputStatus peut être LISTENING, PROCESSING ou IDLE.

Ajoutez ensuite onInputStatusChanged() à l'objet callbacks pour l'enregistrer, en tant que comme indiqué dans l'extrait suivant:

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