Webhook 呼び出しでは、ユーザー ストレージのセッションをまたいで特定のユーザーのパラメータ値を保存できます。アクションは、保存された値を後でプロンプトや条件で使用できます。また、Webhook コードは、必要に応じて特定のユーザーのユーザー ストレージ内の値にアクセスできます。
ユーザーのストレージの状態は app.handle()
リクエストで渡され、user
オブジェクトに格納されます。
会話間でのデータの読み取りと書き込み
ユーザー ストレージの値を更新または設定するには、Webhook 呼び出しで user
オブジェクトの params
フィールドに値を割り当てます。次の例では、ユーザー ストレージで "exampleColor" を "red" に設定しています。
Node.js
// Assign color to user storage app.handle('storeColor', conv => { let color = 'red'; conv.user.params.exampleColor = color; });
JSON
{ "responseJson": { "session": { "id": "1234567890123456789", "params": {} }, "prompt": { "override": false }, "user": { "locale": "en-US", "params": { "verificationStatus": "VERIFIED", "exampleColor": "red" } } } }
ユーザー ストレージに保存されているデータにアクセスするには、Webhook 呼び出しで変数にそのデータを代入します。次の例では、ユーザー ストレージの「exampleColor」から値を取得しています。
Node.js
// Retrieve color from user storage app.handle('getStoredColor', conv => { let color = conv.user.params.exampleColor; });
JSON
{ "responseJson": { "session": { "id": "1234567890123456789", "params": {} }, "prompt": { "override": false }, "user": { "locale": "en-US", "params": { "verificationStatus": "VERIFIED", "exampleColor": "red" } } } }
以前に保存した値を消去するには、Webhook 呼び出しで値を null
に設定します。次の例では、ユーザー ストレージの「exampleColor」の値を消去します。
Node.js
// Clear color from user storage app.handle('clearStoredColor', conv => { conv.user.params.exampleColor = null; });
JSON
{ "responseJson": { "session": { "id": "1234567890123456789", "params": {} }, "prompt": { "override": false }, "user": { "locale": "en-US", "params": { "verificationStatus": "VERIFIED" } } } }
プロンプト内で保存済み値を参照する
ユーザー ストレージに保存されている値は、プロンプトで参照できます。値を参照するには、$user.params.PARAMETER_NAME
構文を使用します。ここで、PARAMETER_NAME
はパラメータの設定時に Webhook で指定される名前です。
たとえば、以前にパラメータ exampleColor
として色の値をユーザー ストレージに保存していました。プロンプトでその値にアクセスするには、$user.params.exampleColor
を使用してその値を参照します。
JSON
{ "candidates": [{ "first_simple": { "variants": [{ "speech": "Your favorite color is $user.params.exampleColor." }] } }] }
条件内で保存された値を参照する
また、ユーザー ストレージに保存されている値をconditionsで参照することもできます。値を参照するには、user.params.PARAMETER_NAME
構文を使用します。ここで、PARAMETER_NAME
はパラメータの設定時に Webhook で指定される名前です。
たとえば、以前にパラメータ exampleColor
としてユーザー ストレージに色値を保存し、それを条件で値「red」と一致させたいとします。条件では、user.params.exampleColor
を使用して保存済み値を参照します。条件式は次のようになります。
条件の構文
user.params.exampleColor == "red"
ユーザー ストレージ データの有効期限
確認済みユーザーの場合、ユーザーのストレージに保存されているデータは、ウェブとアプリのアクティビティの設定に基づいて期限切れになり、アクション自体でも消去できます。未確認のユーザーについては、アシスタントは会話の終了時にユーザー ストレージのコンテンツをクリアします。
Actions on Google は、会話開始時のさまざまなインジケーターに基づいて、各会話の開始時にユーザーの確認ステータスを設定します。一例として、モバイル デバイスで Google アシスタントにログインしたユーザーの確認ステータスは VERIFIED
です。
ユーザーの確認ステータスが GUEST
の場合、次のような理由が考えられます。
- ユーザーがアカウントに基づく情報を無効にしている。
- ユーザーが各自のウェブとアプリのアクティビティを無効にしている。一部のユーザーでは、ドメインレベルでこの設定が無効になっている場合があります。
- デバイスで Voice Match が有効になっていて、照合に失敗した場合、またはユーザーが声を使わずにアシスタントを起動した場合(Nest Home デバイスの長押しなど)。
- ユーザーがログインしていない。
ユーザー ストレージにデータを保存する前に、必ずユーザーの確認ステータスを確認して、ゲストユーザーが失敗する機能を操作しないようにしてください。
ユーザーへの表示設定
ユーザーは、呼び出したアクションのユーザー ストレージに保存されているデータを表示できます。また、ユーザー ストレージに保存されているデータを特定のアクションから削除したり、サービスに自分の情報を保存しないようにしたりすることもできます。
保存されているデータを表示したり、サービスに自分の情報を保存しないようにしたりするには、次の手順を行います。
- アシスタント ディレクトリに移動します。
- ユーザー ストレージを表示または消去するアクションを探して選択します。
- ページの一番下までスクロールします。
- ユーザー ストレージの内容を表示するには、[保存済みデータを表示] をクリックします。
- サービスのユーザー ストレージに保存されているデータをリセットするには、[リセット] をクリックします。
- ユーザー ストレージに保存されているデータを削除し、サービスに自分が保存されないようにするには、[action_name の保存を停止する] をクリックします。