如需在 Dialogflow 中定义 Action,您需要在 Dialogflow 代理中创建 intent,并将其指定为 Action 的入口点。您可以创建以下类型的 Action:
- 默认操作:每个 Dialogflow 代理必须有且仅有一个在用户通过名称(例如,“Ok Google”聊聊有关 Google 的常识”或“Ok, Google. 让我讲讲关于 Google 的事实信息”)。
- 可深层链接到对话中的其他 intent:当用户通过其名称调用您的 Action 并指定调用短语(例如,“talk to Facts about Google for history facts”(与 Google 的事实信息交谈))时,就会触发这些 Action。
如需详细了解这些调用模型的工作原理,请参阅意图和调用。
定义默认 Action
每个 Dialogflow 代理必须有且只能有一个意图处理 GOOGLE_ASSISTANT_WELCOME 事件。当用户通过 Action 的名称(例如“Ok Google, talk to Tacts about Google”)调用 Action 时,就会触发此 intent。
您可以通过以下方式定义 GOOGLE_ASSISTANT_WELCOME 事件:
在 Dialogflow 控制台的 intent 编辑器中,执行以下操作:
- 点击导航菜单中的意图。
- 选择要设置为欢迎事件的意图。
- 在 intent 的 Events 部分,输入
GOOGLE_ASSISTANT_WELCOME
。 点击保存。
图 1. Dialogflow 意图的“事件”部分的屏幕截图。
在 Google 助理集成模态窗口中:
- 点击导航菜单中的 Integrations(集成),然后点击 Google Assistant。
- 点击 X 移除显式调用字段中的当前项。
在欢迎 intent 框中,选择要设置为欢迎事件的 intent。
图 2. Dialogflow 控制台上 Google 助理集成模态窗口的屏幕截图。
当您查看 intent 的 Events 部分时,您应该会看到该 intent 现在已设置 GOOGLE_ASSISTANT_WELCOME 事件(参见图 1)。
启用 fulfillment
默认情况下,Dialogflow 意图会返回静态响应,该响应在意图的响应 (Response) 部分指定。对于需要在调用时仅用同一消息进行响应的简单 Action,此设置可能足够了。但是,如果您希望 intent 返回动态响应,则需要提供可以处理复杂逻辑并实时为 intent 编写响应的执行方式。
如需为 intent 启用 fulfillment,请执行以下操作:
- 滚动到 intent 的 intent 编辑器的底部。
点击 Fulfillment 然后选择为此意图启用 webhook 调用 (Enable webhook call for this intent)。
图 3. Dialogflow intent 的 Fulfillment 部分的屏幕截图。
如需了解如何在 intent 被触发时对其进行处理,请参阅构建 fulfillment。
定义其他操作
您可以提供其他 Action 作为对话的入口点。通过此设置,用户可以指定关于他们想要做什么的更多详细信息(例如,“了解 Google 的事实信息,帮我查找历史记录”)。
如需在 Dialogflow 中定义其他操作,请按以下步骤操作:
- 为您要构建的特定 Action 创建 intent。
在 intent 的训练短语部分中,指定触发此操作的模式。例如,如果您想要通过短语“Talk to Facts about Google to find me history 发短信 s”这一短语调用 Action,请提供以下训练短语:
- “查找历史事实”
- “查询历史记录”
- “我想了解公司的发展历史”
- “给我播报一些总部相关信息”
- “告诉我一些关于公司总部的信息”
我们建议为每个意图至少使用 10 个训练短语。
如需为该 intent 启用 fulfillment,请滚动到屏幕底部,点击 Fulfillment,然后选择为此 intent 启用 webhook 调用。(如需详细了解 fulfillment,请参阅构建 fulfillment。)
点击保存。
点击导航菜单中的 Integrations(集成),然后点击 Google Assistant。 (系统会显示 Google 助理模态窗口)。
在隐式调用部分中,添加 intent。
图 4. Google 助理集成模态窗口中的“隐式调用”部分的屏幕截图。
定义 Action 时,请遵循以下限制和准则:
- 请勿在调用短语中包含预留字词。
- 例如,不要以“talk to”或“let me talk to”开头您的调用短语。
- 请勿指定仅包含
@sys.any
实体的训练短语。- 要具体得多,例如
find recipes for @sys.any
。
- 要具体得多,例如
处理无法识别的操作
当用户尝试调用您的 Action 无法识别的 Action 时,Dialogflow 可以触发 intent 来处理这些情况。
如需启用此行为,请创建一个输入上下文为 google_assistant_welcome
的新 intent,并指定对用户的适当响应:
- 在导航菜单中,点击 Intents。
- 点击 Create intent 并为您的 intent 命名。
- 在上下文部分中,指定
google_assistant_welcome
作为输入上下文,然后按 Enter 键。(进入输入上下文后,google_assistant_welcome
会显示为输出上下文)。 点击 x 可移除该输出上下文。
在训练短语中,添加
banana
(或任何其他名词)作为用户表达式。双击 banana,然后选择
@sys.any
。(我们使用@sys.any
实体告知 Dialogflow 将表达式泛化为任何语法,而不仅仅是“香蕉”。)在响应部分中,使用
$any
指定响应。例如,使用以下响应:I'm sorry, I don't know how to help with $any.
点击保存。