IBM Cloud Docs
从对话调用操作

从对话调用操作

在 watsonx Assistant中,可以将操作用于主对话对话。 对话功能优先于操作。 您可以使用操作来补充基于对话的对话,但对话会驱动与用户的对话以匹配其请求。

对话节点调用操作以执行任务,然后返回到对话。 在单个对话框节点中,您可以调用 webhook 或动作,但不能同时调用两者。 请选择最适合您需求的方法:

  • 如果您想执行一个独立的任务,可以调用一个操作,然后返回对话框,准备处理任何新的用户请求。 在操作处理过程中从用户处收集的数据必须存储为会话变量,以便传递给对话框。

  • 如果要向 Web Service 发送请求以完成任务,然后返回可由此对话稍后使用的响应,请调用 Webhook。 有关更多信息,请参阅 使用 Webhook 扩展助手

何时从对话框中调用操作

在以下场景中,您可能希望从对话调用操作:

  • 您希望从多个对话线程执行一个操作。

    例如,您想要询问客户对您的服务的满意度。 您可以定义单个操作来检查客户满意度,并从多个分支结束对话节点调用该操作。

    在此场景中,您不需要定义意向,例如 #check_satisfaction。 将自动调用该操作,以替换跳转至另一个对话节点的响应。

  • 你想看看行动是如何进行的。

    在此场景中,可以选取意向以供操作处理。 如果只计划从对话框中调用操作,则可以花时间为触发对话框节点的意图定义用户示例。 定义操作时,可以仅添加一个客户示例,从而减少构建操作所需的时间。

添加操作调用

在开始之前,打开“操作”页面并检查以下内容:

  • 要调用的操作的名称。

  • 如果要调用的操作使用会话变量,并且您希望通过设置会话变量值以将值传递到操作,请记下会话变量的标识。

    在“变量”部分中,单击以打开会话变量。 您可以在标识字段中查看用于变量名称的语法。 将变量标识复制到剪贴板。

    您还需要了解要分配给会话变量的值的类型。 如果您不知道,请检查操作如何使用会话变量。

从对话框节点调用操作:

  1. 在对话节点中,单击定制

  2. 调用 Webhook/操作 设置为 开启

  3. 选择“调用操作”。

    添加操作调用时,将自动为对话节点启用多个条件响应。

  4. 单击应用

  5. 在对话节点中,选择要调用的操作。

  6. 可选:如果要调用的操作使用会话变量,那么可以在启动操作时设置会话变量的值。

    在“参数”部分,添加键和值对,以便在调用操作时传递。

    将变量标识(先前已复制到剪贴板)添加到字段,并在字段中,指定要将变量设置为的值。

    例如,假设操作具有名为 given name 的会话变量。 您可以将当前用户的名字(您已要求提供并保存到 $name 上下文变量)传递到操作,如下所示:

    Action call key and value pair example
    given_name "$name"
  7. 如果从多个对话节点调用操作,请更改返回变量的名称,以使其在所有对话节点中唯一。 例如,您可能已调用操作,其返回变量名为 $action_result_1,因此可以将新的返回变量命名为 $action_result_2

    返回变量是自动创建的上下文变量。 它会存储在处理调用操作时创建或更改的会话变量值。

  8. 在“助理响应”部分,第一个条件响应的条件将自动由操作调用的返回变量填充。

    除非更改名称,否则返回变量名为 $action_result_1

    如果调用的操作创建了任何会话变量或更改了其值,那么会将这些变量作为 JSON 对象存储在结果变量中并返回。

    例如,如果操作更改了 given namemembership status 会话变量的值,那么将返回以下 JSON 对象:

    {"given_name":"Sally","membership_status":"true"}
    
  9. 如果未发送或未更改任何会话变量,那么可以删除第一个条件响应。 否则,请考虑添加要在从调用的操作发送返回变量时显示的响应。

    您可能希望指定定制响应,以在处理操作时发生交换,导致更改了传递到操作的会话变量值时显示。

    例如,假设对话要求提供人员的名字,并将其存储在 $name 上下文变量中。 然后,对话将名称作为 given_name 会话变量传递到操作。 接着,调用的操作询问客户是否希望助手使用昵称。 随后,操作会将存储在 given_name 会话变量中的值替换为客户提交的昵称。

    既然您已知道用户的首选昵称,在继续处理此示例时,您可能希望用首选昵称来称呼用户。 您可以添加以下响应: Thanks for your business, <? $action_result_1.given_name ?>! <? $action_result_1.given_name ?> 表达式将抽取从所调用操作返回的 given_name 会话变量的值。

  10. 添加响应,以在未提供返回变量作为第二个条件响应时显示。

    自动添加的第二个响应具有 anything_else 条件。 如果未显示其他条件响应,那么将显示此响应。

    您可以删除或编辑自动添加的条件响应。 可以添加更多条件响应并对其重新排序。

  11. 单击 X 以关闭对话节点。 这将自动保存您的更改。

  12. 使用“预览”页面来测试对话框与操作之间的交互。