你可以將特定使用者的參數值儲存在工作階段儲存空間中。之後,您的動作隨後可在提示和條件中使用這些儲存的值,而且 Webhook 程式碼也可以視需要在對話中存取工作階段的值。
在對話中,使用類型收集的資料會儲存在工作階段儲存空間中。您也可以使用 Webhook 呼叫,與工作階段儲存空間中的資料互動。如為 Webhook 呼叫,工作階段儲存空間狀態會透過 app.handle()
要求傳遞,並儲存在 session
物件中。
對話結束後,儲存在工作階段儲存空間的資料將會過期。
讀取資料並將資料寫入工作階段儲存空間
如要更新或設定工作階段儲存空間中的新值,請將值指派給 Webhook 呼叫中 session
物件的 params
欄位。以下範例會將工作階段儲存空間中的「exampleColor」設為「red」:
Node.js
// Assign color to session storage app.handle('storeColor', conv => { let color = 'red'; conv.session.params.exampleColor = color; });
JSON
{ "responseJson": { "session": { "id": "12345678901234567890", "params": { "exampleColor": "red" } }, "prompt": { "override": false } } }
如要存取儲存在工作階段儲存空間中的資料,請在 Webhook 呼叫中指派變數。以下範例會從工作階段儲存空間中的「exampleColor」擷取值:
Node.js
// Retrieve color from session storage app.handle('getStoredColor', conv => { let color = conv.session.params.exampleColor; });
JSON
{ "responseJson": { "session": { "id": "12345678901234567890", "params": { "exampleColor": "red" } }, "prompt": { "override": false } } }
如要清除先前儲存的值,請在 Webhook 呼叫中將這個值設為 null
。
下列範例清除工作階段儲存空間中的「exampleColor」值:
Node.js
// Clear color from session storage app.handle('clearStoredColor', conv => { conv.session.params.exampleColor = null; });
JSON
{ "responseJson": { "session": { "id": "12345678901234567890", "params": {} }, "prompt": { "override": false } } }
在提示內參照已儲存的值
您可以參考提示,將儲存在工作階段儲存空間中的值參照。如要參照值,請使用 $session.params.PARAMETER_NAME
語法,其中 PARAMETER_NAME
是設定參數時在 Webhook 中指定的名稱。
舉例來說,您先前將顏色值儲存在工作階段儲存空間中,做為參數 exampleColor
。如要在提示中存取該值,請使用 $session.params.exampleColor
參照該值:
JSON
{ "candidates": [{ "first_simple": { "variants": [{ "speech": "Your favorite color is $session.params.exampleColor." }] } }] }
在條件中參照已儲存的值
也可以參照儲存在條件中的工作階段儲存空間值。如要參照這個值,請使用 session.params.PARAMETER_NAME
語法,其中 PARAMETER_NAME
是設定參數時在 Webhook 中指定的名稱。
舉例來說,您先前將顏色值儲存在工作階段儲存空間中,做為參數 exampleColor
,而您希望將其與條件中的「紅色」值進行比對。在條件中,請使用 session.params.exampleColor
參照儲存的值。條件運算式如下所示:
條件語法
session.params.exampleColor == "red"