意图

“意图”用于对一轮对话中的最终用户意图进行分类。 与 ES 意图相比,CX 意图已经过简化,使其成为更可重复使用的资源。

意图包含以下数据:

术语 定义
训练短语 训练短语是最终用户可能输入或说出的示例短语,称为最终用户输入。如果最终用户输入与这些短语中的其中一个相似,Dialogflow 便会将其与该意图匹配。您无需定义所有可能的示例,因为 Dialogflow 的内置机器学习功能可使用其他相似的短语扩展您的列表。
参数 您可以定义训练短语,以使用参数从最终用户输入的特定部分提取值。

意图匹配

当最终用户输入或说出某些内容(称为“最终用户输入”)时,Dialogflow 会将该输入与意图训练短语进行比较,以找到最佳匹配。此过程称为“意图匹配”。只有与范围内的意图路由(具有意图要求的状态处理程序)关联的意图才会发生意图匹配。

在搜索匹配意图时,Dialogflow 根据“意图置信度分数”(也称“置信度分数”)为潜在匹配项评分。取值范围从 0.0(完全不确定)到 1.0(完全确定)。 在对意图进行评分后,可能会出现以下两种结果:

  • 如果得分最高的意图的置信度得分大于或等于分类阈值设置,则系统会将其返回为匹配项。
  • 如果没有任何意图满足阈值,则系统会调用无匹配事件

训练短语

训练短语是最终用户可能输入或说出的示例短语,称为“最终用户输入”。对于每项意图,您可以创建许多训练短语。如果最终用户输入与这些短语中的其中一个相似,Dialogflow 便会将其与该意图匹配。

例如,训练短语“I want pizza”会训练代理识别与该短语相似的最终用户输入,比如“Get a pizza”或“Order pizza”。

您无需定义所有可能的示例,因为 Dialogflow 的内置机器学习功能可使用其他相似的短语扩展您的列表。建议您至少创建 10-20 个训练短语(具体取决于意图的复杂程度),以便您的代理能够识别各种最终用户输入。例如,如果您希望您的意图可以识别最终用户关于他们最喜欢的颜色的输入,则可以定义以下训练短语:

  • “I like red”
  • “My favorite color is yellow”
  • “black”
  • “Blue is my favorite”

为训练短语添加注释

您可以通过为训练短语的特定部分添加注释并配置关联的参数来控制最终用户数据的提取方式。

例如,假设有一条训练短语为“What is the forecast tomorrow for Tokyo?” 您应使用 date 参数为“tomorrow”添加注释,使用 location 参数为“Tokyo”添加注释。当您为训练短语的特定部分添加注释后,Dialogflow 会识别出这些部分只是最终用户将在运行时提供的实际值的示例。 对于“What is the forecast on Friday for Sydney?”这样的最终用户输入,Dialogflow 会从“Friday”中提取 date 参数,并从“Sydney”中提取 location 参数。

使用控制台构建代理时,如果您所添加的训练短语中包含可与现有实体类型匹配的特定部分,那么系统会自动为您创建大多数注释。这些部分会在控制台中突出显示。 您可以根据需要修改这些注释和参数。

要使用控制台手动为训练短语添加注释,请执行以下操作:

  1. 选择要添加注释的训练短语部分。
  2. 从列表中选择所需的实体类型。
  3. 系统会在下方的参数表中为您创建一个参数。

使用 API 构建代理时,必须手动为训练短语部分添加注释。请参阅 Intent 类型使用的 TrainingPhrase 类型。

为意图参考选择协议和版本

协议 V3 V3beta1
REST 意图资源 意图资源
RPC intent 接口 intent 接口
C++ IntentsClient 不可用
C# IntentsClient 不可用
Go IntentsClient 不可用
Java IntentsClient IntentsClient
Node.js IntentsClient IntentsClient
PHP 不可用 不可用
Python IntentsClient IntentsClient
Ruby 不可用 不可用

由训练短语创建的隐式实体

大多数自定义实体是通过创建实体类型并添加实体条目来显式定义的。但是,自定义实体还可能包含隐式值。当您为训练短语的文本添加注释时,会出现这种情况,其中注释的文本不是所选实体类型定义的值。注释的文本将成为隐式添加的实体条目的实体引用值。如果实体类型是映射实体,则文本也会成为实体条目的同义词。

默认欢迎意图

创建代理时,系统会为您创建默认欢迎意图。对于某些语言,意图具有简单的训练短语(例如“Hi”或“Hello”),旨在匹配初始最终用户输入。您可以根据需要修改此意图。

使用 API 时,您可以使用以下意图 ID 引用此意图:

00000000-0000-0000-0000-000000000000

默认负意图

创建代理时,系统会为您创建默认负意图。您可以将训练短语添加到此意图中作为反例。在某些情况下,终端用户的输入可能与正常意图中的训练短语略有相似之处,但您不希望这些输入与任何正常意图匹配。

