工作階段儲存

你可以將特定使用者的參數值儲存在工作階段儲存空間中。之後,您的動作隨後可在提示和條件中使用這些儲存的值,而且 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"