创建对话
对话定义了助手在响应客户时所说的内容。
将自动创建以下节点:
-
欢迎:第一个节点。 此节点包含用户首次使用助手时向用户显示的问候语。 可以编辑问候语。
此节点不会在用户启动的对话流中触发。 例如,在与通道(例如,Facebook 或 Slack)的集成中使用的对话将跳过具有
welcome
特殊条件的节点。 -
其他:最后一个节点。 此节点包含用于在无法识别用户输入时对用户进行回复的短语。 可以替换所提供的响应,或者添加其他具有类似含义的响应,以向交谈添加各种变体。 还可以选择希望助手是按定义的顺序依次返回每个响应,还是按随机顺序返回响应。
有关这些内置节点的更多信息,请参阅启动和结束对话。
-
要向对话树添加更多节点,请单击添加节点。
新节点会添加到欢迎节点和其他节点之间。
-
向节点添加名称。
使用简短、客户易懂的描述作为节点名,以说明节点执行的操作。 例如,
Open an account
、Get policy information
或Get a weather forecast
。名称长度最多为 512 个字符。
此节点名会显示给客户或服务台人员,用于传达此对话分支的用途,因此请花一些时间添加一个简洁明了的名称。
-
在如果助手识别到字段中输入条件,在满足该条件时会触发助手处理该节点。
首先,通常需要将意向添加为条件。 例如,如果在此添加
#open_account
,表示您希望在用户输入指示用户希望开设帐户时,向用户返回您将在此节点中指定的响应。开始定义条件时,会显示一个框,框中显示选项。 可以输入以下某个字符,然后从显示的选项列表中选择一个值。
条件构建器语法 字符 列出以下工件类型的定义值 #
意向 @
实体 @{entity-name}:
{entity-name} 值 $
在对话其他位置定义或引用的上下文变量 可以通过定义使用新意向、实体、实体值或上下文变量的新条件来创建意向、实体、实体值或上下文变量。 如果通过此方式创建工件,请确保返回并完成要完全创建工件所需的其他任何步骤,例如定义意向的样本话语。
要定义基于多个条件触发的节点,请输入一个条件,然后单击其旁边的加号 (+) 图标。 如果要将
OR
运算符(而不是AND
)应用于多个条件,请单击字段之间显示的and
以更改运算符类型。 AND 运算会在 OR 运算之前执行,但可以使用括号来更改这一顺序。 例如:$isMember:true AND ($memberlevel:silver OR $memberlevel:gold)
定义的条件的长度必须小于 2,048 个字符。
有关如何测试条件中的值的更多信息,请参阅条件。
-
可选:如果要在此节点中从用户那里收集多条信息,请单击定制,然后启用槽。 有关更多详细信息,请参阅使用槽收集信息。
-
输入响应。
- 添加您希望助手作为响应向用户显示的文本或多媒体元素。
- 如果要基于特定条件定义其他响应,请单击定制,然后启用多个响应。
- 有关条件响应、富文本响应或如何使响应多样化的信息,请参阅响应。
-
指定处理当前节点后要执行的操作。 可以从以下选项中进行选择:
- 等待用户输入:助手暂停,直到用户提供新的输入。
- 跳过用户输入:助手直接跳转至第一个子节点。 此选项仅在当前节点至少有一个子节点时才可用。
- 跳转至:助手通过处理您指定的节点来继续对话。 可以选择助手是应该对目标节点的条件求值,还是直接跳至目标节点的响应。 有关更多详细信息,请参阅配置“跳转至”操作。
-
可选:当在运行时向用户显示了一组可供选择的节点并要求用户选取最适合其目标的节点时,如果您希望用户考虑此节点,请将此节点处理的用户目标的简短描述添加到外部节点名字段。 例如,开设帐户。
加号 外部节点名 字段仅对付费套餐的用户显示。 有关更多详细信息,请参阅消歧。
-
要添加更多节点,请选择树中的节点,然后单击更多
图标。
- 要创建不符合现有节点的条件时,对其进行检查的下一个对等节点,请选择在下方添加节点。
- 要创建检查现有节点的条件之前,先对其进行检查的对等节点,请选择在上方添加节点。
- 要为所选节点创建子节点,请选择添加子节点。 子节点会在其父节点后进行处理。
- 要复制当前节点,请选择复制。
有关对话节点处理顺序的更多信息,请参阅对话概述。
-
在构建对话时对其进行测试。
有关更多信息,请参阅测试对话。
条件
节点条件确定交谈中是否使用该节点。 响应条件确定要返回给用户的响应。
有关在特定条件下执行更高级任务的提示,请参阅 条件使用提示。
条件工件
可以使用下列一个或多个工件的任何组合来定义条件:
-
上下文变量:如果指定的上下文变量表达式为 true,那么将使用该节点。 请使用语法
$variable_name:value
或$variable_name == 'value'
。对于节点条件,这种伪类型通常与
AND
或OR
运算符以及另一个条件值一起使用。 这是因为用户输入中的某些内容必须触发相应节点;仅仅是上下文变量值匹配并不足以触发该节点。 例如,如果用户输入对象以某种方式设置了上下文变量值,那么会触发相应节点。不要在已设置上下文变量值的同一对话节点中,基于该上下文变量的值来定义节点条件。
对于响应条件,此工件类型可以单独使用。 可以根据特定上下文变量值来更改响应。 例如,
$city:Boston
会检查$city
上下文变量是否包含值Boston
。 如果包含,那么会返回相应响应。有关上下文变量的更多信息,请参阅上下文变量。
-
实体:在用户输入中识别到实体的任何值或同义词时,将使用该节点。 请使用语法
@entity_name
。 例如,@city
会检查在用户输入中是否检测到为 @city 实体定义的任何城市名称。 如果检测到,那么会处理相应节点或响应。请考虑创建对等节点来处理未识别到实体的任何值或同义词的情况。
有关实体的更多信息,请参阅定义实体。
-
实体值:如果在用户输入中检测到实体值,那么将使用该节点。 请使用语法
@entity_name:value
,并为实体指定定义的值,而不要指定同义词。 例如:@city:Boston
会检查在用户输入中是否检测到特定城市名称Boston
。如果在对等节点中检查实体是否存在,而不为其指定特定值,请确保将此节点(用于检查特定实体值)置于仅检查该实体是否存在的对等节点之前。 否则,将永远不会对此节点求值。
如果实体是具有捕获组的模式实体,那么可以检查特定组值匹配情况。 例如,可以使用语法:
@us_phone.groups[1] == '617'
有关更多信息,请参阅存储和识别输入中的模式实体组。
-
意向:最简单的条件是单个意向。 如果助手的自然语言处理在对用户的输入求值后,确定用户输入的目的已映射到预定义的意向,那么将使用相应节点。 请使用语法
#intent_name
。 例如,#weather
会检查用户输入中是否询问了天气预报。 如果是,那么将处理具有#weather
意向条件的节点。有关意向的更多信息,请参阅定义意向。
-
特殊条件:产品随附的可用于执行通用对话函数的条件。 有关详细信息,请参阅下一部分中的特殊条件表。
特殊条件
条件语法 | 描述 |
---|---|
anything_else |
可以在对话末尾使用此条件,在用户输入与其他任何对话节点都不匹配时,将处理此条件。 此条件将触发其他节点。 如果您在助手中添加搜索功能,则可以配置一个带有此条件的根节点来触发搜索。 |
conversation_start |
与 welcome 一样的是,此条件在第一轮对话期间会求值为 true。 但与 welcome 不同的是,无论应用程序的初始请求是否包含用户输入,其都为 true。 |
false |
此条件始终求值为 false。 可以在正在开发的分支开始处使用此项,以阻止使用此分支,或者将其用作提供常见函数且仅用作跳转至操作目标的节点的条件。 |
irrelevant |
如果 watsonx Assistant 服务确定用户的输入为不相关,那么此条件将求值为 true。 |
true |
此条件始终求值为 true。 可以在节点或响应列表末尾使用此条件,以捕获与任何先前条件都不匹配的任何响应。 |
welcome |
仅当应用程序的初始请求不包含任何用户输入时,才会在第一轮对话期间(当交谈启动时),将此条件求值为 true。 在所有随后的多轮对话中,都会将其求值为 false。 此条件会触发欢迎节点。 通常,具有此条件的节点用于向用户打招呼,例如,在通过 Facebook 或 Slack 等渠道进行的交互期间,从不处理 Welcome to our Pizza ordering app. 此节点之类的消息。 |
条件语法详细信息
使用以下某个语法选项在条件中创建有效的表达式:
-
用于引用意向、实体和上下文变量的速记符号。 请参阅访问对象和对象求值。
-
Spring Expression Language SpEL )是一种表达式语言,支持在运行时查询和操作对象图。 更多信息请参阅 Spring Expression Language SpEL )。
可以使用正则表达式来检查是否有以其为条件的值。 例如,要查找匹配的字符串,可以使用 String.find
方法。 有关更多详细信息,请参阅方法。
响应
对话响应定义如何回复用户。
可以通过以下方式进行回复:
简单文本响应
如果要提供文本响应,只需输入您希望助手向用户显示的文本即可。
{caption="Simple response" caption-side="bottom"}
要在响应中包含上下文变量值,请使用语法 $variable_name
来指定上下文变量值。 有关更多信息,请参阅上下文变量。 例如,如果您确认在处理节点之前,会将 $user 上下文变量设置为当前用户的名称,那么可以在此节点的文本响应中引用该变量,类似于:
Hello $user
如果当前用户的名称为 Norman
,那么向 Norman 显示的响应为:Hello Norman
。
如果您在文本回复中包含这些特殊字符之一,请在前面添加一个反斜杠( \
)进行转义。 如果您正在使用 JSON 编辑器,那么需要使用两个反斜杠来进行转义 (\\
)。对字符进行转义可防止助手将其误解为以下工件类型之一:
特殊字符 | 工件 | 示例 |
---|---|---|
$ |
上下文变量 | The transaction fee is $2. |
@ |
实体 | Send us your feedback at feedback@example.com. |
# |
意向 | We are the #1 seller of lobster rolls in Maine. |
内置集成支持以下 Markdown 语法元素:
格式 | 语法 | 示例 |
---|---|---|
斜体 | We're talking about *practice*. |
我们正在讨论实践。 |
粗体 | There's **no** crying in baseball. |
在棒球比赛中,不许哭泣。 |
超文本链接 | Contact us at [ibm.com](https://www.ibm.com). |
请联系我们:ibm.com。 |
如果在文本响应中指定电话号码时未对链接编码,那么除了在从移动设备访问的 Web 聊天集成中,在其他任何位置该链接都不会转换为电话链接。
“试用”窗格目前不支持 Markdown 语法。 出于测试目的,您可以使用预览助手查看 Markdown是如何呈现的。
“试用”面板、助手预览和网页聊天集成支持HTML语法。 但 Slack 和 Facebook 集成不支持 HTML 语法。
了解有关简单响应的更多信息
添加多行
如果希望单个文本响应包含以回车符分隔的多行,请执行以下步骤:
-
将您希望向用户显示的每一行作为单独的语句添加到其自己的响应变体字段中。 例如:
响应变体 嗨。 今天感觉怎么样? -
对于响应变体设置,请选择多行。
向用户显示响应时,将显示这两个响应变体,每行一个,如下所示:
Hi. How are you today?
添加变体
如果用户频繁返回到 Conversation 服务,那么若是他们每次都听到相同的问候和响应,可能会感到厌烦。 为此,可以向响应添加变体,以便交谈能够以不同方式对同一条件进行响应。
在此示例中,助手在响应有关门店位置的问题时,针对不同的交互提供不同的回答:
{caption="Response variations" caption-side="bottom"}
可以选择按顺序或按随机顺序循环提供响应变体。 缺省情况下,响应按顺序循环,如同从排序的列表中进行选择一样。
要更改返回各个文本响应的顺序,请完成以下步骤:
-
将响应的每个变体添加到其自己的响应变体字段中。 例如:
响应变体 大家好, 嗨。 你好! -
对于响应变体设置,选择下列其中一个设置:
-
顺序:第一次触发对话节点时,系统会返回第一个响应变体,第二次触发节点时返回第二个响应变体,依此类推,响应变体返回的顺序与这些变体在节点中的定义顺序相同。
将导致在处理节点时按以下顺序返回响应:
第一次:
Hello.
第二次:
Hi.
第三次:
Howdy!
-
随机:第一次触发对话节点时,系统会随机从变体列表中选择一个文本字符串,下次触发节点时,随机选择另一个变体,但不会连续重复选择相同的文本字符串。
处理节点时可能返回响应的顺序示例:
第一次:
Howdy!
第二次:
Hi.
第三次:
Hello.
-
富文本响应
可以返回包含多媒体或交互式元素(例如,图像或可单击按钮)的响应,以简化应用程序的交互模型,并增强用户体验。
除了缺省响应类型文本(对于此类型,指定要作为响应返回给用户的文本)外,还支持以下响应类型:
- 连接到人工座席:对话调用您指定的服务,通常是用于管理人工座席支持凭单队列的服务,以将交谈转接到人员。 您可以选择包含一条消息,用于概述要向人工座席提供的用户问题。
- 通道传输: 对话请求将对话传输到其他通道 (例如,从 Slack 集成到 Web 聊天集成)。
- 图像:将图像嵌入到响应中。 源图像文件必须在某个位置进行托管,并具有可用于引用该图像文件的 URL。 这不能是存储在不可公开访问的目录中的文件。
- 视频: 将视频播放器嵌入响应中。 源视频必须托管在某个地方,既可以是受支持的视频流服务上的可播放视频,也可以是带有 URL 的视频文件,您可以用来引用它。 这不能是存储在不可公开访问的目录中的文件。
- 音频: 将音频剪辑嵌入到响应中。 源音频文件必须托管在某个地方,并提供URL,以便引用。 这不能是存储在不可公开访问的目录中的文件。
- iframe: 直接在交谈中嵌入来自外部 Web 站点 (例如表单或其他交互式组件) 的内容。 源内容必须可通过 HTTP 公开访问,并可作为 HTML
iframe
元素嵌入。 - 选项:添加包含一个或多个选项的列表。 用户单击其中一个选项时,会向助手发送关联的用户输入值。 根据选项的数量和对话的部署位置,选项的呈现方式会有所不同。
- 暂停:强制应用程序等待指定的毫秒数,然后再继续处理。 可以选择显示关于助手正在输入响应的指示符。 如果需要执行可能需要一些时间的操作,请使用此响应类型。
- 搜索技能 :加 在外部数据源中搜索相关信息,并返回给用户。 搜索的数据源Discovery数据集,当您在使用此对话框的助手中添加搜索时,您将配置该数据集。
- 用户定义: 如果使用 JSON 编辑器来定义响应,那么可以创建自己的用户定义响应类型。 有关更多信息,请参阅使用 JSON 编辑器定义响应。
不同的集成具有不同的功能来显示丰富的响应。 如果要定义针对不同通道定制的不同响应,那么可以通过使用 JSON 编辑器编辑响应来执行此操作。 有关更多信息,请参阅 以特定集成为目标。
要添加富文本响应,请完成以下步骤:
-
单击助手响应字段中的下拉菜单以选择响应类型,然后提供任何必需的信息。
有关更多信息,请参阅以下各部分:
-
要将其他响应类型添加到当前响应,请单击添加响应类型。
您可能希望向单个响应添加多个响应类型,以向用户查询提供更丰富的回答。 例如,如果用户询问门店位置,您可以显示地图并为每个门店位置显示对应的按钮,用户可以单击相应按钮来获取地址详细信息。 要构建该类型的响应,可以使用图像、选项和文本响应类型的组合。 另一个示例是在暂停响应类型之前使用文本响应类型,以便可以在暂停对话之前向用户发送警告。
向单个响应添加的响应类型不能超过 5 种。 这意味着,如果为一个对话节点定义了三个条件响应,那么每个条件响应可以添加的响应类型不能超过 5 种。
不能向单个对话节点添加多个连接到人工座席或多个搜索技能响应类型。
不要向单个对话节点添加多个“选项”响应类型,因为这将同时显示两个列表,但客户只能从其中一个列表中选择一个选项。
-
如果添加了多个响应类型,那么可以单击上移或下移箭头,以按您希望助手处理响应类型的顺序来排列响应类型。
添加连接到人工座席响应类型
如果客户机应用程序能够将交谈转接到人员(例如,客户支持座席),那么可以添加连接到人工座席响应类型来启动转接。 一些内置集成(例如,Web 聊天和 Intercom)支持转接到服务台座席。 如果要使用定制应用程序,那么必须对应用程序进行编程,以识别何时触发此响应类型。
如果要利用自足率度量值来跟踪助手的成功率,请将此响应类型添加到对话,或者使用替代方法来识别客户何时定向到外部支持。 有关更多信息,请参阅度量自足率。
要添加连接到人工座席响应类型,请完成以下步骤:
-
在要添加该响应类型的对话节点中,单击助手响应字段中的下拉菜单,然后选择连接到人工座席。
-
可选。 在要传递给人工座席的消息字段中添加要与交谈转接到的人工座席共享的消息。
-
添加要向客户显示以说明正在对其进行转接的消息。
可以添加要在座席可用时显示的消息以及在座席不可用时显示的消息。 每条信息最多可包含320个字符。
仅限 Web 聊天内置服务台集成:在 Web 聊天 V3 和更高版本中,添加到座席联机时的响应和无座席联机时的响应字段的文本用于转接。 如果未添加您自己的消息,那么将使用提示文本(作为示例消息显示的灰显文本)。
如果在多个节点中使用此响应类型,并且希望每次使用相同的定制文本,但又不想分别编辑每个节点,那么可以更改 Web 聊天使用的缺省文本。 要更改默认消息,请编辑 语言源文件。 查找
default_agent_availableMessage
和default_agent_unavailableMessage
值。 如需了解如何更改网络聊天文本,请参阅 “语言”。 -
可选:如果部署助手的通道已与服务台集成,那么可以添加要随转接请求传递的初始路由信息。
-
从服务台路由字段中选取集成类型。
-
添加对您使用的服务台有意义的路由信息。
服务台路由选项 服务台类型 路由信息 描述 Salesforce 按钮标识 指定 Salesforce 部署中的有效按钮标识。 Zendesk 部门 指定 Zendesk 帐户中的有效部门名称。
-
当您在对话框的“试用”面板中测试对话框节点时,对话框传输不会发生。 您必须从预览按钮访问使用此响应类型的节点,以便助手查看您的用户将如何体验它。
添加 通道传输 响应类型
如果助手使用多个集成来支持不同渠道与用户进行交互,那么在某些情况下,客户可能在一个渠道中开始对话,但需要转移到其他渠道。
最常见的情况是将对话转移到 Web 聊天集成,以便利用 Web 聊天功能,例如服务台集成。
当前,Web 聊天是通道传输唯一受支持的目标。
只有以下集成才能启动通道传输:
- Slack
- Facebook 信使
其他集成将忽略 通道传输 响应类型。
要添加通道传输响应类型,请完成以下步骤:
-
在对话节点中,单击 “助手响应”字段中的下拉菜单,然后选择 “通道传输”,即可添加响应类型。
-
可选。 在 链接到 Web 聊天之前的消息 字段中,编辑要在发起传输的链接之前向用户显示的介绍性消息 (在原始通道中)。 缺省情况下,此消息为
OK, click this link for additional help. Chat will continue on a new web page.
-
在网络聊天的 URL 字段中,键入嵌入网络聊天窗口小部件的网站 URL。
在处理通道传输响应的集成中,会显示介绍信息,然后是指向您指定的 URL 的链接。 然后,用户必须单击链接以启动传输。
当对话从一个通道传输到另一个通道时,将保留会话历史记录和上下文,因此目标通道可以从会话中断的位置继续对话。 请注意,包含 通道传输 响应的消息输出首先由启动传输的通道处理,然后由目标通道处理。 如果输出包含多个响应 (可能使用不同的响应类型),那么这些响应将由两个通道 (传输之前和之后) 处理。 如果要将个别响应作为特定通道的目标,那么可以通过使用 JSON 编辑器编辑响应来执行此操作。 有关更多信息,请参阅 以特定集成为目标。
添加图像响应类型
有时一张图片胜过千言万语。 在响应中包含图像可实现多种用途,例如说明概念,展示待售商品,或者可能显示门店位置的地图。
要添加图像响应类型,请完成以下步骤:
-
选择图像。
-
将托管的图像文件的完整 URL 添加到图像源字段中。
图像必须为 .jpg、.gif 或 .png 格式。 图片文件必须存储在可通过
https:
URL 公开访问的位置。例如:
https://www.example.com/assets/common/logo.png
。如果要在响应中嵌入式图像的上方显示图像标题和描述,请将其添加到提供的字段中。
要访问存储在 IBM Cloud®Object Storage 中的图像,请启用对各个图像存储对象的公共访问权,然后通过类似下面的语法指定图像源来对其进行引用:
https://s3.eu.cloud-object-storage.appdomain.cloud/your-bucket-name/image-name.png
。某些集成通道会忽略标题或描述。
添加视频回复类型
在响应中包含视频,以共享操作演示,促销剪辑等。 在网络聊天中,视频响应呈现为嵌入式视频播放器。
要添加视频回复类型,请完成以下步骤:
-
选择 视频。
-
将托管视频的完整 URL 添加到视频源字段中:
-
要直接链接到视频文件,请指定任何标准格式(如 MPEG 或 AVI)文件的 URL。 在网络聊天中,链接的视频将呈现为嵌入式视频播放器。
不支持 HLS (
.m3u8
) 和 DASH (MPD) 流式视频。 -
要链接到支持的视频托管服务上托管的视频,请指定视频的 URL。 在 Web 聊天中,链接的视频将使用可嵌入播放器来呈现托管服务。
指定用于在浏览器中观看视频的 URL (例如
https://www.youtube.com/watch?v=52bpMKVigGU
)。您无需将 URL 转换为可嵌入的形式,网络聊天会自动完成转换。您可以嵌入在以下服务上托管的视频:
- YouTube
- Vimeo
- Twitch
- 可流式传输
- Wistia
- Vidyard
如果您想在响应中嵌入的视频上方显示视频标题和描述,请在提供的字段中添加它们。
某些集成通道会忽略标题或描述。
如果要将视频缩放到特定显示大小,请在 基本高度 字段中指定数字。
-
-
网络聊天、Facebook、WhatsApp, Slack 和 SMS 集成都支持视频回复类型。
添加音频响应类型
在响应中包含音频片段以共享辐条或其他可听内容。 在网络聊天中,视频响应呈现为嵌入式视频播放器。 在电话集成中,通过电话播放音频响应。
要添加音频响应类型,请完成以下步骤:
-
选择 音频。
-
将托管音频剪辑的完整 URL 添加到音频源字段:
-
要直接链接到音频文件,请指定 MP3 或 WAV 等任何标准格式文件的 URL。 在网络聊天中,链接的音频剪辑将呈现为嵌入式音频播放器。
-
要链接到支持的音频托管服务上的音频片段,请指定音频片段的 URL。 在 Web 聊天中,链接的音频剪辑将使用可嵌入播放器来呈现托管服务。
指定用于在浏览器中访问音频文件的 URL (例如
https://soundcloud.com/ibmresearch/fallen-star-amped
)。您无需将 URL 转换为可嵌入的形式,网络聊天会自动完成转换。您可以嵌入在以下服务上托管的音频:
如果您想在回复中嵌入的音频播放器上方显示标题和描述,请在提供的字段中添加。
某些集成通道会忽略标题或描述。
如果希望音频剪辑无限期循环,请在 循环 字段中选择 开启。 例如,您可能希望在用户等待电话时使用此选项来播放音乐。 (缺省情况下,音频仅播放一次,然后停止。)
循环 选项当前仅受电话集成支持。 如果您正在使用 Web 聊天集成或任何其他渠道,那么此选项无效。
-
-
网络聊天、Facebook WhatsApp, Slack、短信和电话集成都支持音频响应类型。
添加 iframe 响应
添加 iframe 响应以将来自另一个 Web 站点的内容作为 HTML iframe
元素直接嵌入交谈窗口中。 如果要使客户能够在不离开交谈的情况下与外部服务执行某些交互,那么 iframe 响应很有用。 例如,您可以使用 iframe 响应在 Web 聊天中显示以下示例:
- Google 地图 上的交互式地图
- 使用 SurveyMonkey 的调查
- 用于通过 OpenTable 进行预留的表单
- 使用 Calendly 的调度表单
在网络聊天中,可以通过两种方式包含 iframe:
- 类似于用于描述嵌入式内容的预览卡。 客户可以单击此卡以显示框架并与内容进行交互。
以下通道集成支持 iframe 响应类型:
- Web 聊天
要添加 iframe 响应类型,请完成以下步骤:
-
在 助手说 字段中,单击 iframe 图标 (
)。
-
在 iframe 源字段中添加外部内容的完整 URL。
URL 必须指定可嵌入 HTML
iframe
元素的内容。 不同的站点对于嵌入内容有不同的限制,对于生成可嵌入 URL 也有不同的流程。 可嵌入 URL 是指可指定为iframe
元素的src
属性值的 URL。例如,要嵌入使用 Google 地图的交互式地图,可以使用 Google 地图嵌入 API。 有关更多信息,请参阅 The Maps Embed API 概述。 其他站点具有用于创建可嵌入内容的不同进程。
有关使用允许您在助手中嵌入 Web 站点内容的
Content-Security-Policy: frame-src
的技术详细信息,请参阅 CSP: frame-src。 -
(可选) 在 标题 字段中添加描述性标题。
在 Web 聊天中,您添加的标题将显示在预览卡中。 客户单击预览卡以呈现外部内容。
如果没有指定标题,网络聊天会尝试从指定的 URL 获取元数据,并根据源中的指定显示内容标题。
不支持对变量的引用。
技术详细信息: iframe
sandboxing
Web 聊天在 iframe 中装入的内容为 sandboxed,这意味着它会限制用于减少安全漏洞的许可权。 Web 聊天使用 iframe
元素的 sandbox
属性仅授予以下许可权:
许可权 | 描述 |
---|---|
allow-downloads |
允许从网络下载文件 (如果下载是由用户启动的)。 |
allow-forms |
允许提交表单。 |
allow-scripts |
允许运行脚本,但 不 打开弹出窗口。 |
allow-same-origin |
允许内容访问其自己的数据存储器 (例如 cookie),并允许对 JavaScript API 进行有限访问。 |
在沙箱式 iframe 中运行的脚本无法更改 iframe 外部的任何内容,如果 外部页面和 iframe 具有不同的源。 如果使用 iframe 响应来嵌入与托管 Web 聊天窗口小部件的页面具有相同来源的内容,请务必小心。 在这种情况下,嵌入式内容可以击败沙箱并访问框架外的内容。 有关此潜在漏洞的更多信息,请参阅 sandbox
属性 文档。
技术详细信息: iframe
预览卡
Web 聊天中的 iframe
响应类型显示 预览卡,其中包含用户在 Web 聊天中访问的 Web 页面的图像,标题和描述。
要在 预览卡中显示图像,标题和描述,Web 页面需要 <head>
标记中的以下 <meta>
标记:
<meta property="og:image" content="https://.../image.jpg" />
<meta property="og:image:url" content="https://.../image.jpg" />
<meta property="og:title" content="The webpage title" />
<meta property="og:description" content="The webpage description" />
指定的这些元数据属性来自 Open Graph Protocol。
元数据是可选的。 Web 聊天会显示预览卡,其中包含 Web 聊天成功访存的网页 URL 和元数据。
添加选项响应类型
您想要为客户提供一组可供选择的选项时,请添加“选项”响应类型。 例如,可以构造类似于以下内容的响应:
列表标题 | 列表描述 | 选项标签 | 单击时提交的用户输入 |
---|---|---|---|
保险类型 | 您希望投保哪些项目? | ||
船舶 | 我想买船舶保险。 | ||
汽车 | 我想买汽车保险。 | ||
主页 | 我想买住宅保险。 |
如果只有几项要显示(例如,4 项或更少),大多数集成都会将选项显示为按钮。
{caption="Option buttons" caption-side="bottom"}
否则,选项会显示为列表。
要添加选项响应类型,请完成以下步骤:
-
在要添加该响应类型的对话节点中,单击助手响应字段中的下拉菜单,然后选择选项。
-
单击添加选项。
-
在列表标签字段中,输入要在列表中显示的选项。
标签长度必须少于 2,048 个字符。
-
在对应的值字段中,输入用户输入,以便在选择此选项时,将该输入传递给助手。
值的长度必须少于 2,048 个字符。
对于选项显示为列表的 Slack 集成,每个值的长度不能超过 75 个字符。
指定您确信在提交时将触发正确意向的值。 例如,值可能是来自意向训练数据中的用户示例。
-
重复先前的步骤以向列表添加更多选项。
最多可以添加 20 个选项。
-
在标题字段中,添加列表简介。 标题可以要求用户从选项列表中选取选项。
某些集成通道不会显示标题。
-
可选择在描述字段中添加其他信息。 如果指定了描述,那么描述会显示在标题之后,但位于选项列表之前。
某些集成通道不会显示描述。
-
可选:如果要指示有关如何显示选项的首选项(显示为按钮或显示为列表),那么可以为响应添加
preference
属性。要执行此操作,请打开响应的 JSON 编辑器,然后在
preference
名称和值对前面添加response_type
名称和值对。 可以将首选项设置为dropdown
或button
。{ "output": { "generic": [ { "title": "Insurance types", "options": [ { "label": "Boat", "value": { "input": { "text": "I want to buy boat insurance." } } }, { "label": "Car", "value": { "input": { "text": "I want to buy car insurance." } } }, { "label": "House", "value": { "input": { "text": "I want to buy house insurance." } } } ], "preference": "dropdown", //add this name and value pair "description": "Which of these items do you want to insure?", "response_type": "option" } ] } }
如果定义的选项列表仅包含 3 项,通常会将选项显示为按钮。 如果添加设置为
dropdown
的首选项属性,那么在“试用”窗格中可以看到,选项以下拉列表形式显示。选项列表 有些集成类型(如 Web 聊天)会反映您的偏好。 而其他集成类型(如 Slack)在呈现选项时不会反映您的偏好。
不要向单个对话节点添加多个“选项”响应类型,因为这将同时显示两个列表,但客户只能从其中一个列表中选择一个选项。
如果需要能够根据其他一些因素使用不同的值来填充选项列表,那么可以设计动态选项列表。 更多信息,请参阅 《如何动态添加对话节点响应选项 》博文。
添加暂停响应类型
添加“暂停”响应类型,让助手有时间做出响应。 例如,可以向调用 Webhook 的节点添加“暂停”响应类型。 暂停指示助手正在处理答案,这样助手就有时间发起 Webhook 调用并获取响应。 然后,您可以跳转至子节点来显示结果。
要添加暂停响应类型,请完成以下步骤:
-
在要添加该响应类型的对话节点中,单击助手响应字段中的下拉菜单,然后选择暂停。
-
将暂停持续的时间长度(单位为毫秒)添加到持续时间字段。
该值不能超过 10,000 毫秒。用户通常愿意等待大约 8 秒 (8,000 毫秒) 让某人输入响应。 要阻止在暂停期间显示输入指示符,请选择关闭。
在暂停后添加其他响应类型(例如,文本响应类型)即明确表示暂停结束。
此响应类型不会在“试用”窗格中呈现。 您必须从测试部署访问使用此响应类型的节点,以了解用户将如何体验到此响应。
添加搜索技能响应类型
Plus
如果您有面向客户的现有资料,例如常见问答、产品目录或可回答客户常问问题的销售资料,请将这些信息投入使用。 您可以实时触发对现有资料的搜索,以便为客户获取最新的答案。
要使用搜索技能响应类型,必须将搜索添加到使用此对话框的同一助手。 有关更多信息,请参阅 IBM Watson® Discovery 搜索集成设置。
要添加搜索技能响应类型,请完成以下步骤:
-
在要添加该响应类型的对话节点中,单击助手响应字段中的下拉菜单,然后选择搜索技能。
指示要搜索外部数据源以获取相关响应。
-
要编辑待传递到 Discovery 服务的搜索查询,请单击定制,然后填写以下字段:
-
查询:可选。 可以使用自然语言来指定特定查询,以传递给 Discovery。 如果未添加查询,那么客户的确切输入文本将作为查询传递。
例如,可以指定
What cities do you fly to?
。 此查询值将作为搜索查询传递到 Discovery。Discovery 使用自然语言理解来了解查询,并在为搜索配置的数据集合中查找有关主题的答案或相关信息。通过在查询中引用在用户输入中检测到的实体,可以包含用户提供的特定信息。 例如,
Tell me about @product
。 或者,可以引用上下文变量,例如Do you have flights to $destination?
。 只需确保将对话设计为仅当在查询中引用的任何实体或上下文变量已设置为有效值时,才触发搜索。此字段等效于 Discovery
natural_language_query
参数。 有关更多信息,请参阅 查询参数。-
过滤器:可选。 指定文本字符串,用于定义在任何返回的搜索结果中必须存在的信息。
-
例如,要指示希望仅返回检测到正面观点的文档,请指定
enriched_text.sentiment.document.label:positive
。 -
要过滤结果以仅包含摄入过程识别为包含实体
Boston, MA
的文档,请指定enriched_text.entities.text:"Boston, MA"
。 -
要过滤结果以仅包含摄入过程识别为包含客户所提供产品名称的文档,可以指定
enriched_text.entities.text:@product
。 -
要过滤结果以仅包含摄入过程识别为包含
$destination
上下文变量中所保存的城市名称的文档,可以指定enriched_text.entities.text:$destination
。
此字段等效于 Discovery
filter
参数。 有关更多信息,请参阅 查询参数。 -
如果同时添加查询和过滤器值,那么将首先应用过滤器参数来过滤数据集合文档,并对结果进行高速缓存。 然后,查询参数会对高速缓存的结果排名。
-
-
-
可选:更改用于搜索的查询类型。
搜索会自动Discovery 发送自然语言查询。 如果要改为使用 Discovery 查询语言,那么可以指定该语言。 为此,请打开节点响应的 JSON 编辑器。
编辑 JSON 代码片段以将
natural_language
替换为discovery_query_language
。 例如:{ "output": { "generic": [ { "query": "", "filter": "enriched_text.sentiment.document.label:positive", "query_type": "discovery_query_language", "response_type": "search_skill" } ] } }
从助手 预览测试此响应类型。 您无法从“试用”面板进行测试。
条件响应
单个对话节点可以提供不同的响应,每个响应由不同的条件触发。 使用此方法可在单个节点中应对多个场景。
节点仍然具有一个主要条件,也就是可以使用该节点并处理其所包含的条件和响应的条件。
在此示例中,助手使用自己先前收集的有关用户位置的信息来定制其响应,并提供有关离该用户最近的门店的信息。 有关如何存储从用户那里所收集的信息的更多信息,请参阅上下文变量。
{caption="Conditional responses" caption-side="bottom"}
现在,此单个节点提供的功能相当于四个单独的节点。
要向节点添加条件响应,请完成以下步骤:
-
单击定制,然后将多个条件响应开关设置为开启。
节点响应部分会更改为显示一对条件和响应字段。 您可以在其中添加条件和响应。
-
要进一步定制响应,请单击响应旁边的定制响应
图标。
要完成以下任务,必须打开响应进行编辑:
-
更新上下文。 要在触发响应时更改上下文变量的值,请在上下文编辑器中指定上下文值。 为每个单独的条件响应更新上下文;没有通用于所有条件响应的上下文编辑器或 JSON 编辑器。
-
添加富文本响应。 要添加多个文本响应或要将除文本响应以外的响应类型添加到单个条件响应,必须打开编辑响应视图。
-
配置跳转。 要指示助手在处理此条件响应后跳转至其他节点,请在响应编辑视图的最后部分中选择跳转至。 确定希望助手接下来处理的节点。 有关更多信息,请参阅配置“跳转至”操作。
在处理所有条件响应之前,不会处理为节点配置的跳转至操作。 因此,如果将条件响应配置为跳转至其他节点,并触发条件响应,那么永远不会处理为该节点配置的跳转,因此不会发生该跳转。
-
-
单击添加响应以添加其他条件响应。
节点中的条件按顺序进行求值,如同节点一样。 请确保条件响应按正确的顺序列出。 如果需要更改顺序,请选择一个条件和响应对,然后使用显示的箭头在列表中上移或下移该对。
定义后续操作
在进行指定的响应后,可以指示助手执行下列其中一个操作:
-
等待用户输入:助手等待用户提供响应引出的新输入。 例如,响应可能会询问用户“是”或“否”问题。 在用户提供更多输入之前,此对话不会继续。
-
跳过用户输入:希望不等待用户输入而改为直接转至当前节点的第一个子节点时,请使用此选项。
当前节点必须具有至少一个子节点,此选项才可用。
-
跳转至其他对话节点:希望交谈直接转至完全不同的对话节点时,请使用此选项。 例如,可以使用跳转至操作将流从树中的多个位置路由到一个常见对话节点。
必须存在要跳转至的目标节点,然后才能配置“跳转至”操作来使用该节点。
配置“跳转至”操作
如果选择跳转至其他节点,请通过选择下列其中一个选项来指定何时处理目标节点:
-
条件:如果语句的目标是所选对话节点的条件部分,那么助手会首先检查目标节点的条件是否求值为 true。
-
如果条件求值为 true,那么系统会立即处理目标节点。
-
如果条件未求值为 true,那么系统将移至目标节点的下一个同代节点以对其条件求值,并重复此过程,直至找到具有求值为 true 的条件的对话节点为止。
-
如果系统处理了所有同代,仍然没有任何条件求值为 true,那么将使用基本回退策略,并且对话会对对话树基本级别的节点求值。
将条件设置为目标对于链接对话节点的条件很有用。 例如,您可能希望首先检查输入是否包含意向,例如
#turn_on
;如果输入包含意向,那么您可能希望检查输入是否包含实体,例如@lights
、@radio
或@wipers
。 链接条件有助于构造更大的对话树。在配置从条件响应发生的“跳转至”以转至对话树中当前节点上方的节点时,请避免选择此选项。 否则,可能会创建无限循环。 如果助手跳转至较早的节点并检查其条件,那么可能会返回 false,因为正在对上次通过对话触发当前节点的相同用户输入求值。 助手将转至下一个同代或返回根,以检查这些节点上的条件,结果可能再次触发此节点,这意味着过程将重复自身。
-
-
响应:如果语句的目标是所选对话节点的响应部分,那么会立即运行。 即,系统不会对所选对话节点的条件求值,而是立即处理所选对话节点的响应。
将响应设置为目标对于将多个对话节点链接在一起很有用。 响应的处理就像此对话节点的条件为 true 时一样。 如果所选对话节点有其他跳转至操作,那么该操作也会立即运行。
-
等待用户输入:等待用户的新输入,然后开始从您跳转至的节点对输入进行处理。 例如,如果在源节点提出问题,而您希望跳转至其他节点来处理用户对该问题的回答,那么此选项很有用。
后续步骤
- 一定要一边构建对话,一边对其进行测试。 有关更多信息,请参阅测试对话。
- 有关如何处理常见用例的更多信息,请参阅对话构建技巧。
- 有关可用于改进对话的表达式语言的更多信息,例如重新设置日期或文本格式的方法,请参阅表达式语言方法。
您还可以使用 API 来添加节点,否则请编辑对话。 有关更多信息,请参阅使用 API 修改对话。