例如,房间预订代理可能会有“我想预订房间”之类的培训用语。如果最终用户想要购买有关房间的图书,可能会说“我想购买有关房间的图书”。如需确保最终用户输入的意思与您的意图不匹配,您可以添加该用语作为反例。

此外,您还应添加在代理范围之外的可能短语,因此它们不会匹配任何意图。但是,请避免添加大量这些短语。例如,如果您定义了 10000 个默认的负意图短语,则会对正常的意图匹配产生负面影响。

您应该定期查看这些短语,因为其中一些短语可能最初不在代理的范围内,但随后添加到意图中。

默认负意图会影响所有意图匹配。您添加到该意图中的短语可以有利于对一个意图的匹配,但会危害对另一个意图的匹配。例如,您可以将“国际长途电话”添加到默认的负意图中,以避免匹配国际旅行意图。但是,这也会阻止该短语匹配国际长途电话意图。

使用 API 时,您可以使用以下意图 ID 引用此意图:

00000000-0000-0000-0000-000000000001

取消意图

在对话期间,最终用户可能需要取消当前的对话主题。例如,当前活跃的页面可能要求提供新预约的日期,但最终用户决定不创建新预约。最终用户可能会说“取消”或“我不想新建预约”之类的内容。如需应对这种情况,您可以为代理创建一个或多个取消意图。您可以随意命名这些取消意图,但通常的做法是在名称中包含“取消”。您应该将这些取消的意图与对话中相关点范围内的意图路由相关联。这些意图路由应转换到相应的页面来处理取消操作。

取消意图的训练短语应处理通用尝试和主题特有的尝试取消。例如:

  • 取消
  • 停止
  • 我改主意了
  • 不用了
  • 返回
  • 返回
  • 我不想新建预约
  • 取消新预约
  • 删除新预约

创建意图

如需创建意图,请执行以下操作:

控制台

  1. 打开 Dialogflow CX 控制台
  2. 选择 GCP 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 点击+创建
  7. 输入意图数据。
  8. 点击保存

API

请参阅 Intent 类型的 create 方法。

为意图参考选择协议和版本

协议 V3 V3beta1
REST 意图资源 意图资源
RPC intent 接口 intent 接口
C++ IntentsClient 不可用
C# IntentsClient 不可用
Go IntentsClient 不可用
Java IntentsClient IntentsClient
Node.js IntentsClient IntentsClient
PHP 不可用 不可用
Python IntentsClient IntentsClient
Ruby 不可用 不可用

删除意图

如需删除意图,请执行以下操作:

控制台

  1. 打开 Dialogflow CX 控制台
  2. 选择 GCP 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 将鼠标悬停在要删除的意图上。
  7. 点击 删除按钮。

API

请参阅 Intent 类型的 delete 方法。

为意图参考选择协议和版本

协议 V3 V3beta1
REST 意图资源 意图资源
RPC intent 接口 intent 接口
C++ IntentsClient 不可用
C# IntentsClient 不可用
Go IntentsClient 不可用
Java IntentsClient IntentsClient
Node.js IntentsClient IntentsClient
PHP 不可用 不可用
Python IntentsClient IntentsClient
Ruby 不可用 不可用

访问意图数据

如需访问意图数据,请执行以下操作:

控制台

  1. 打开 Dialogflow CX 控制台
  2. 选择 GCP 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 点击您要访问的意图。
  7. 查看或更新意图数据。
  8. 点击保存以保存更改。

API

请参阅 Intent 类型的 getpatch/update 方法。

为意图参考选择协议和版本

协议 V3 V3beta1
REST 意图资源 意图资源
RPC intent 接口 intent 接口
C++ IntentsClient 不可用
C# IntentsClient 不可用
Go IntentsClient 不可用
Java IntentsClient IntentsClient
Node.js IntentsClient IntentsClient
PHP 不可用 不可用
Python IntentsClient IntentsClient
Ruby 不可用 不可用

设计代理时,有时将意图视为头意图或补充意图很有用。这些术语只是概念性,Dialogflow 不会以原生方式区分它们。

头意图标识最终用户与代理交互的主要目的。补充意图标识最终用户与头意图相关的后续问题。这些后续问题可能会为最终用户的需求提供额外的背景信息,或者可能是后续跟进问题,可帮助最终用户说明或更好地了解相关内容。

头意图通常是对话中首先匹配的意图之一,而进一步的最终用户问题匹配补充意图。例如:

对话框 说明
最终用户:激活新电话
代理:Sure I can help you with that。您要激活的电话号码的后 4 位数字是什么?
头意图匹配
最终用户:1234
代理:现在准备好激活手机了吗?
参数已设置
最终用户:我的所有消息都会转移到我的新手机吗?
代理
补充意图匹配