Conversational Agents (Dialogflow CX) 对话(会话)可以描述并直观呈现为状态机。会话的状态由页面表示。
您可以为每个流定义多个页面,其中组合页面可以处理该流所针对的主题的完整对话。在任何给定时刻,只有一个页面是“当前页面”,当前页面被视为活跃页面,与该页面关联的流被视为活跃流。每个流都有一个特殊的初始页面。当流最初处于活跃状态时,初始页面将变为当前页面。每轮对话期间,当前页面要么保持不变,要么转换到其他页面。
您可以将每个页面配置为从最终用户处收集与该页面所表示的对话状态相关的信息。 例如,您可以在下图中为披萨外卖代理的食品订单流创建页面(蓝色)。图的“初始”节点表示“食品订单”流的初始页。流完成后,它将转换为“确认”流。
页面的生命周期
一旦页面变为活跃状态,代理将按照几个步骤进行操作,其中可能包括条目 fulfillment、预填充表单、状态处理程序评估、表单参数提示、向最终用户发送响应消息,以及页面更改或重复循环:
此过程的详细信息如下:
如果页面存在条目 fulfillment,则系统将调用它。fulfillment 提供的任何静态响应都将添加到响应队列中。
如果启用了部分响应,则 Conversational Agents (Dialogflow CX) 会刷新响应队列,并将所有已加入队列的消息作为部分响应发送到流式传输 API 调用方。
如果 fulfillment 具有网络钩子,则调用网络钩子,这可能会将其他响应附加到队列。这些额外的响应不会触发响应队列的立即清空。
如果页面具有表单参数,则可能已预填充这些参数:
如果任何状态处理程序在范围内,则根据处理程序评估顺序规则评估状态处理程序。这可能涉及从上一循环迭代中调用的路由、事件处理程序或重新提示处理程序。如果调用了任何状态处理程序,可能会发生以下一种或两种情况:
- 如果该处理程序存在 fulfillment,则调用它。fulfillment 提供的任何静态响应都将添加到响应队列中。部分响应和 Webhook 也会在启用后执行。
- 如果该处理程序存在目标流或页面,则会话将转换到目标,并且该页面将变为非活跃状态。
如果满足以下所有条件,则已在响应参数中添加表单参数提示:
- 该页面包含表单。
- 还需要填写必需的表单参数。
- 重新提示处理程序未在第 3 步中执行。
- 部分响应和网络钩子会在启用后执行。
系统将剩余响应队列消息发送给最终用户,而代理会等待最终用户输入。
如果最终用户输入提供提示的表单参数,请填写参数。请继续执行第 3 步。
页面生命周期导航
通过模拟器执行步骤查看器,您可以在特定对话回合的步骤之间切换,并在每个步骤的焦点中显示相关的代理构建器元素。在以下示例中,最终用户输入“我要租车”会触发五个执行和转换步骤:
执行步骤查看器将为您打开第一步的对话开始页面。在本例中,这是默认初始页。
触发意图
car_rental.reservation_create
的转换路由。执行步骤查看器在焦点中显示此路由,您可以在其中看到转换目标是Pickup Location
页面。代理进入页面
Pickup Location
。代理评估
Pickup Location
页面的条目 fulfillment。Fulfillment 为空,因此不会发生任何操作。代理尝试收集所需的表单参数
pickup_location
,并向最终用户显示此参数的初始提示 fulfillment 消息。
您也可以撤消上一条语音,尝试使用其他内容来测试不同的页面转换。
创建页面
要创建页面,请执行以下操作:
控制台
- 打开 Dialogflow CX 控制台。
- 选择您的 Google Cloud 项目。
- 选择您的代理。
- 在流部分中为该页面选择一个流。
- 点击页面部分中的添加 add 按钮。
- 输入页面的显示名。
- 点击页面显示名旁边的设置 more_vert 按钮。
- 选择修改。
- 在显示的页面修改面板中输入字段。
- 点击保存。
API
请参阅 Page
类型的 create
方法。
为页面参考选择协议和版本:
协议 | V3 | V3beta1 |
---|---|---|
REST | 页面资源 | 页面资源 |
RPC | 页面接口 | 页面接口 |
C++ | PagesClient | 不可用 |
C# | PagesClient | 不可用 |
Go | PagesClient | 不可用 |
Java | PagesClient | PagesClient |
Node.js | PagesClient | PagesClient |
PHP | 不可用 | 不可用 |
Python | PagesClient | PagesClient |
Ruby | 不可用 | 不可用 |
页面数据
要访问网页的数据,请执行以下操作:
控制台
- 打开 Dialogflow CX 控制台。
- 为代理选择 Google Cloud 项目。
- 选择您的代理。
- 点击流部分中的流。
- 流的页面已在页面部分填充。
- 点击页面显示名旁边的设置 more_vert 按钮。
- 选择修改。
- 在显示的页面修改面板中输入字段。
- 点击保存以保存更改。
API
请参阅 Page
类型的 get
和 patch/update
方法。
为页面参考选择协议和版本:
协议 | V3 | V3beta1 |
---|---|---|
REST | 页面资源 | 页面资源 |
RPC | 页面接口 | 页面接口 |
C++ | PagesClient | 不可用 |
C# | PagesClient | 不可用 |
Go | PagesClient | 不可用 |
Java | PagesClient | PagesClient |
Node.js | PagesClient | PagesClient |
PHP | 不可用 | 不可用 |
Python | PagesClient | PagesClient |
Ruby | 不可用 | 不可用 |
以下数据与页面相关联:
- 显示名:您的网页的人类可读名称。
- 条目 Fulfillment(也称为条目对话框):这是页面最初变为活跃状态时要调用的 fulfillment。
- 参数:这些是页面表单中的参数值,用于从最终用户捕获结构化输入。
- 路由:当页面处于活跃状态时,系统可能调用这些状态处理程序。如需了解详情,请参阅页面级处理程序路由
- 路由组:当页面处于活跃状态时,系统可能调用这些组中的路由。如需了解详情,请参阅路由组
- 事件处理程序:当页面处于活跃状态时,系统可能会调用这些事件处理程序。如需了解详情,请参阅页面级事件处理脚本。
页面设置
以下设置适用于页面:
如需访问页面设置,请执行以下操作:
控制台
- 打开 Dialogflow CX 控制台。
- 选择您的 Google Cloud 项目。
- 选择您的代理。
- 将鼠标悬停在页面部分上的页面。
- 点击选项 more_vert 按钮。
- 选择页面设置。
- 浏览或修改设置。
- 点击保存以保存更改。
API
请参阅 Page
类型的 get
和 patch/update
方法。
为页面参考选择协议和版本:
协议 | V3 | V3beta1 |
---|---|---|
REST | 页面资源 | 页面资源 |
RPC | 页面接口 | 页面接口 |
C++ | PagesClient | 不可用 |
C# | PagesClient | 不可用 |
Go | PagesClient | 不可用 |
Java | PagesClient | PagesClient |
Node.js | PagesClient | PagesClient |
PHP | 不可用 | 不可用 |
Python | PagesClient | PagesClient |
Ruby | 不可用 | 不可用 |
删除页面
要删除页面,请执行以下操作:
控制台
- 打开 Dialogflow CX 控制台。
- 选择您的 Google Cloud 项目。
- 选择您的代理。
- 在流部分中选择页面的流。
- 点击页面部分中页面显示名旁边的设置 more_vert 按钮。
- 选择删除。
API
请参阅 Page
类型的 delete
方法。
为页面参考选择协议和版本:
协议 | V3 | V3beta1 |
---|---|---|
REST | 页面资源 | 页面资源 |
RPC | 页面接口 | 页面接口 |
C++ | PagesClient | 不可用 |
C# | PagesClient | 不可用 |
Go | PagesClient | 不可用 |
Java | PagesClient | PagesClient |
Node.js | PagesClient | PagesClient |
PHP | 不可用 | 不可用 |
Python | PagesClient | PagesClient |
Ruby | 不可用 | 不可用 |