改进交谈
测试对话和组织对话节点。
测试对话
在编写对话时,您可以随时测试对话,查看对话对输入的响应。
您通过“试用”面板提交的查询会生成 /message
API调用,但不会记录在案,也不会产生费用。
-
从“对话框”页面中,单击 试用 按钮。
-
在聊天窗格中,输入一些文本,然后按 Enter 键。
-
检查响应,以确定对话是否正确解释了您的输入并选择了正确的响应。
聊天窗口会指示在输入中识别到的意向和实体。
测试对话框输出 -
要查看已识别的顶级意向,请将鼠标悬停在置信度分数最高的意向旁边显示的眼睛图标
上。
-
如果响应不是您期望的内容,那么可以从“试用”窗格中执行以下操作:
- 如果要编辑输入中识别到的实体,请单击实体名称以在“实体”页面中将其打开。
- 如果识别到的意向不正确,那么可以单击意向名称旁边的箭头以对其进行更正,或将该主题标记为“不相关”。 有关更多信息,请参阅改进训练数据。
-
如果您想知道对话树中的哪个节点触发了响应,请点击其旁边的位置图
源节点将获得焦点,并且助手在树中遍历至源节点的路径会突出显示。 此路径会一直保持突出显示,直到您执行其他操作(例如,输入新的测试输入)。
-
要检查或设置上下文变量的值,请单击管理上下文链接。
这将显示在对话中已定义的所有上下文变量。
此外,还列出了以下上下文变量:
$timezone
:试用窗格从 Web 浏览器获取用户区域设置信息,并使用这些信息来设置$timezone
上下文变量。 通过此上下文变量,能更轻松地在测试对话交流中处理时间引用。$metadata
: 此上下文变量包含用户标识名称和值对。 由于缺省情况下在 试用 窗格中未指定user_id
,因此conversation_id
将用作user_id
值。 在运行时,通常会将标识值从您正在使用的任何集成传递到助手。 如果您设计定制应用程序,请自行设置此值。
可以添加变量并设置其值,以查看对话如何在下一轮测试对话中进行响应。 例如,如果将对话设置为根据用户提供的上下文变量值来显示不同响应,那么此功能很有用。
- 要添加上下文变量,请指定变量名称,然后按回车键。
- 要为上下文变量定义默认值,请在列表中找到您添加的上下文变量,然后为其指定一个值。
有关更多信息,请参阅 上下文变量。
-
继续与对话交互以查看交谈如何在其中进行。
- 要找到并重新提交测试话语,可以按“向上”键来循环浏览最近的输入。
- 要从聊天窗格中除去先前的测试话语,然后从头开始,请单击清除链接。 此操作不仅会除去测试话语和响应,还会清除因与对话交互而设置的任何上下文变量的值。
后续操作
更改对话框以解决您在测试时看到的问题:
- 如果确定识别到错误的意向或实体,那么可能需要修改意向或实体定义。
- 如果对话框中识别出了正确的意图和实体,但触发了错误的节点,请确保您的条件写对了。
搜索对话
您可以在对话框中搜索一个或多个包含某个单词或短语的对话节点。
-
选择“搜索”图标
。
-
输入搜索项或搜索短语。
首次搜索时,系统会创建一个索引。 系统可能会要求您稍候,等待对对话节点中的文本建立索引。
这将显示包含搜索项的节点以及相应的示例。 选择任一结果以将其打开进行编辑。

