您可以在互動畫布動作中實作下列回呼:
onUpdate()
onUpdate()
回呼會將 Webhook 中的資料傳遞至網頁應用程式加以更新
妥善設定網頁應用程式此回呼只能與伺服器端搭配使用
以及互動式畫布開發的執行要求模型。
如要進一步瞭解 onUpdate()
,請參閱
傳遞資料以更新網頁應用程式。
onTtsMark()
當onTtsMark()
<mark>
語音合成標記語言 (SSML)
系統會在文字轉語音 (TTS) 作業期間向使用者朗讀您的回應內容。你可以
在伺服器端和用戶端執行要求開發作業中,都使用 onTtsMark()
我們來看評估分類模型成效時
的喚回度和精確度指標
在下列程式碼片段中,onTtsMark()
會同步處理網頁應用程式的動畫
以及對應的 TTS 輸出內容。對使用者說出「很抱歉,
你輸了。」這個應用程式會讀出正確的字詞,並顯示字母
使用者。
在以下範例中,Webhook 處理常式 revealWord
包含自訂值
:
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()); }); …
接著,下列程式碼片段會註冊 onTtsMark()
回呼,並檢查
然後執行 revealCorrectWord()
函式,該函式將更新
網頁應用程式:
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()
輸入狀態變更時,onInputStatusChanged()
回呼會通知您
以及互動式畫布動作輸入狀態變更會指出
就會開啟並關閉麥克風,或是 Google 助理正在處理查詢時。
下列事件可能會導致輸入狀態發生變更:
- 使用者對您的動作說話時
- 使用者在 Android Google 搜尋應用程式 (AGSA) 上輸入文字
- 網頁應用程式使用
sendTextQuery()
API 將文字查詢傳送至動作 - 動作寫入住家儲存空間和其他 Google 助理事件的動作
這個回呼的主要用途是將動作與 透過語音互動取得資料舉例來說,如果使用者玩的是互動式遊戲 畫布遊戲並開啟麥克風,您可以在使用者同時暫停遊戲 說話。您也可以等到麥克風開啟時再傳送文字查詢給 並檢查 Google 助理是否收到驗證碼
這個 API 會回報下列狀態:
LISTENING
- 表示麥克風已開啟。IDLE
- 表示麥克風已關閉。PROCESSING
- 表示 Google 助理目前正在執行查詢,以及 就會關閉麥克風。
每次狀態變更時,API 都會將輸入狀態回報給動作。
雖然狀態之間可以轉換,但常見流程如下:
IDLE
>LISTENING
>PROCESSING
>IDLE
- 使用者說查詢 查詢,並關閉麥克風。IDLE
>PROCESSING
>IDLE
- 網頁應用程式使用sendTextQuery()
API 將文字查詢傳送至 Action。IDLE
>LISTENING
>IDLE
:使用者開啟麥克風,但未開啟 表示查詢
如要在動作中使用這項功能,請在網頁應用程式中加入 onInputStatusChanged()
程式碼,如以下程式碼片段所示:
onInputStatusChanged(inputStatus) {
console.log("The new input status is: ", inputStatus);
}
onInputStatusChanged()
回呼會傳回單一列舉參數。
inputStatus
。您可以檢查這個值瞭解目前的輸入狀態。
inputStatus
可以是 LISTENING
、PROCESSING
或 IDLE
。
接下來,將 onInputStatusChanged()
新增至 callbacks
物件進行註冊,如下所示:
如以下程式碼片段所示:
/**
* 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);
}
}