Puoi implementare i seguenti callback nell'azione Interactive Canvas:
onUpdate()
Il onUpdate()
callback trasmette i dati dal webhook all'app web per aggiornarli
in modo appropriato per l'app web. Devi utilizzare questo callback solo con il lato server
di completamento dello sviluppo di Interactive Canvas.
Per ulteriori informazioni su onUpdate()
, vedi
Trasmetti i dati per aggiornare l'app web.
onTtsMark()
Il callback onTtsMark()
viene chiamato quando i tag <mark>
personalizzati inclusi nella
Speech Synthesis Markup Language (SSML)
della tua risposta viene letta all'utente durante la sintesi vocale (TTS). Puoi
utilizza onTtsMark()
nello sviluppo del fulfillment lato server e lato client
di grandi dimensioni.
Negli snippet seguenti, onTtsMark()
sincronizza l'animazione dell'app web
con l'output della sintesi vocale corrispondente. Quando l'azione dice all'utente "Spiacenti,
che hai perso" l'app web si scrive la parola corretta e mostra le lettere
per l'utente.
Nell'esempio seguente, il gestore webhook revealWord
include una richiesta
contrassegna l'utente nella risposta quando ha perso il gioco:
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()); }); …
Il seguente snippet di codice registra quindi il callback onTtsMark()
, controlla la
nome del marchio ed esegue la funzione revealCorrectWord()
, che si aggiorna
nell'app 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()
Il callback onInputStatusChanged()
ti avvisa quando lo stato dell'ingresso cambia
nell'azione Canvas interattiva. Le modifiche dello stato dell'input indicano quando
il microfono si apre e si chiude o quando l'assistente elabora una query. La
i seguenti eventi possono causare la modifica dello stato dell'input:
- L'utente che parla all'azione
- L'utente che inserisce il testo nell'app Ricerca Google per Android
- L'app web che utilizza l'API
sendTextQuery()
per inviare una query di testo all'azione - L'azione scrive nello spazio di archiviazione di casa e in altri eventi dell'assistente
Il caso d'uso principale per questo callback è la sincronizzazione dell'azione con le interazioni vocali dell'utente. Ad esempio, se un utente sta riproducendo un video Canvas gioco e apre il microfono; puoi mettere in pausa il gioco mentre l'utente parla. Puoi anche attendere che il microfono sia aperto per inviare una query di testo a l'assistente per assicurarsi che lo riceva.
Questa API segnala i seguenti stati:
LISTENING
: indica che il microfono è aperto.IDLE
. Indica che il microfono è chiuso.PROCESSING
: indica che l'assistente sta attualmente eseguendo una query e il microfono sia chiuso.
L'API segnala lo stato dell'input all'azione ogni volta che lo stato cambia.
Sebbene sia possibile qualsiasi transizione tra stati, i seguenti flussi sono comuni:
IDLE
>LISTENING
>PROCESSING
>IDLE
- L'utente dice che una query, viene elaborata la query e il microfono si chiude.IDLE
>PROCESSING
>IDLE
: l'app web utilizza l'APIsendTextQuery()
per inviare una query di testo all'azione.IDLE
>LISTENING
>IDLE
: l'utente apre il microfono ma non lo apre pronuncia una query.
Per usare questa funzionalità nell'azione, aggiungi onInputStatusChanged()
alla tua app web
come mostrato nello snippet seguente:
onInputStatusChanged(inputStatus) {
console.log("The new input status is: ", inputStatus);
}
Il callback onInputStatusChanged()
restituisce un singolo parametro enum,
inputStatus
. Puoi controllare questo valore per visualizzare lo stato dell'input corrente. La
inputStatus
può essere LISTENING
, PROCESSING
o IDLE
.
Poi, aggiungi onInputStatusChanged()
all'oggetto callbacks
per registrarlo, come
mostrato nel seguente snippet:
/**
* 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);
}
}