Contexts
Contextはユーザのリクエストの現在のコンテキストを表す。これは、ユーザの好み、地理的な位置、アプリケーションないのページ、会話のトピックなどに依存して意味が異なったり漠然とした居留守異なったフレーズを扱うのに便利である。
例えば、ユーザが音楽を聞いていて興味を引くバンドを見つけたとしたしたとき、「このバンドの他の曲をもっと聞きたい」というようなことを言うだろう。開発者としては、Agentが他のIntent内で使えるようにするためにリクエスト内にバンド名を含めることが出来る。
また、あなたがスマートホームデバイスの製造者というのであれば、ライトや家電製品を遠隔で操作するアプリケーションを作ることができる。ユーザは「ライトをつけて」と言ったあとに「それを消して」という。コンテキストを設定することによって、アプリケーションは1つめのリクエストで言及されているライトを2番めのリクエスト内で理解することができる。もしユーザが「コーヒーマシーンをオンにして」といいい、「それを消して」といった場合、先の例とはコンテキストが異なるので違った結果になる(=消えるのはライトではなくコーヒーマシーン)。
Contextsの追加
Contextを定義してIntentに追加するためには、 Add input contextか Add output contextフィールドをクリックして所望のコンテキスト名を入力し、エンターキーで確定する。
Lifespan
デフォルトではContextは有効化されたタイミングから5リクエストか10秒で期限切れとなる。Contextを更新するIntentはカウンターをリセットして、追加の5リクエストまたは10秒を仕掛ける。
現在のLifespanをクリックしてリクエスト数を入れ直すことでContextのLifespanを変更することができる。Lifespanを0にすると、Contextがリセットされる。
Output Contexts
Contextはユーザのセッション(APIコール内で渡されるセッションID)に紐付けられる。ユーザの表現があるIntentにマッチした場合、そのIntentはアウトプットContextを設定することができる。また、ユーザのリクエストをあなた自身のAPIに送ったときにもコンテキストを設定することができるl.
Input Contexts
InputContextは特定のコンテキストがセットされているときにのみIntentとマッチするように制限する。
音楽の例において、「このバンドの曲がもっと聞きたい」といったようなリクエストに対する2つのIntentを作成する。このContextなしのIntentは、アプリケーションがアーティストについての情報を持っていないときにマッチし、ユーザからアーティストの情報を取得する必要が出てくる。これはrequiredパラメータで提供されるPromptによって取得する。
Contextsからのパラメータ値の抽出
定義されたアウトプットContextと紐付いたIntent内で抽出されたパラメータの値をさんしょうするには、次のフォーマットをVALUEカラムで使う。#context_name.parameter_name