自定义事件是指您定义的事件。它们用于处理 在与最终用户的对话之外。 例如: 最终用户点击了某个按钮, 一段时间过后 可用的广告资源是否更改 依此类推。
您可以使用 fulfillment 或 该 API。
使用 API 调用事件
Sessions
类型 detectIntent
调用的请求包含 queryInput.event
字段,该字段用于调用事件。该字段的类型为 EventInput
,其中包含事件名称、可选参数和语言代码字段。
向检测意图调用提供事件时,您不会提供其他数据,例如最终用户表述。该调用的唯一目的是调用事件并触发意图。
使用 fulfillment 调用事件
您可以设置 WebhookResponse
的 followupEventInput
字段,以通过 fulfillment 调用事件。您也可以选择设置 followupEventInput.parameters
字段,以为意图提供参数。
例如:
{
"followupEventInput": {
"name": "event-name",
"parameters": {
"parameter-name-1": "parameter-value-1",
"parameter-name-2": "parameter-value-2"
},
"languageCode": "en-US"
}
}
为 WebhookResponse
设置 followupEventInput
参数后,
Dialogflow 会忽略 fulfillmentText
、fulfillmentMessages
、
和 payload
字段。
此外,followupEventInput.languageCode
字段是必填字段
但 Dialogflow 会忽略此字段
因为语言已经通过
发出调用请求。
当 Dialogflow 收到包含事件的 webhook 响应时,它会立即触发相应的意图,该意图定义了响应中包含的事件。
以下流程介绍了详细步骤:
- 最终用户输入或说出表达内容。
- Dialogflow 将最终用户表述与 Intent-1 进行匹配,该意图已配置 fulfillment。
- Dialogflow 向您的服务器发送网络钩子请求。
- 服务器使用包含后续事件的 webhook 响应进行响应。
- Dialogflow 不会响应用户 Intent-1 是否匹配,而是触发 Intent-2,后者已配置了上述事件。
- Dialogflow 继续进行处理,就像最终用户发起了 Intent-2 匹配一样,然后根据 Intent-2 的配置处理所需的参数和 fulfillment。
使用网络钩子响应事件对意图匹配进行链式处理
您可以对意图匹配和网络钩子响应事件进行链式处理。在上述流程中,Intent-2 也可以配置 fulfillment。如果服务器的网络钩子响应提供另一个事件,Dialogflow 将继续匹配 Intent-3(已配置该事件),而不为最终用户响应 Intent-2 是否匹配。
在链式处理结束之前,Dialogflow 不会响应最终用户。以这种方式对意图进行链式匹配时,每个网络钩子响应都必须在超时限制规定的时间内发送。