响应

意图都有一个内置的响应处理程序,可用于在系统与意图匹配之后返回响应。此功能仅支持静态响应,不过您可以在这些响应中使用参数引用使其更具动态性。这有助于回顾最终用户提供的信息。例如,意图响应可能如下:“Okay, I booked a room for you on $date”。

在某些情况下,您只需要使用此功能即可。如果您的代码需要采取某个操作或构建更具动态性的响应,您应该使用以下某个动态响应选项。代理通常结合使用静态和动态响应。

代理可以提供多种类型的响应。基本响应类型为文本响应。还有其他类型的响应可供选择(图片、音频、合成语音等),其中一些是针对具体平台的类型。

如果您为一个意图定义了多个响应变体,您的代理会随机选择一个响应。您应添加多个响应变体,使代理的对话语言更加丰富。

构建代理时,您应为每个意图提供响应数据。当您使用 API 或 fulfillment 与 Dialogflow 互动时,技术上可能不需要提供响应数据,因为这两种方法都可以动态生成任何响应。但是,如果要使用模拟器进行测试或定义具有简单响应的意图,则应提供响应数据。

一般来说,您的意图响应应该提示最终用户提供能够匹配其他意图的表述。您的响应还应指导最终用户提供具体数据。例如,“What city were you born in?”这样的问题要好于“Where were you born?”这种较为开放的问题。

如何查找此数据

构建代理时,最常见的方法是使用 Dialogflow 控制台(访问文档打开控制台)。以下说明着重介绍如何使用控制台。如需访问意图响应数据,请执行以下操作:

  1. 转到 Dialogflow 控制台
  2. 选择一个代理。
  3. 在左侧边栏菜单中选择意图 (Intents)。
  4. 选择一个意图。
  5. 向下滚动至响应 (Responses) 部分。

如果您要使用 API 而非控制台来构建代理,请参阅意图参考文档。API 字段名称与控制台字段名称类似。以下说明重点介绍控制台与 API 之间的重要区别。

响应平台

每个响应均针对默认平台(在 API 中称为 PLATFORM_UNSPECIFIED)或特定的集成平台进行定义。如果您不使用集成,则所有响应都可以使用默认平台。如果您使用集成,则每个集成都可以有唯一的响应,也可以配置为使用默认响应。

如需详细了解平台专属响应,请参阅富响应消息

创建内置响应

如需创建内置响应,请执行以下操作:

  1. 选择默认 (Default) 或特定平台。
  2. 如果所需的响应类型(例如文本响应)未列出,请点击添加响应 (Add Responses) 然后选择响应类型。
  3. 输入所需的响应信息。
  4. 点击保存 (Save)。

使用 fulfillment 的动态响应

您可使用 fulfillment 创建动态响应。 如需了解详情,请参阅 fulfillment 文档

使用 API 的动态响应

您可以使用 API 创建动态响应。 如需了解详情,请参阅 API 概览

特殊字符

某些特殊字符需要在响应中进行转义处理。

如需在响应中使用美元符号 $ 或数字符号 #,请为符号后紧跟的内容添加大括号 {}。例如:

  • ${100} 将解析为 $100
  • ${$number} 将解析为 $100,其中 $number 为参数引用,值为 100
  • #{hello} 将解析为 #hello

如需在响应中使用大括号 {},请使用双括号。例如:

  • {{hello}} 将解析为 {hello}

处理空参数值

如果您的意图具有可解析为空值的参数,则至少必须提供一个不使用该参数的响应变体。

例如,如果您的意图有 2 个参数(p1p2),且其中一个或两个都可能为空,则至少应提供四个响应变体:

  • Got it.You said $p1 and $p2.
  • Got it.You said $p1.
  • Got it.You said $p2.
  • Got it.