意图

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

意图包含以下数据:

术语 定义
显示名称 控制台上显示的 intent 名称。
标签 有助于对意图进行分类的标签。例如:head intent
训练短语 训练短语是最终用户可能输入或说出的示例短语,称为最终用户输入。如果最终用户输入与这些短语中的其中一个相似,Dialogflow 便会将其与该意图匹配。您无需定义所有可能的示例,因为 Dialogflow 的内置机器学习功能可使用其他相似的短语扩展您的列表。
参数 您可以定义训练短语,以使用参数从最终用户输入的特定部分提取值。
DTMF 模式 请参阅适用于电话集成的 DTMF 功能

意图匹配

当最终用户输入输入内容(文字、语音或电话按键)时, Dialogflow 会将输入与意图训练短语进行比较,以找到最佳匹配。 此过程称为“意图匹配”。只能针对与 意图路由 (具有 intent 要求的状态处理程序) 在范围内。

按键输入根据 DTMF 模式。在搜索匹配内容时 但是,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 参数。

您必须为所有训练短语部分添加注释 将要作为参数提取出来。 否则,Dialogflow 不会提取这些值。

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

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

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

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

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

协议 V3 V3beta1
REST intent 资源 intent 资源
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

如果客服人员发起对话 您可以使用 API 触发此 intent。 使用值 projects/<PROJECT_ID>/locations/<LOCATION_ID>/agents/<AGENT_ID>/intents/00000000-0000-0000-0000-000000000000QueryInput.intent.intent字段中 调用 detectIntentstreamingDetectIntent 方法时。

默认负意图

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

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

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

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

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

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

00000000-0000-0000-0000-000000000001

取消意图

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

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

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

创建意图

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

控制台

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

API

请参阅 Intent 类型的 create 方法。

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

协议 V3 V3beta1
REST intent 资源 intent 资源
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. 选择您的 Google Cloud 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 将鼠标悬停在要删除的意图上。
  7. 点击 删除按钮。

API

请参阅 Intent 类型的 delete 方法。

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

协议 V3 V3beta1
REST intent 资源 intent 资源
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. 选择您的 Google Cloud 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 点击您要访问的意图。
  7. 查看或更新意图数据。
  8. 点击保存以保存更改。

API

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

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

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

intent 建议

Dialogflow 会自动在对话过程中分析不匹配的情况 并且可以推荐新的意图或推荐其他训练短语, 现有 intent。 接受这些建议有助于避免今后再次出现不匹配的情况。

使用建议时 您可以调整集群大小。 集群大小值越小,表明意图越多 可以减少每个意图的训练短语数量。 集群大小值越大,表示意图越少 为每个意图添加更多训练短语。

如需接受 intent 建议,请执行以下操作:

控制台

  1. 打开 Dialogflow CX 控制台
  2. 选择您的 Google Cloud 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 点击建议标签页。
  7. 根据需要调整集群大小
  8. 选择一项建议。
  9. 选择所需的训练短语。
  10. 对于目标意图,将训练短语添加到现有意图或新意图中。
  11. 点击保存新建以保存所有更改。 当您接受 intent 建议后, 相应 intent 仍会保留在建议列表中。

拆分 intent

您可以将一个 intent 拆分为两个 intent 使用控制台 通过该界面,您可以从源意图中选择训练短语 并将其移至新意图中:

控制台

  1. 打开 Dialogflow CX 控制台
  2. 选择您的项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 选择要拆分的意图。
  7. 点击拆分
  8. 从源 intent 中选择 intent。
  9. 点击右移
  10. 为目标 intent 提供其他详细信息。
  11. 点击拆分

比较和合并意图

您可以将两个 intent 比较或合并为一个 intent 使用控制台

控制台

  1. 打开 Dialogflow CX 控制台
  2. 选择您的项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 选择要比较或合并的两个意图。
  7. 点击比较
  8. 为便于比较,并排显示了训练短语。
  9. 如需合并这两个意图,请点击合并

导出和导入 intent

您可以导出和导入意图,以便在代理之间共享。

导出格式选项之一是 CSV 其中包含以下各列:

  • intent 显示名
  • 语言
  • 词组

每个条目都包含显示名称、语言和第一个训练短语; 或者只是用于先前声明的 intent 的训练短语。 Dialogflow 会对导出的训练短语中的注释进行编码, 以便在导入时恢复注解。 此编码的格式为:

(annotated part)[entity, parameter]

例如:

Intent Display Name,Language,Phrase
Shirt Selection,en,I want a (green)[@sys.color, color] shirt
,,I would like a (yellow)[@sys.color, color] shirt
Store Hours,en,When are you open?
,,What are your hours?

导入 intent 时, 如果某个 Pod 的显示名称 意图与导入的意图匹配。 您可以控制 intent 显示名匹配时的合并行为 选择以下任一选项:

  • 替换现有 intent:导入的 intent 会覆盖任何现有 intent 同名的意图。
  • 重命名并作为新 intent 导入: 通过附加“_1”对导入的 intent 进行重命名添加到显示名称中
  • 与现有 intent 合并: 已导入意图的训练短语会添加到现有意图中。 如果存在相同的训练短语,它们不会重复。
  • 保留原始意图: 现有 intent 保持不变,并忽略冲突的 intent。 系统会导入非冲突 intent。

如需导出意图,请执行以下操作:

控制台

  1. 打开 Dialogflow CX 控制台
  2. 选择您的 Google Cloud 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 选择要导出的每个意图。
  7. 点击导出所选意图 (Export selected intent)。
  8. 选择所需的格式和目标位置。
  9. 点击提交

如需导入 intent,请执行以下操作:

控制台

  1. 打开 Dialogflow CX 控制台
  2. 选择您的 Google Cloud 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 点击导入
  7. 选择来源。
  8. 如有任何冲突 系统会显示一个对话框窗口,供您选择合并行为。
  9. 点击提交

导出和导入训练短语

您可以导出和导入现有意图的训练短语。

导入的文件格式是 CSV,没有列标题,只有一列。 例如:

"I want a pony"
"I need a pony"
"I must have a pony"

导入训练短语时, 可以选择以下任一导入模式:

  • 作为新的训练短语导入: 文件中的词组将添加到现有词组列表中。
  • 替换现有训练短语: 现有训练短语将被删除, 以及文件中的训练短语。

默认情况下 系统会自动为导入的训练短语添加注解。 您可以选择跳过自动注解来停用此行为。

如需导出意图的训练短语,请执行以下操作:

控制台

  1. 打开 Dialogflow CX 控制台
  2. 选择您的 Google Cloud 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 选择一个意图。
  7. 向下滚动到训练短语 (Training phrases) 部分。
  8. 选择要导出的训练短语。
  9. 点击导出

如需导入意图的训练短语,请执行以下操作:

控制台

  1. 打开 Dialogflow CX 控制台
  2. 选择您的 Google Cloud 项目。
  3. 选择您的代理。
  4. 选择管理标签页。
  5. 点击意图 (Intents)。
  6. 选择一个意图。
  7. 向下滚动到训练短语 (Training phrases) 部分。
  8. 如果需要,可以选择跳过自动注解
  9. 点击训练短语列表正上方的“导入”按钮。
  10. 选择文件和导入模式。
  11. 点击提交

在设计代理时, 有时候,可以将意图视为一种 头意图补充意图

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

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

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