意图都有一个内置的响应处理程序,可用于在系统与意图匹配之后返回响应。此功能仅支持静态响应,不过您可以在这些响应中使用参数引用使其更具动态性。这有助于回顾最终用户提供的信息。例如,意图响应可能如下:“Okay, I booked a room for you on $date”。
在某些情况下,您只需要使用此功能即可。如果您的代码需要采取某个操作或构建更具动态性的响应,您应该使用以下某个动态响应选项。代理通常结合使用静态和动态响应。
代理可以提供多种类型的响应。基本响应类型为文本响应。还有其他类型的响应可供选择(图片、音频、合成语音等),其中一些是针对具体平台的类型。
如果您为一个意图定义了多个响应变体,您的代理会随机选择一个响应。您应添加多个响应变体,使代理的对话语言更加丰富。
构建代理时,您应为每个意图提供响应数据。当您使用 API 或 fulfillment 与 Dialogflow 互动时,技术上可能不需要提供响应数据,因为这两种方法都可以动态生成任何响应。但是,如果要使用模拟器进行测试或定义具有简单响应的意图,则应提供响应数据。
一般来说,您的意图响应应该提示最终用户提供能够匹配其他意图的表述。您的响应还应指导最终用户提供具体数据。例如,“What city were you born in?”这样的问题要好于“Where were you born?”这种较为开放的问题。
如何查找此数据
构建代理时,最常见的方法是使用 Dialogflow ES 控制台(访问文档,打开控制台)。以下说明着重介绍如何使用控制台。如需访问意图响应数据,请执行以下操作:
- 转到 Dialogflow ES 控制台。
- 选择一个代理。
- 在左侧边栏菜单中选择意图 (Intents)。
- 选择一个意图。
- 向下滚动至响应部分。
如果您要使用 API 而非控制台来构建代理,请参阅意图参考。API 字段名称与控制台字段名称类似。以下说明重点介绍控制台与 API 之间的重要区别。
响应平台
每个响应均针对默认平台(在 API 中称为 PLATFORM_UNSPECIFIED
)或特定的集成平台进行定义。如果您不使用集成,则所有响应都可以使用默认平台。如果您使用集成,则每个集成都可以有唯一的响应,也可以配置为使用默认响应。
如需详细了解平台专属响应,请参阅富响应消息。
创建内置响应
如需创建内置响应,请执行以下操作:
- 选择默认 (Default) 或特定平台。
- 如果所需的响应类型(例如文本响应)未列出,请点击添加响应 (Add Responses) 然后选择响应类型。
- 输入所需的响应信息。
- 点击保存。
使用 fulfillment 的动态响应
您可使用 fulfillment 创建动态响应。 如需了解详情,请参阅 fulfillment 文档。
使用 API 的动态响应
您可以使用 API 创建动态响应。 如需了解详情,请参阅 API 概览。
特殊字符
某些特殊字符需要在响应中进行转义处理。
如需在响应中使用美元符号 $
或数字符号 #
,请为符号后紧跟的内容添加大括号 {}
。例如:
${100}
将解析为$100
${$number}
将解析为$100
,其中$number
为参数引用,值为 100#{hello}
将解析为#hello
如需在响应中使用大括号 {}
,请使用双括号。例如:
{{hello}}
将解析为{hello}
处理空参数值
如果您的意图具有可解析为空值的参数,则至少必须提供一个不使用该参数的响应变体。
例如,如果您的意图有 2 个参数(p1
和 p2
),且其中一个或两个都可能为空,则至少应提供四个响应变体:
- Got it.You said $p1 and $p2.
- Got it.You said $p1.
- Got it.You said $p2.
- Got it.