“会话”表示 Dialogflow 代理与最终用户之间的对话。您可以在会话期间创建名为“会话实体”的特殊实体。会话实体可以扩展或替换自定义实体类型,并且仅在为其创建的会话期间存在。 Dialogflow 将所有会话数据(包括会话实体)存储 20 分钟。
例如,如果您的代理具有包含“pear”和“grape”的 @fruit 实体类型,则该实体类型可以更新为包含“apple”或“orange”,具体取决于您的代理从最终用户收集的信息。更新后的实体类型会在会话的其余时段中使用“apple”或“orange”实体条目。
使用 fulfillment 创建会话实体
您可以使用 fulfillment 创建会话实体。WebhookResponse 类型包含一个名为 sessionEntityTypes 的字段,用于设置会话实体。
以下示例展示了如何针对当前会话将 fruit 实体类型的实体条目设置为 apple 和 orange。
WebhookResponse 示例:
{
"fulfillmentMessages": [
{
"text": {
"text": [
"Choose apple or orange"
]
}
}
],
"sessionEntityTypes":[
{
"name":"projects/project-id/agent/sessions/session-id/entityTypes/fruit",
"entities":[
{
"value":"APPLE_KEY",
"synonyms":[
"apple",
"green apple",
"crabapple"
]
},
{
"value":"ORANGE_KEY",
"synonyms":[
"orange"
]
}
],
"entityOverrideMode":"ENTITY_OVERRIDE_MODE_OVERRIDE"
}
]
}
使用 Actions on Google 客户端库的示例:
如果您使用的是Actions on Google 客户端库,则可以使用会话实体插件。
您的代码类似于以下内容:
const { sessionEntitiesHelper } = require('actions-on-google-dialogflow-session-entities-plugin') const app = dialogflow() .use(sessionEntitiesHelper()) app.intent('input.welcome', (conv) => { conv.ask('make your choice: apple or orange?'); // Set the fruit session entity values to 'apple' and 'orange'. conv.sessionEntities.add({ name: 'fruit', entities: [{ value: 'APPLE_KEY', synonyms: [ 'apple', 'green apple', 'crabapple' ] }, { value: 'ORANGE_KEY', synonyms: ['orange'] }] }); conv.sessionEntities.send(); });
使用 API 创建会话实体
您可以使用 SessionEntityTypes 类型创建、管理和更新会话实体。