コールバック

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

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);
 
}
}