机器人会话状态代码片段
本帮助页面上的信息同时适用于 Studio 和 Desktop Studio。
当使用具有 属性的作时,脚本中需要Bot Session StatebotSessionState 代码段。 这包括 Textbot Exchange 和 Voicebot Exchange 等作(从这里开始,这两个作都简称为 Exchange)。 必须正确配置 botSessionState 属性,您的虚拟坐席 代替现场人工坐席处理客户交互的软件应用程序。才能按预期工作。 为此,您必须在脚本中创建此代码段并正确配置作,如以下各节所示。
您的脚本不应写入此属性或其变量。 您的脚本必须正确
除非您使用 Google Dialogflow CX,否则此代码段是必需的,您可以在 自定义有效负载 snippet 中设置自定义对话 ID其用途与 Bot Session State 代码段相同。 在将联系人从一个 CX 实例Dialogflow转移到另一个 CX 实例时,将使用自定义对话 ID。 如果您不使用任一 ID,则会为对话中的每个轮次生成一个新的会话 ID,并且您的虚拟代理将不会维护对话的上下文。 如果发生这种情况,则不会生成任何错误,但系统将无法按预期运行。
脚本设置
使用 Exchange 操作时,您的脚本中至少需要该操作的两个实例。 每个 Exchange 操作中的 botSessionState 属性必须以不同方式配置:
- Exchange 操作的第一个实例位于脚本开头的 Begin 操作之后。 按以下方式对其进行配置:
- botSessionState:该字段必须为空。
- botSessionStateVarName (out):使用您希望脚本存储标识符的变量名称进行配置。
- 第二个 Exchange 操作位于脚本的后面。 按以下方式对其进行配置:
- botSessionState:在 Exchange 操作的第一个实例中使用 botSessionStateVarName (out) 中使用的变量进行配置。 该变量必须包含 JSON 格式的机器人会话状态标识符。
- botSessionStateVarName (out):使用您希望脚本存储标识符的变量名称进行配置。
- Exchange 操作的第三个和任何后续实例都是可选的。 如果您的脚本包含这些实例,请按如下方式配置它们:
- botSessionState:使用 Exchange 操作的上一个实例中的 botSessionStateVarName (out) 中使用的变量进行配置。 该变量必须包含 JSON 格式的机器人会话状态标识符。 机器人会话状态标识符一般不会在回合之间发生变化。 但是,如果要更改,则应配置此操作以捕获更改。
- botSessionStateVarName (out):使用您希望脚本存储标识符的变量名称进行配置。
所有虚拟坐席都需要进行此配置。
验证 botSessionState 属性设置是否正确
您可以使用脚本跟踪来确认此属性设置是否正确。
- 对虚拟坐席与联系人之间的交互运行脚本跟踪。 您可以使用连续跟踪或捕获特定于的 ANI 或 DNIS 的跟踪(仅用于语音交互)。
- 在跟踪窗口中,单击与第一个 Virtual Agent Hub 操作(Voicebot Exchange 或 Textbot Exchange)对应的行。
- 在变量列表中,选中 botSessionState 变量。 其值必须为 null(空)。
- 在跟踪窗口中,单击跟踪中第一个 Virtual Agent Hub 操作之后的下一行。
- 记下 botSessionState 变量的值。
- 在跟踪窗口中,单击跟踪中与任何后续 Virtual Agent Hub 操作对应的行。
- 检查变量 botSessionState 的值。 它必须与步骤 5 中的相同。
将机器人会话状态标识符转换为 JSON 格式
必须将 botSessionStateVarName (out) 属性中使用的变量内容转换为 JSON 格式,并将其传递到脚本中第二个 Exchange 操作的 botSessionState 属性中。 为此,您可以在 Snippet 操作中包含代码,也可以直接配置属性。 这两种方法都是可以接受的。 不过,在 Snippet 中创建一个变量来保存转换后的对象的好处是,可以更容易地看到转换在哪里进行。
使用 Snippet 操作
- 使用保存会话状态标识符的变量名称配置 Exchange 操作的 botSessionStateVarName (out) 属性。 例如,botSessionState。
-
在您的脚本中将以下行添加到位于 Exchange 操作之前的 Snippet 中:
ASSIGN botSessionStateOut = botSessionStateOut.asJSON()
使用您在脚本中使用的变量的名称。
- 使用 ASSIGN 语句中使用的变量的名称配置 Exchange 操作中的 botSessionState 属性。 例如,botSessionStateOut。
在属性中转换
如果在 botSessionState 属性中转换变量,则在 asJSON() 函数中使用 botSessionStateVarName (out) 变量。 例如:
- botSessionStateVarName (out):botSessionState
- botSessionState:botSessionState.asJSON()
将联系人从一个虚拟坐席转移到另一个虚拟坐席
要设置虚拟代理之间的联系人转移,您需要正确设置机器人会话状态 ID。 每个虚拟代理都必须有自己唯一的机器人会话状态 ID。 这有助于各个虚拟代理维护他们参与的对话的上下文。
-
虚拟代理 1:按照本页前面所述设置机器人会话状态变量。
- 虚拟代理 2:以相同的方式进行设置,在 botSessionStateVarName (out) 中使用不同的变量来保存机器人会话状态 ID。 确保在第一次调用此虚拟代理时, botSessionState 属性为空。 对话中的第一个轮次会向 botSessionStateVarName (out)中的变量返回唯一的机器人会话状态 ID。
- 所有后续虚拟代理:设置与虚拟代理 2 相同,使用唯一变量作为机器人会话状态 ID。
此方法适用于所有受支持的虚拟代理提供商,除非您在两个 Google Dialogflow CX 虚拟代理之间转移。 在这种情况下,需要不同的方法。