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'APIsendTextQuery()
. 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);
}
}