您可以将对话中特定用户的参数值存储在 会话存储空间然后,您的 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"