会话存储空间

您可以将对话中特定用户的参数值存储在 会话存储空间然后,您的 Action 可以稍后在提示中使用这些存储的值 您的网络钩子代码可以访问会话存储空间中的值 必要时进行对话。

在对话过程中,使用 types 收集的所有数据都会存储在会话中 storage。您还可以使用 webhook 调用与会话存储空间中的数据进行交互。 对于 webhook 调用,会话存储的状态通过 app.handle() 传递 请求并存储在 session 对象中。

会话存储空间中存储的数据会在对话结束后过期。

读取和写入会话存储空间数据

要在会话存储空间中更新或设置新值,请将该值分配给 网络钩子调用中 session 对象的 params 字段。以下示例 设置“exampleColor”设为“红色”会话存储量:

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”中检索值会话中 storage:

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,您希望将其与值“red”匹配以 条件。在条件中,您可以使用 session.params.exampleColor。然后,您的条件表达式将如下所示:

条件语法

session.params.exampleColor == "red"