剧本可以使用显式定义的参数接受和发出上下文信息。参数用于存储有关对话的信息,例如用户选择、操作结果等。您可以在 Playbook 和流程之间传递这些参数的值。
参数声明
使用 Agent Builder 控制台时,您可以在代理编辑器页面上定义参数。
使用 Dialogflow CX 控制台时,创建 playbook 后,您可以使用参数标签页为每个 playbook 定义参数。
参数具有名称、说明,以及以下类型之一:
- 字符串
- 数字
- 布尔值
- 特定于工具的参数类型
您还可以指定参数是否为列表。
输入参数
借助输入参数,剧本可以使用从流程和其他剧本传递的值。例如,剧本可能作为参数接收用户的首选名称,并使用该名称向用户表示个人感谢;或者,它可能作为参数接收订单标识符,并使用该标识符通过工具检索订单详情。
输入参数是按 Playbook 定义的,Playbook 默认情况下无法看到 其他 Dialogflow CX 控制台参数类型。当流程转换为 Playbook 时,如果目标 Playbook 具有同名的输入参数,则页面和会话参数会传播到 Playbook。如需在转换期间将信息从流程传递到剧本,请定义与转换前存在的会话或页面参数同名的剧本输入参数。
创建示例以控制输入参数值对操作的影响。例如,如果输入参数应影响客服人员对用户的称呼方式,请创建示例来为该参数定义值,然后在示例中的语音指令操作中使用相同的值。如需了解详情,请参阅传递参数。
输出参数
借助输出参数,剧本可以发出供其他流程或剧本使用的相关信息。例如,Playbook 可以从用户收集订单号,并通过输出参数发出该订单号;Playbook 也可以使用工具预订航班,并通过输出参数发出确认号。
创建示例以控制 Playbook 应如何确定每个输出参数的值。例如,如果表示确认号的输出参数应从工具使用情况的输出中派生其值,请创建示例,其中工具使用情况的输出与 Playbook 输出参数的值相匹配。
传递参数
与流程不同,Playbook 不支持使用特定语法注入参数值。而是依靠说明和少样本问题示例来确定应如何使用参数值,以及在指定参数值时应如何确定值。
假设有一个专为销售活动门票而设计的客服人员,其具有以下 Playbook:
- 名为
Ticket ordering
的 Playbook,该 Playbook 使用名为Ticket sales API
的工具下单。- 此 Playbook 接受类型为
number
且名称为event_id
的输入参数。 Ticket sales API
工具预期收到包含event_id
的请求。
- 此 Playbook 接受类型为
- 名为
Event selection
的 Playbook,用于帮助用户选择活动,然后将他们定向到Ticket ordering
(并带有参数event_id
),以便购买票券。
在此示例中,为了确保 event_id
能够可靠地从 Event selection
传递到 Ticket ordering
,并从 Ticket ordering
传递到 Ticket sales API
,需要多个示例。
Ticket ordering
Playbook 应包含多个示例,这些示例应满足以下条件:
- 为输入参数
event_id
指定一些实际值,每个示例中的值都不同。 - 在请求正文中添加工具使用操作,其中包含与输入参数中指定的相同的真实
event_id
值。
Event selection
Playbook 应包含多个示例,这些示例应满足以下条件:
- 添加用户语句,其中用户选择了具有一些现实
event_id
的事件,每个示例中的event_id
都不同。 - 添加
Ticket ordering
的 Playbook 调用,将event_id
参数设置为与用户选择决定的相同的真实event_id
。
除了添加示例之外,不妨尝试在说明、目标或工具详情中添加具体说明,说明应如何使用参数。例如,操作手册 Ticket ordering
包含以下说明:
- Use parameter event_id to send a buy_tickets request with ${TOOL: Ticket sales API}
在提供所述示例和说明的情况下,Event selection
手册会根据用户的选择正确确定 event_id
,并将其作为名为 event_id
的输入参数传递给 Ticket ordering playbook
。然后,Ticket ordering
会将请求正文中的相同 event_id
传递给 Ticket sales API
。手册依赖于具有不同参数值的示例,以帮助推断参数的使用方式。