复制对话节点
可以复制节点来创建该节点的精确副本,以作为对话树中该节点后面紧跟的对等节点。 为复制的节点本身提供的名称与原始节点相同,但附加了 - copy
n
,其中 n
是以 1 开头的数字。 如果多次复制同一节点,那么名称中的 n
将对每个副本递增一个,以帮助您区分副本。 如果节点没有名称,那么会将其命名为 copy
n
。
复制具有子节点的节点时,会一并复制子节点。 复制的子节点具有与原始子节点完全相同的名称。 区分复制的子节点与原始子节点的唯一方法是看父节点名中是否含有 copy
。
-
在要复制的节点上,点击 Node 选项 图标
,然后选择 复制。
-
考虑对复制的节点重命名,或编辑这些节点的条件以使其不同。
移动对话节点
您创建的每个节点都可以移动到对话树中的其他位置。
您可能希望将先前创建的节点移至流的另一个区域以更改交谈。 可以移动节点,使其成为另一个分支中的同代或对等节点。
-
在您要移动的节点上,点击 Node 选项 图标
,然后选择 移动。
-
要将此节点移动到哪个位置,即在树中的该位置附近选择一个目标节点。 选择是将此节点放在目标节点之前还是之后,还是使其成为目标节点的子节点。
使用文件夹组织对话
可以通过将多个对话节点添加到一个文件夹中,从而将这些节点分组在一起。 对节点进行分组的原因包括:
- 将处理类似主题的节点放在一起,以方便查找。 例如,可以将处理用户帐户相关问题的节点分组到用户帐户文件夹中,将处理付款相关查询的节点分组到付款文件夹中。
- 将一组节点分组,以便在满足特定条件时才让对话框处理这些节点。 使用条件(如
$isPlatinumMember
)将节点分组,这些节点提供额外的服务,只有当前用户有权获得额外服务时,才会处理这些服务。 - 在处理节点期间向运行时隐藏这些节点。 可以将这些节点添加到具有
false
条件的文件夹,以避免处理这些节点。
文件夹的这些特征会影响对文件夹中节点的处理方式:
- 条件:如果未指定条件,那么助手将直接处理文件夹中的节点。 如果指定了条件,助手会首先对文件夹条件求值,以确定是否处理其中的节点。
- 定制:文件夹中的节点会继承应用于该文件夹的任何配置设置。 例如,如果更改文件夹的离题设置,那么该文件夹中的所有节点都会继承这些更改。
- 树层次结构:根据文件夹是添加到对话树中的根级别还是子级别,该文件夹中的节点会视为根节点或子节点。 添加到根级别文件夹的任何根级别节点都会继续作为根节点运行;例如,这些节点不会成为文件夹的子节点。 但是,如果将根级别节点移入作为另一个节点子代的文件夹中,那么该根节点会成为这另一个节点的子代。
文件夹对节点的求值顺序没有影响。 节点会继续从第一个到最后一个进行处理。 当您的助手跟踪树时,如果文件夹中没有条件或条件为真,它将立即处理文件夹中的第一个节点,并继续按顺序向下遍历树。 如果文件夹没有文件夹条件,则文件夹中的每个节点都像树中的其他单独节点一样被处理。
添加文件夹
要向对话树添加文件夹,请完成以下步骤:
-
从对话框树状视图中,点击 “添加文件夹”。
这会将文件夹添加到对话树的末尾,刚好位于其他节点之前。 除非选择了树中的现有节点,在这种情况下,文件夹会添加到所选节点之后。
如果您想在树状结构中的其他位置添加文件夹,请从要添加的位置之前的节点开始,点击 Node 选项 图标
,然后选择 添加文件夹。
可以在现有对话分支内的子节点之后添加文件夹。 为此,请点击子节点上的 Node
,然后选择添加文件夹。
该文件夹会在编辑视图中打开。
-
可选:对文件夹命名。
-
可选:为文件夹定义条件。
如果未指定条件,将使用
true
,这意味着始终会处理该文件夹中的节点。 -
向该文件夹添加对话节点。
-
要向该文件夹添加现有对话节点,您一次只能将一个节点移至该文件夹。
在要移动的节点上,点击 Node
,选择移动,然后点击文件夹。 选择目标文件夹作为移至目标。
移动节点时,会将这些节点添加到文件夹内树的起始位置。 因此,举例来讲,如果要保留一组连续的根对话节点的顺序,请首先从最后一个节点开始移动。
-
若要在文件夹中添加对话框节点,请点击文件夹上的 Node 选项 图标
,然后选择 将节点添加到文件夹。
这会将对话节点添加到文件夹内对话树的末尾。
-
删除文件夹
可以仅删除文件夹,也可以删除文件夹及其中的所有对话节点。
要删除文件夹,请完成以下步骤:
-
在对话选项卡的树形视图中,找到要删除的文件夹。
-
单击文件夹上的 Node 选项 图标
,然后选择 删除。
-
执行下列其中一个操作:
- 要仅删除文件夹而保留文件夹中的对话节点,请取消选中删除文件夹内的节点复选框,然后单击是,删除。
- 要删除文件夹及其中的所有对话节点,请单击是,删除。
如果仅删除了文件夹,那么该文件夹中的节点将显示在对话树中该文件夹原先所在的位置。
对话节点限制
每个技能可以创建的对话节点数取决于套餐类型。
套餐 | 每个技能的对话节点数 |
---|---|
企业 | 100,000 |
高级 (旧版) | 100,000 |
Plus | 100,000 |
试用 | 25,000 |
Lite | 25,000 |
树中预先填充的 welcome
和 anything_else
对话框节点确实计入总数。
树深度限制:对话框支持2000个对话节点后代;对话框在20个或更少后代时效果最佳。
按节点标识查找对话节点
可以按节点标识来搜索对话节点。 请在搜索字段中输入完整节点标识。 出于以下任何原因,您可能希望查找与已知节点标识关联的对话节点:
- 您在查看日志,并且日志通过对话节点标识引用了对话的某个部分。
- 您希望将 API 消息输出的
nodes_visited
属性中列出的节点标识,映射到可以在对话树中查看的节点。 - 对话运行时错误消息通知您有关语法错误的信息,并使用节点标识来标识需要修正的节点。
另一种根据节点标识来发现节点的方法是执行以下步骤:
-
在“对话”页面中,选择对话树中的任一节点。
-
如果当前节点的编辑视图已打开,请将其关闭。
-
在您的网络浏览器地址栏中,显示URL 的语法应与以下示例类似:
https://{location}.assistant.watson.cloud.ibm.com/{location}/{instance-id}/skills/{skill-id}/build/dialog#node={node-id}
-
URL,将当前的
{node-id}
值替换为您要查找的节点的ID,然后提交新的URL。 -
如果需要,请再次突出显示已编辑的 URL,然后重新进行提交。
页面会刷新,并将焦点切换到具有指定节点标识的对话节点。 如果节点标识用于槽、“已找到”或“找不到”槽条件、槽处理程序或条件响应,那么定义该槽或条件响应的节点将获得焦点并显示相应的模态。
如果仍然找不到节点,可以导出对话技能,然后使用 JSON 编辑器来搜索技能 JSON 文件。
我的对话中有多少个节点?
要查看对话技能中的对话节点数,请执行下列其中一个操作:
-
如果对话技能尚未与助手关联,请向助手添加该对话技能,然后在助手的主页中查看技能磁贴。 训练数据部分会列出对话节点数。
-
向
/dialog_nodes
API端点发送GET请求,并包含include_count=true
参数。 例如:curl -u "apikey:{apikey}" "{url}/v1/workspaces/{workspace_id}/dialog_nodes?version=2018-09-20&include_count=true"
其中,{url} 是实例的相应 URL。 有关更多信息,请参阅 服务端点。
在响应中,
total
对象中的pagination
属性包含对话节点数。
如果总数看起来比您预期的要大,这可能是因为您从应用程序中创建的对话框被转换为JSON对象。 在基础JSON对象中,一些看似属于单个节点的字段被构建为单独的对话框节点。
- 每个节点和文件夹都表示为其自己的节点。
- 与单个对话节点关联的每个条件响应都表示为单个节点。
- 对于带槽的节点,每个槽、槽的“已找到”响应、槽的“找不到”响应、槽处理程序以及(如果设置)“提示提供所有信息”响应都是单个节点。 实际上,一个带三个槽的节点可能相当于 11 个对话节点。