

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用可视化对话生成器
<a name="visual-conversation-builder"></a>

可视化对话生成器是一个拖放式对话生成器，可在丰富的视觉环境中利用意图来轻松设计并可视化对话路径。

**要访问可视化对话生成器，请执行以下操作：**

1. 在 Amazon Lex V2 控制台的左侧导航窗格中，选择机器人，然后选择**意图**。

1. 通过以下方式中的任一种打开意图编辑器：
   + 选择**意图**部分右上角的**添加意图**，然后选择添加空意图或内置意图。
   + **意图**部分中选择意图的名称。

1. 在意图编辑器中，在屏幕底部的窗格中选择**可视化生成器**以打开可视化对话生成器。

1. 要返回菜单意图编辑器界面，请选择**编辑器**。

![\[使用可视化对话生成器的对话流程示例。\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/vcb-sample.png)


可视化对话生成器采用更直观的用户界面，能够帮助您直观地查看和修改对话流程。您可以拖放对应的数据块，以便扩展现有流程或重新排列对话步骤的顺序。您无需编写任何 Lambda 代码即可开发具有复杂分支的对话流程。

此更改有助于将对话流程设计与 Lambda 中的其他业务逻辑分开。可视化对话生成器可以与现有的意图编辑器配合使用，并可用于构建对话流程。但是，对于更复杂的对话流程，建议使用可视化编辑器视图。

当您保存意图时，Amazon Lex V2 可以在确定连接断开、Amazon Lex V2 建议连接时自动连接意图，或者您可以针对该块选择自己的连接。


| 操作 | 示例 | 
| --- | --- | 
|  向工作区添加数据块  |  ![\[向工作区添加数据块\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/vcb-addblock.gif)  | 
|  建立数据块之间的连接  |  ![\[建立数据块之间的连接\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/vcb-connectionblock.gif)  | 
|  在块上打开配置面板  |  ![\[打开某个块的配置面板\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/vcb-openpanelblock.gif)  | 
|  缩放以适合  |  ![\[缩放以适合\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/vcb-zoomtofit.gif)  | 
|  从对话流程中删除数据块  |  ![\[从对话流程中删除数据块\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/vcb-deleteblock.gif)  | 
|  自动清理工作区  |  ![\[自动清理工作区\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/vcb-autoclean.gif)  | 

**术语：**

**数据块**：对话流的基本构成单元。每个数据块都有特定的功能，可以处理对话的不同用例。

**端口**：每个数据块均包含可用于将一个数据块连接到另一个数据块的端口。数据块可以包含输入端口和输出端口。每个输出端口代表对应数据块的特定功能变体（例如错误、超时或成功）。

**边缘**：边缘是指一个数据块的输出端口与另一个数据块的输入端口之间的连接。它是对话流程中分支的一部分。

**对话流程**：一组由边缘连接的数据块，用于描述与客户的意图层面的交互。

**数据块**

数据块是对话流程设计的构成元素。这些数据块代表意图中的不同状态，从意图开始到用户输入，再到结束。

根据数据块的类型，每个数据块均有一个入口点以及一个或多个出口点。当对话通过出口点时，可以为每个出口点配置相应的消息。对于具有多个出口点的数据块，出口点与对应于该节点的状态相关。对于条件节点，出口点代表不同的条件。

每个数据块都设有配置面板，点击数据块右上角的**编辑**图标即可打开该面板。配置面板包含可以配置为与每个数据块相对应的详细字段。

可以通过拖动新的数据块直接在该节点上配置机器人提示和消息，也可以在右侧面板中修改该等机器人提示和消息以及数据块的其他属性。

**数据块类型**：以下是可视化对话生成器中可以使用的数据块类型。


| 数据块类型 | 数据块 | 
| --- | --- | 
|  **开始**：对话流中的根数据块或第一个数据块。也可以对此数据块进行配置，以便机器人可以发送初始响应（意图已被识别的消息）。有关更多信息，请参阅 [初始回应](intent-initial.md)。  |  ![\[可视化对话生成器中的起始数据块\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/vcb-start.png)  | 
|  **获取槽位值**：此数据块尝试引发单个槽位的值。此数据块的设置是等待客户对槽位引发提示做出响应。有关更多信息，请参阅 [槽值](intent-slots.md)。  |  ![\[可视化对话生成器中的获取槽位值数据块\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/vcb-getslotvalue.png)  | 
|  **条件**：此数据块包含条件。其中最多包含 4 个自定义分支（带条件）以及一个默认分支。有关更多信息，请参阅 [添加条件以构建对话的分支](paths-branching.md)。  |  ![\[可视化对话生成器中的条件数据块\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/vcb-condition.png)  | 
|  **对话框代码挂钩**：此数据块处理对话框 Lambda 函数的调用。此数据块包含基于对话框 Lambda 函数成功、失败或超时的机器人响应。有关更多信息，请参阅 [调用对话框代码挂钩](paths-code-hook.md)。  |  ![\[可视化对话生成器中的代码挂钩数据块\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/vcb-codehook.png)  | 
|  **确认**：此数据块会在意图履行之前向客户进行查询。其中包含基于客户对确认提示做出“是”或“否”回复的机器人响应。有关更多信息，请参阅 [确认](intent-confirm.md)。  |  ![\[可视化对话生成器中的确认数据块\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/vcb-confirmation.png)  | 
|  **履行**：此数据块处理意图的履行，通常在槽位引发之后。可以将其配置为在履行成功或失败时调用 Lambda 函数并使用消息进行响应。有关更多信息，请参阅 [执行](intent-fulfillment.md)。  |  ![\[可视化对话生成器中的履行数据块\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/vcb-fulfillment.png)  | 
|  **关闭响应**：依据此数据块，机器人将回复一条消息，然后再结束对话。有关更多信息，请参阅 [关闭响应](intent-closing.md)。  |  ![\[可视化对话生成器中的关闭数据块\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/vcb-closing.png)  | 
|  **结束对话**：此数据块指示对话流程的结束。  |  ![\[可视化对话生成器中的结束数据块\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/vcb-end.png)  | 
|  **等待用户输入**：此数据块可用于捕获客户的输入并根据言语切换到其他意图。  |  ![\[可视化对话生成器中的等待数据块\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/vcb-wait.png)  | 
|  **转到意图**：该数据块可以用于转到一个新的意图，或者直接引发此意图的特定槽位。  |  ![\[可视化对话生成器中的跳转意图数据块\]](http://docs.aws.amazon.com/zh_cn/lexv2/latest/dg/images/vcb-gotointent.png)  | 

**端口类型**

所有数据块都包含一个输入端口，用于连接其父数据块。对话只能从其父数据块的输出端口流向特定数据块的输入端口。但是，数据块可能包含零个、一个或多个输出端口。如果数据块没有任何输出端口，则表示当前意图中对话流程的结束（`GoToIntent`、`EndConversation`、`WaitForUserInput`）。

**意图设计规则：**
+ 意图中的所有流程均始于起始数据块。
+ 与每个出口点对应的消息是可选的。
+ 您可以将数据块配置为在配置面板中设置与每个出口点相对应的值。
+ 一个意图中的单个流程中只能存在一个开始、确认、履行和关闭数据块。可能存在多个条件、对话框代码挂钩、获取槽位值、结束对话、转移和等待用户输入数据块。
+ 条件数据块无法与条件数据块直接连接。对话框代码挂钩也是如此。
+ 循环流允许使用三个数据块，但不允许使用指向“开始意图”的传入连接器。
+ 可选槽位没有传入连接器或传出连接，主要用于捕获意图引发期间存在的任何数据。对话路径中的所有其他槽位都必须是必填的槽位。

数据块：
+ 起始数据块必须具有传出边缘。
+ 如果槽位是必需的，则每个获取槽位值数据块都必须具有从成功端口输出的传出边缘。
+ 如果处于活动状态，则每个条件数据块都必须具有从每个分支输出的传出边缘。
+ 一个条件数据块无法具有多个父项。
+ 活动的条件数据块必须具有传入边缘。
+ 每个活动代码挂钩数据块必须具有从成功、失败和超时中的每个端口输出的传出边缘。
+ 活动的代码挂钩数据块必须具有传入边缘。
+ 活动的确认数据块必须具有传入边缘。
+ 活动的履行数据块必须具有传入边缘。
+ 活动的关闭数据块必须具有传入边缘。
+ 一个条件数据块必须至少具有一个非默认分支。
+ 跳转意图数据块必须指定意图。

边缘：
+ 条件数据块无法与另一个条件数据块直接连接。
+ 代码挂钩数据块无法与另一个代码挂钩数据块直接连接。
+ 条件数据块只能连接到零个或一个代码挂钩数据块。
+ 连接（代码挂钩 -> 条件 -> 代码挂钩）无效。
+ 履行数据块无法具有代码挂钩数据块子项。
+ 作为履行数据块的子项的条件数据块无法具有代码挂钩数据块子项。
+ 关闭数据块无法具有代码挂钩数据块子项。
+ 作为关闭数据块的子项的条件数据块无法具有代码挂钩数据块子项。
+ 一个包含开始、确认或获取槽位值数据块的关联链中只能有一个代码挂钩数据块。

**注意**  
Amazon Lex V2 于 2022 年 8 月 17 日发布了对用户对话管理方式的更改。借助此更改，您可以更好地控制用户的对话路径。有关更多信息，请参阅 [Amazon Lex V2 中的对话流更改](understanding-new-flows.md)。2022 年 8 月 17 日之前创建的机器人不支持对话框代码挂钩消息、设置值、配置后续步骤和添加条件。