Sie können die folgenden Callbacks in Ihrer interaktiven Canvas-Aktion implementieren:
onUpdate()
Der onUpdate()
-Callback übergibt Daten vom Webhook an die Web-App, um sie zu aktualisieren
Web-App entsprechend anpassen. Sie sollten diesen Callback nur bei der serverseitigen
Ausführungsmodell der Interactive Canvas-Entwicklung.
Weitere Informationen zu onUpdate()
finden Sie unter
Daten übergeben, um die Web-App zu aktualisieren
onTtsMark()
Der onTtsMark()
-Callback wird aufgerufen, wenn benutzerdefinierte <mark>
-Tags im
Speech Synthesis Markup Language (SSML)
Ihrer Antwort werden dem Nutzer während der Sprachausgabe vorgelesen. Sie können
onTtsMark()
sowohl bei der Entwicklung der serverseitigen als auch der clientseitigen Auftragsausführung verwenden
Modelle.
In den folgenden Snippets synchronisiert onTtsMark()
die Animation der Web-App
mit der entsprechenden Text-in-Sprache-Ausgabe. Wenn die Aktion zum Nutzer sagt:
die Sie verloren haben.“ buchstabiert die Web-App das richtige Wort und zeigt die Buchstaben an,
Nutzenden.
Im folgenden Beispiel enthält der Webhook-Handler revealWord
einen benutzerdefinierten
in der Antwort an den Nutzer, wenn er das Spiel verloren hat:
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()); }); …
Das folgende Code-Snippet registriert dann den onTtsMark()
-Callback und prüft die
der Marke und führt die Funktion revealCorrectWord()
aus, die
der Webanwendung:
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()
Der onInputStatusChanged()
-Callback benachrichtigt dich, wenn sich der Eingabestatus ändert.
in Ihrer Interactive Canvas Action. Änderungen des Eingabestatus zeigen an,
Das Mikrofon wird geöffnet und geschlossen oder wenn Assistant eine Anfrage verarbeitet. Die
folgende Ereignisse können dazu führen, dass sich der Eingabestatus ändert:
- Der Nutzer, der mit deiner Aktion spricht
- Der Nutzer, der Text in die Google Suche App (AGSA) für Android eingibt
- Die Webanwendung, die die
sendTextQuery()
API zum Senden einer Textanfrage an die Aktion verwendet - Die Aktion schreibt in den Speicher des Zuhauses und andere Assistant-Ereignisse
Der primäre Anwendungsfall für diesen Callback ist die Synchronisierung deiner Aktion mit der Sprachinteraktionen der Nutzenden. Spielt ein Nutzer beispielsweise ein interaktives Canvas-Spiel und öffnet das Mikrofon. Sie können das Spiel anhalten, während der Nutzer spricht. Sie können auch warten, bis das Mikrofon eingeschaltet ist, bevor Sie eine Textanfrage an um zu prüfen, ob sie empfangen wurde.
Diese API meldet die folgenden Status:
LISTENING
: Das Mikrofon ist eingeschaltet.IDLE
: Das Mikrofon ist geschlossen.PROCESSING
: Gibt an, dass Assistant gerade eine Anfrage ausführt, und wenn das Mikrofon geschlossen ist.
Die API meldet den Eingabestatus jedes Mal an deine Aktion, wenn sich der Status ändert.
Obwohl jeder Übergang zwischen Zuständen möglich ist, sind die folgenden Abläufe üblich:
IDLE
>LISTENING
>PROCESSING
>IDLE
: Der Nutzer stellt eine Anfrage, mit der wird verarbeitet und das Mikrofon wird ausgeschaltet.IDLE
>PROCESSING
>IDLE
– Die Web-App verwendet diesendTextQuery()
API um eine Textanfrage an die Aktion zu senden.IDLE
>LISTENING
>IDLE
: Der Nutzer öffnet das Mikrofon, schließt aber nicht etwa eine Suchanfrage.
Um diese Funktion in deiner Aktion zu verwenden, füge onInputStatusChanged()
deiner Web-App hinzu
wie im folgenden Snippet gezeigt:
onInputStatusChanged(inputStatus) {
console.log("The new input status is: ", inputStatus);
}
Der onInputStatusChanged()
-Callback gibt einen einzelnen enum-Parameter zurück.
inputStatus
. Sie können diesen Wert überprüfen, um den aktuellen Eingabestatus zu sehen. Die
inputStatus
kann LISTENING
, PROCESSING
oder IDLE
sein.
Fügen Sie als Nächstes onInputStatusChanged()
zum Objekt callbacks
hinzu, um es zu registrieren:
wie im folgenden Snippet dargestellt:
/**
* 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);
}
}