Scene

在设计对话时,场景是控制流的基本单位。它们可以与其他场景串联在一起、为最终用户生成提示,以及定义槽。场景名称在文件名称中指定。

YAML 表示法
onEnter: 
  object (EventHandler)
intentEvents: 
  - object (IntentEvent)
conditionalEvents: 
  - object (ConditionalEvent)
slots: 
  - object (Slot)
onSlotUpdated: 
  object (EventHandler)
字段
onEnter

object (EventHandler)

过渡到此场景时要调用的处理程序。

intentEvents[]

object (IntentEvent)

根据 intent 触发的事件的列表。这些事件可在调用 on_load 处理程序后随时触发。重要提示 - 这些事件定义了一组限定于此场景的 intent,其优先级高于具有相同 intent 或其触发短语的任何全局定义的事件。intent 名称在场景中必须是唯一的。

conditionalEvents[]

object (ConditionalEvent)

根据条件语句触发的事件列表。系统会在填充表单后对其进行评估;如果此场景没有表单,则会立即在 on_load 后立即执行评估(仅执行一次评估)。只会触发第一个匹配事件。

slots[]

object (Slot)

有序的槽列表。每个插槽都定义了将要解析和配置的数据类型,以便自定义此分辨率的体验(例如提示)。

onSlotUpdated

object (EventHandler)

当槽的状态发生变化不是由另一个处理程序中的更新引起的时,系统会调用处理程序。这样一来,槽位会失效、场景也会失效或场景状态发生其他变化。

槽位

槽的配置。槽是单个数据单元,可通过自然语言(即 intent 参数)、会话参数和其他来源填充。

YAML 表示法
name: string
type: 
  object (ClassReference)
required: boolean
promptSettings: 
  object (PromptSettings)
commitBehavior: 
  object (CommitBehavior)
config: value
defaultValue: 
  object (DefaultValue)
字段
name

string

必需。广告位的名称。

type

object (ClassReference)

必需。声明该插槽的数据类型。

required

boolean

可选。指明是否必须填充广告位才能推进。未填充的必需槽位会触发可自定义的提示。

promptSettings

object (PromptSettings)

可选。为槽位填充的不同阶段注册提示。

commitBehavior

object (CommitBehavior)

可选。与槽关联的提交行为。

config

value (Value format)

可选。与用于填充槽位的槽相关联的额外配置。配置的格式因槽类型而异。您可以将对用户或会话参数的资源引用添加到此配置中。填充与交易和用户互动相关的槽时需要使用此配置。

示例:对于 actions.type.CompletePurchaseValue 类型的广告位,以下配置引用了客户端定义的会话参数 userSelectedSkuId,提出数字商品订单:

{ "@type": "type.googleapis.com/ google.actions.transactions.v3.CompletePurchaseValueSpec", "skuId": { "skuType": "SKU_TYPE_IN_APP", "id": "$session.params.userSelectedSkuId", "packageName": "com.example.company" } }

defaultValue

object (DefaultValue)

可选。用于为此槽填充默认值的配置。

PromptSettings

在一处定义了槽提示。

YAML 表示法
initialPrompt: 
  object (EventHandler)
noMatchPrompt1: 
  object (EventHandler)
noMatchPrompt2: 
  object (EventHandler)
noMatchFinalPrompt: 
  object (EventHandler)
noInputPrompt1: 
  object (EventHandler)
noInputPrompt2: 
  object (EventHandler)
noInputFinalPrompt: 
  object (EventHandler)
字段
initialPrompt

object (EventHandler)

提示槽值本身。例如:“您想要什么尺码?”

noMatchPrompt1

object (EventHandler)

当用户输入的内容首次与槽的预期值类型不匹配时发出提示。示例:“抱歉,我没听明白。”

noMatchPrompt2

object (EventHandler)

当用户第二次输入的内容与槽的预期值类型不匹配时发出提示。示例:“抱歉,我没听明白。”

noMatchFinalPrompt

object (EventHandler)

当用户上次输入的内容与槽的预期值类型不匹配时发出提示。示例:“抱歉,我没听明白。”

noInputPrompt1

object (EventHandler)

在用户首次未提供输入时提示。示例:“抱歉,我没听明白。”

noInputPrompt2

object (EventHandler)

在用户第二次未提供输入时提示。示例:“抱歉,我没听明白。”

noInputFinalPrompt

object (EventHandler)

在用户上次未输入内容时提示。示例:“抱歉,我没听明白。”

CommitBehavior

说明在槽成功填充后与槽关联的提交行为的消息。

YAML 表示法
writeSessionParam: string
字段
writeSessionParam

string

要在广告位值填充后写入到的会话参数。请注意,目前不支持嵌套路径。“$$”用于将广告位值写入与广告位同名的会话参数。例如:writeSessionParam = "fruit" 对应于“$session.params.fruit”。writeSessionParam = "ticket" 对应于“$session.params.ticket”。

DefaultValue

用于为此槽填充默认值的配置。

YAML 表示法
sessionParam: string
constant: value
字段
sessionParam

string

可选。用于初始化槽值的会话参数(如果该参数具有非空值)。值的类型必须与广告位的类型一致。请注意,目前不支持嵌套路径。例如:sessionParam = "fruit" 对应于 $session.params.fruitsessionParam = "ticket" 对应于 $session.params.ticket

constant

value (Value format)

可选。广告位的常量默认值。仅当此槽的值未通过 sessionParam 填充时,才会用到此属性。此值的类型必须与广告位的类型一致。