工作階段儲存

您可以在工作階段儲存空間中,儲存對話中特定使用者的參數值。如此一來,您的動作日後就可以在提示和條件中使用這些儲存的值,而且您的 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"