您可以在工作階段儲存空間中,儲存對話中特定使用者的參數值。如此一來,您的動作日後就可以在提示和條件中使用這些儲存的值,而且您的 Webhook 程式碼可在必要時存取對話儲存空間中的值。
在對話期間,使用 types 收集的任何資料都會儲存在工作階段儲存空間。您也可以透過 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." }] } }] }
參照條件中的已儲存值
您也可以在conditions中參照儲存在工作階段儲存空間中的值。如要參照值,請使用 session.params.PARAMETER_NAME
語法,其中 PARAMETER_NAME
是設定參數時在 Webhook 中指定的名稱。
舉例來說,您先前在工作階段儲存空間中儲存了顏色值做為 exampleColor
參數,且想要將其與條件中的「red」值進行比對。請在條件中,使用 session.params.exampleColor
參照儲存的值。條件運算式看起來會像這樣:
條件語法
session.params.exampleColor == "red"