在 AI 代理的上下文中,实现是指执行涉及与外部系统交互以通过 API 检索、作或存储数据的任务。 本文概述了为跟踪包创建的示例代理。 您可以在为数字和语音交互创建新的 AI 代理时使用此代理模板。

对于数字渠道,必须通过用于部署 AI 代理的连接流来协调履行。 以包跟踪代理为例,您可以在创建新的脚本化代理时从模板导入该代理,在创建新的 Webex Connect 流时也有空导入该流。 除了履行之外,此连接流还根据用户的上一个意图将用户路由到不同的代理队列。

  1. 完成脚本代理设置后,确定需要满足的响应。

    在示例代理中,“trackPackageResponse”需要履行。

  2. 在这些模板中,配置在履行时向用户显示的“等待响应”。

    在此示例中,为“trackPackageResponse”配置了保持响应。

  3. 在流中,使用数据解析器 节点从 AI 代理的响应中解析代理会话元数据(输出变量),以获取响应名称。

    您可以通过选择适当的事务并从下载的文件中选取“createdDf”键的值来从会话下载事务信息,从而获取数据解析器节点的示例输入。

  4. 如果您希望在代理切换时执行基于意图的路由,则可以在同一步骤中获取上一个活动意图的值。

  5. 如果您不希望下载和解析示例 JSON,可以使用 \$.model_state.template_key 作为响应名称 ,使用 \$.previous_intent_model_state.intent.name 作为先前的意图名称。

    在我们的示例中,我们对这些值使用流变量“responseKey”和“previousIntent”。

  6. 使用分支 节点检查响应是否需要满足。

    • 对于不需要满足的响应,分支节点通过“以上都不是”节点结果退出。

    • 在我们的示例中,由于需要满足“trackPackageResponse”,请检查分支节点中的“responseKey”的值。

  7. 对于需要满足的响应,请使用 HTTP 节点进行外部 API 调用。

    • 您可以通过导入示例并获取输出变量来解析同一节点中 HTTP 节点响应中的有用信息。

    • 在此示例中,我们获得包裹的“估计交付”和“状态”。

  8. 使用评估 节点处理 履行响应以制定代理响应。

    在我们的示例中,我们初始化“fulfilmentResp”变量,并根据包裹状态和预计送达量设置其值。

  9. 向用户发送履行响应并将其追加到对话中。

  10. 循环返回到 接收 节点,以保持用户和 AI 代理之间的对话。

基于意图的代理切换

在代理移交时,检查通过队列任务 节点之前的 分支 节点的 最后一个活动意图。

检查“previousIntent”的值,并根据您的要求分支到不同的队列。 在此示例中,如果客户在“跟踪包裹”意图之后请求代理交接,则将其路由到“专家”队列。 所有其他值都会被转接至“聊天”队列。

对于语音通道,必须通过自定义事件将对话控制权交还给语音流,然后使用履行数据恢复 AI 代理对话,从而协调履行。 为此,重用了用于跟踪包的示例脚本代理。 该流在 Webex Contact Center 流设计器的“从模板导入”中有空。 除了履行之外,此流还根据用户的上一个意图将用户路由到不同的代理队列。

分步指南:履行

  1. 添加“自定义事件”响应类型。

    • 找到要为其添加自定义事件的模板密钥。 在这种情况下,请使用“trackPackageResponse”模板密钥。

    • 将“自定义事件”响应类型添加到模板键。

  2. 配置自定义事件响应。

    • 添加事件名称和事件有效负载:

      1. 对于自定义事件响应,请提供事件名称。在本例中,为“TrackPack_Exit”。

      2. 添加事件有效负载,其中包含将传递给流的数据。 这必须是 JSON 格式。 在此示例中, {“PackageNumber”:“${entity.PackageNum}“}.

  3. 使用流中的事件有效负载。

    • 访问 虚拟代理 v2 活动元数据:
      1. 在语音流配置中,添加的事件有效负载将作为虚拟代理 V2 活动元数据的一部分 有空。

      2. 创建流变量 PackageNum。

      3. 使用 Parse 活动选择 虚拟代理 V2 活动元数据作为输入变量。

      4. 将输出变量设置为 'PackageNum',将其路径表达式设置为 '$。PackageNum'(基于在代理响应中配置的事件有效负载的结构)。

    • 使用 HTTP 活动中 的元数据:
      1. 使用流中已处理元数据中的“PackageNum”变量跟踪包。

      2. 导入附加的流以查找 HTTP 活动的详细信息

      3. 定义流变量 'estimatedDelivery' 并将其设置为 '$.estimated_delivery' 和另一个流变量 'packStatus' 并将其设置为 $.status。

    • 基于 HTTP 活动添加条件:
      1. 向流添加新的条件 活动。 此活动用于检查 HTTP 活动的响应 (包是否存在及其状态)。

        在此示例中,表达式  {{ HTTPRequest_8l3.httpStatusCode == 404 }} 用于检查是否未找到包。

  4. 添加 基于条件的设置变量 活动:
    1. 对于包不存在的条件:

      • 在找不到文件包的分支下,添加“ 设置变量 ”活动。
      • 将 packageResp(另一个流变量)设置为:

        未找到包含这些详细信息的软件包。

    2. 对于软件包存在的条件:

      • 在找到包的分支(即 HTTP 状态代码不等于 404)下,添加另一个 “设置变量 ”活动。
      • 将 packageResp(另一个流变量)设置为:

        您的包裹已被提取。 它将由 {{estimatedDelivery}} 交付。

    3. 再添加两个设置变量活动以配置事件名称和事件数据。 此数据将传递到虚拟代理 V2 活动。

      • 创建流变量 event_name 和 event_data。

      • 将 event_name 设置为 TrackPack_Entry,将 event_data 设置为 {'packageResp':'{{packageResp}}' | json}。

  5. 循环返回到 虚拟代理 V2 活动:

    • 配置虚拟代理 V2 活动:
      1. 将最终 的“设置变量 ”活动连接到虚拟代理 V2 活动。

      2. 将活动名称设置为 {{event_name}}。

      3. 将事件数据设置为 {{event_data}}。

  6. 处理虚拟代理中的传入事件:

    1. 添加新模板密钥:

      1. 转到左侧面板上的响应 Tab。

      2. 添加一个名为 packageStatus 的新模板密钥。

    2. 配置传入事件:

      1. 在语音通道下,将传入事件设置为“TrackPack_Entry”(或发送到流中的虚拟代理 V2 活动的任何事件)。

    3. 配置响应:

      1. 将响应设置为:<speak> <say-as interpret-as=“date”> ${eventStore.packageResp} </say-as>。 我能帮你做点别的吗?</说话>

        此响应使用流有效负载中发送的变量。 作为事件数据的一部分发送的任何变量都有空供开发人员作为 ${eventStore.<variable_name>} 访问。

        这也使用 SSML 标记。 特别是,SSML 标记允许您控制文本转语音引擎如何解释和朗读文本。 此标记可用于指定数字、日期、时间、地址和其他文本的发音方式。 在这里,我们将其用于约会。

基于先前意图的代理路由

  • 如果虚拟代理 V2 活动通过“升级”输出退出, 请使用 Parse 活动从代理元数据中获取以前的意图。

  • 使用 Case 活动检查确定排队逻辑的先前意图的不同值。 在此示例中,我们检查之前的意图是否为“跟踪包”。

  • 将案例 活动输出附加到相应的队列联系边缘。