会话实体

“会话”表示 Dialogflow 代理与最终用户之间的对话。您可以在会话期间创建名为“会话实体”的特殊实体。会话实体可以扩展或替换自定义实体类型,并且仅在为其创建的会话期间存在。 Dialogflow 将所有会话数据(包括会话实体)存储 20 分钟。

例如,如果您的代理具有包含“pear”和“grape”的 @fruit 实体类型,则该实体类型可以更新为包含“apple”或“orange”,具体取决于您的代理从最终用户收集的信息。更新后的实体类型会在会话的其余时段中使用“apple”或“orange”实体条目。

使用 fulfillment 创建会话实体

您可以使用 fulfillment 创建会话实体。WebhookResponse 类型包含一个名为 sessionEntityTypes 的字段,用于设置会话实体。

以下示例展示了如何针对当前会话将 fruit 实体类型的实体条目设置为 appleorange

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