“会话”表示 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
类型创建、管理和更新会话实体。