使用者儲存空間

在 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"
    

使用者儲存空間資料的有效期限

針對已驗證的使用者,儲存在使用者儲存空間中的資料會根據網路和應用程式活動設定到期,而動作本身也能清除這些資料。對於未通過驗證的使用者,Google 助理會在對話結束時清除使用者儲存空間的內容。

Actions on Google 會在對話開始時,透過各種指標設定使用者的驗證狀態。舉例來說,使用者在行動裝置上登入 Google 助理時的驗證狀態為 VERIFIED

以下是使用者獲得 GUEST 驗證狀態的可能原因:

  • 使用者已關閉個人化搜尋結果
  • 使用者停用了網路和應用程式活動設定。請注意,部分使用者可能會在網域層級停用這項設定。
  • 如果裝置已啟用 Voice Match,但比對失敗,或使用者透過語音叫用 Google 助理,例如長按 Nest Home 裝置。
  • 使用者未登入。

務必先檢查使用者的驗證狀態,然後再將資料儲存到使用者儲存空間,以免訪客使用者與會失敗的功能互動。

向使用者顯示

身為使用者,您可以針對叫用的動作查看使用者儲存空間中儲存的資料。您也可以透過特定動作移除儲存在使用者儲存空間中的資料,或讓服務不再記住您的資訊。

如要查看您儲存的資料,或讓服務不再記住您的資訊,請按照下列步驟操作:

  1. 前往 Google 助理目錄
  2. 找出並選取要查看的動作,或是清除使用者儲存空間的動作。
  3. 捲動至頁面底部:
    • 如要查看使用者儲存空間的內容,請按一下「[查看儲存的資料]」
    • 如要重設儲存在服務的使用者儲存空間中的資料,請按一下「重設」
    • 如要移除儲存在使用者儲存空間中的資料,並讓服務不再記住您,請按一下「Stop action_name」(停止記住我的資訊)