コールバック

Interactive Canvas アクションに次のコールバックを実装できます。

onUpdate()

onUpdate() コールバックは、Webhook からウェブアプリにデータを渡して更新します。 適切に実装する必要があります。このコールバックはサーバーサイドの Interactive Canvas 開発のフルフィルメント モデルです。

onUpdate() の詳細については、以下をご覧ください。 ウェブアプリを更新するためのデータを渡します

onTtsMark()

onTtsMark() コールバックは、カスタム <mark> タグが 音声合成マークアップ言語(SSML) テキスト読み上げ(TTS)中にユーザーに読み上げられます。Google Chat では サーバーサイドとクライアントサイドの両方のフルフィルメント開発で 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() コールバックは、入力ステータスの変化を通知します。 Interactive Canvas アクションで行えます。入力ステータスの変化は アシスタントがクエリを処理しているときに、マイクが開閉します。「 次のイベントによって入力ステータスが変化する可能性があります。

  • アクションに話しかけているユーザー
  • Android Google 検索アプリ(AGSA)でテキストを入力するユーザー
  • sendTextQuery() API を使用してアクションにテキストクエリを送信するウェブアプリ
  • ホーム ストレージやその他のアシスタント イベントに書き込むアクション

このコールバックの主なユースケースは、アクションと やり取りできます。たとえば、ユーザーがインタラクティブ プレーヤーを 描画キャンバス ゲームを開始してマイクを開くと、ユーザーがゲームを中断している間、ゲームを一時停止できます。 が話す。または、マイクが開くまで待ってから、テキスト クエリを アシスタントが受信されたことを確認します。

この API は、次のステータスを報告します。

  • LISTENING - マイクが開いていることを示します。
  • IDLE - マイクが閉じていることを示します。
  • PROCESSING - アシスタントが現在クエリを実行していることを示します。 マイクは閉じています。

API は、ステータスが変わるたびにアクションに入力ステータスを報告します。

状態間の遷移は可能ですが、一般的なフローは次のとおりです。

  • IDLE>LISTENING>PROCESSING>IDLE - ユーザーがクエリをすると、 クエリが処理され、マイクが閉じます。
  • IDLE>PROCESSING>IDLE - ウェブアプリは sendTextQuery() API を使用します。 アクションにテキストクエリを送信します
  • IDLE>LISTENING>IDLE - ユーザーはマイクをオンにしていますが、開いてはいません。 応答します。

アクションでこの機能を使用するには、ウェブアプリに onInputStatusChanged() を追加してください 次のスニペットに例を示します。

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

onInputStatusChanged() コールバックは単一の列挙型パラメータを返します。 inputStatus。この値を確認することで、現在の入力ステータスを確認できます。「 inputStatus には、LISTENINGPROCESSING、または 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);
 }
}