了解 Dialogflow 中的实体

实体是 Dialogflow 中用于从自然语言输入中识别和提取有用数据的一种机制。意图让代理能够了解特定用户输入背后的动机,实体则用于选出用户提及的特定信息:街道地址、商品名称、金额或单位等等。您希望从用户请求中获取的任何重要数据都将具有相应的实体。

以下列表介绍了三种类型的实体:

  • 借助 Dialogflow 附带的系统实体,代理无需任何额外配置即可提取有关各种概念的信息。例如,系统实体可用于从自然语言输入中提取日期、时间和位置。
  • 您定义的开发者实体会提取有关系统实体未涵盖的概念的信息。例如,一种品牌可能会创建一种开发者实体来识别其唯一的产品名称集。
  • 您定义的会话实体仅适用于特定会话。例如,您可以创建一个会话实体来代表特定用户在预订时可用的时间敏感选项。

前提条件

在继续操作之前,您需要完成以下 Codelab:

  1. 使用 Dialogflow 制定预约安排
  2. 将 Dialogflow 聊天机器人与 Actions on Google 集成

您还需要了解 Dialogflow 的基本概念和结构,您可以从使用 Dialogflow 构建聊天机器人开发者在线课程中的以下视频中获取这些内容:

学习内容

  • 如何在 Dialogflow 中创建和使用系统实体
  • 如何在 Dialogflow 中创建和使用开发者实体
  • 如何测试代理

要构建的内容

  • 已构建的 Dialogflow 代理的增强版
  • Dialogflow 中的开发者实体
  • Dialogflow 中的系统实体

所需条件

  • 用来登录 Dialogflow 控制台的网络浏览器和电子邮件地址
  1. 导航到 Dialogflow 控制台
  2. 选择您之前创建的 AppointmentScheduler 代理。

  1. 点击意图 (Intents)。

  1. 点击安排预约 (Schedule Appointments) 以打开意图设置。

您会注意到一些训练短语,例如“Set an appointment for 4 PM tomorrow”, 其中日期时间会自动提取为 @sys.date@sys.time。您可以随意添加更多训练短语,以查看 Dialogflow 如何自动提取系统实体。

如您所见,系统实体允许代理提取各种概念的相关信息,而无需任何额外配置。地址、电子邮件、货币和手机号码等数据是系统实体的一些常见示例。如需了解详情,请参阅系统实体

创建开发者实体

到目前为止,您以一般方式处理了预约安排。现在,假设您的安排程序是某个州的机动车辆部,该部门主要提供驾照和登记服务。创建这些实体。

  1. 点击实体 (Entities)。

  1. 点击创建实体 (Create Entity)。

  1. 输入“AppointmentType”作为实体名称,然后添加“Vehicle registration”和“Driver license”作为两个引用值,并带有几个同义词,如下图所示。点击保存

您可以添加更多行,并添加更多服务作为实体类型。

  1. 点击保存

修改意图以适应新创建的开发者实体

  1. 点击意图 (Intent)。
  2. 在安排预约意图中输入“Set an appointment for drivers license for 3 PM tomorrow”。

您将看到系统自动检测到 drivers licenseat 3 PMtomorrow,这些均为开发者实体和系统实体。

  1. 输入以下训练短语:
  1. License renewal appointment on Monday
  2. Set an appointment at 2 PM on Monday for license
  3. Vehicle registration appointment for Monday

  1. 您需要将 AppointmentType 设置为必填字段,类似于时间和日期。为此,请转到操作和参数 (Actions and Parameters),然后选择 AppointmentType 行中的复选框。

  1. 添加提示,例如“What services are you looking to get? DMV offers driver's license and vehicle registration services.”如果用户未提供预约类型,则系统会使用提示。
  1. 点击保存

您可以在 Action 模拟器中测试聊天机器人,也可以使用之前学到的网页或 Google Home 集成功能。

测试用例 1

在本例中,用户只要求提供没有三项信息的预约,因此 Dialogflow 会根据您设定的空档填充提示询问日期、时间和预约类型。

  1. 用户:“Set an appointment.”
  2. 聊天机器人:“What date?”
  3. 用户:“May 23.”
  4. 聊天机器人:“What time would you like to come in?”
  5. 用户:“10 AM”
  6. 聊天机器人:“What services are you looking to get? DMV offers driver's license and vehicle registration services.”
  7. 用户:“License.”
  8. 聊天机器人:“You are all set for your vehicle registration appointment on 2019-05-23 at 10:00:00. See you then!”

测试用例 2

在本例中,用户会要求安排包含部分信息的预约,因此 Dialogflow 会根据您设置的槽填充提示询问日期、时间和预约类型。

  1. 用户:“Need an appointment for 4 PM tomorrow.”
  2. 聊天机器人:“What services are you looking to get? DMV offers driver's license and vehicle registration services.”
  3. 用户:“License.”
  4. 聊天机器人:“You are all set for your drivers license appointment on 2019-04-24 at 16:00:00. See you then!”

测试用例 3

在本例中,用户提供所有信息。Dialogflow 会处理信息并在回答时提供预约确认信息。

  1. 用户:“Set an appointment for vehicle registration at 2 PM tomorrow.”
  2. 聊天机器人:“You are all set for your vehicle registration appointment on 2019-04-24 at 14:00:00. See you then!”

如果您计划完成其他 Dialogflow Codelab,请暂时跳过此部分,稍后再回来查看。

删除 Dialogflow 代理

  • 点击现有代理旁边的

  • 常规 (General) 标签页中,滚动到底部,然后点击删除此代理 (Delete this Agent)。
  • 在对话框中键入 Delete,然后点击删除 (Delete)。

您构建了一个聊天机器人,用于处理开发者实体的自定义输入。您现在已经是聊天机器人开发者了!

了解详情

请查看以下资源以了解详情: