从对话调用操作
在 watsonx Assistant中,可以将操作用于主对话对话。 对话功能优先于操作。 您可以使用操作来补充基于对话的对话,但对话会驱动与用户的对话以匹配其请求。
对话节点调用操作以执行任务,然后返回到对话。 在单个对话框节点中,您可以调用 webhook 或动作,但不能同时调用两者。 请选择最适合您需求的方法:
-
如果您想执行一个独立的任务,可以调用一个操作,然后返回对话框,准备处理任何新的用户请求。 在操作处理过程中从用户处收集的数据必须存储为会话变量,以便传递给对话框。
-
如果要向 Web Service 发送请求以完成任务,然后返回可由此对话稍后使用的响应,请调用 Webhook。 有关更多信息,请参阅 使用 Webhook 扩展助手。
何时从对话框中调用操作
在以下场景中,您可能希望从对话调用操作:
-
您希望从多个对话线程执行一个操作。
例如,您想要询问客户对您的服务的满意度。 您可以定义单个操作来检查客户满意度,并从多个分支结束对话节点调用该操作。
在此场景中,您不需要定义意向,例如
#check_satisfaction
。 将自动调用该操作,以替换跳转至另一个对话节点的响应。 -
你想看看行动是如何进行的。
在此场景中,可以选取意向以供操作处理。 如果只计划从对话框中调用操作,则可以花时间为触发对话框节点的意图定义用户示例。 定义操作时,可以仅添加一个客户示例,从而减少构建操作所需的时间。
添加操作调用
在开始之前,打开“操作”页面并检查以下内容:
-
要调用的操作的名称。
-
如果要调用的操作使用会话变量,并且您希望通过设置会话变量值以将值传递到操作,请记下会话变量的标识。
在“变量”部分中,单击以打开会话变量。 您可以在标识字段中查看用于变量名称的语法。 将变量标识复制到剪贴板。
您还需要了解要分配给会话变量的值的类型。 如果您不知道,请检查操作如何使用会话变量。
从对话框节点调用操作:
-
在对话节点中,单击定制。
-
将 调用 Webhook/操作 设置为 开启。
-
选择“调用操作”。
添加操作调用时,将自动为对话节点启用多个条件响应。
-
单击应用。
-
在对话节点中,选择要调用的操作。
-
可选:如果要调用的操作使用会话变量,那么可以在启动操作时设置会话变量的值。
在“参数”部分,添加键和值对,以便在调用操作时传递。
将变量标识(先前已复制到剪贴板)添加到键字段,并在值字段中,指定要将变量设置为的值。
例如,假设操作具有名为
given name
的会话变量。 您可以将当前用户的名字(您已要求提供并保存到$name
上下文变量)传递到操作,如下所示:Action call key and value pair example 键 值 given_name
"$name"
-
如果从多个对话节点调用操作,请更改返回变量的名称,以使其在所有对话节点中唯一。 例如,您可能已调用操作,其返回变量名为
$action_result_1
,因此可以将新的返回变量命名为$action_result_2
。返回变量是自动创建的上下文变量。 它会存储在处理调用操作时创建或更改的会话变量值。
-
在“助理响应”部分,第一个条件响应的条件将自动由操作调用的返回变量填充。
除非更改名称,否则返回变量名为
$action_result_1
。如果调用的操作创建了任何会话变量或更改了其值,那么会将这些变量作为 JSON 对象存储在结果变量中并返回。
例如,如果操作更改了
given name
和membership status
会话变量的值,那么将返回以下 JSON 对象:{"given_name":"Sally","membership_status":"true"}
-
如果未发送或未更改任何会话变量,那么可以删除第一个条件响应。 否则,请考虑添加要在从调用的操作发送返回变量时显示的响应。
您可能希望指定定制响应,以在处理操作时发生交换,导致更改了传递到操作的会话变量值时显示。
例如,假设对话要求提供人员的名字,并将其存储在
$name
上下文变量中。 然后,对话将名称作为given_name
会话变量传递到操作。 接着,调用的操作询问客户是否希望助手使用昵称。 随后,操作会将存储在given_name
会话变量中的值替换为客户提交的昵称。既然您已知道用户的首选昵称,在继续处理此示例时,您可能希望用首选昵称来称呼用户。 您可以添加以下响应:
Thanks for your business, <? $action_result_1.given_name ?>!
<? $action_result_1.given_name ?>
表达式将抽取从所调用操作返回的given_name
会话变量的值。 -
添加响应,以在未提供返回变量作为第二个条件响应时显示。
自动添加的第二个响应具有
anything_else
条件。 如果未显示其他条件响应,那么将显示此响应。您可以删除或编辑自动添加的条件响应。 可以添加更多条件响应并对其重新排序。
-
单击 X 以关闭对话节点。 这将自动保存您的更改。
-
使用“预览”页面来测试对话框与操作之间的交互。