VoiceBot Exchange

将自助服务虚拟坐席关闭 代替现场人工坐席处理客户交互的软件应用程序。与语音脚本集成。此操作在脚本中循环使用。脚本必须至少包含两个 VoiceBot Exchange 操作。您的虚拟坐席必须支持此操作。

Voicebot Exchange 操作适用于复杂的虚拟坐席或者当您需要自定义虚拟坐席每个回合的行为时。该操作监控联系人与虚拟坐席之间每个回合的对话。它将每句话语关闭 联系人所说或输入的内容。发​​送到虚拟坐席。虚拟坐席分析话语意图关闭 联系人所说/输入内容背后的含义或目的;联系人想要沟通或完成的内容和上下文,并且确定需要作出的响应。该操作将虚拟坐席的响应传递给联系人。对话完成后,该操作将继续执行脚本。

如果想配置插入或不输入,则需要额外的脚本。

双击此操作打开 虚拟坐席中心,您可以在其中管理所有虚拟坐席。

依赖关系

  • 脚本必须至少包含两个循环连接的 VoiceBot Exchange 操作。
  • 要使用此操作,您的虚拟坐席必须支持逐轮对话自定义。
  • 对话轮次定义为:

    1. 要发送给虚拟坐席的联系人话语。
    2. 虚拟坐席处理话语并定义任何自定义有效负载信息。
    3. 将应答传回至联系人。
    4. 要采取的任何其他操作(例如数据库或外部 API 调用)由 nextPromptBehaviors 属性确定。您还可以将对话循环配置为在交互完成或联系人转接给实时坐席时退出。
  • 如果您将自定义负载包含在 Google Dialogflow ESGoogle Dialogflow CX 虚拟坐席中,请遵循自定义负载最佳实践和指导方针。CXES 指南参见此页面。

支持的脚本类型

The icon for the Phone script type - an old-style phone handset with curved lines indicating sound coming out of it.

电话

类似操作比较

以下操作具有类似功能,但存在一些关键区别:

  • Textbot Exchange:此action用于复杂的虚拟坐席交互。它允许您包含交换参数,以及对联系人和虚拟坐席之间对话的各个方面进行自定义。
  • Voicebot Exchange:此action用于复杂的虚拟坐席交互。它允许您包含交换参数,以及对联系人和虚拟坐席之间对话的各个方面进行自定义。

支持的虚拟坐席

此操作支持以下虚拟坐席:

在将虚拟坐席分配给此操作之前,您必须在 虚拟坐席中心 中添加并配置虚拟坐席的应用程序。对于您使用的每个虚拟坐席,您只需要一个应用程序。您可以将同一应用程序分配给脚本中的多个虚拟坐席操作。有关配置详细信息,请参阅您正在使用的虚拟坐席提供程序的帮助页面。

输入属性

这些属性定义操作在执行时使用的数据。

此操作的一个或多个属性需要带有自定义代码Snippet 操作。

属性

说明

Caption

输入在脚本中唯一标识此操作的短语。标题显示在脚本画布上的操作图标下方。The default is the action name.

virtualAgentID 虚拟坐席中心 中选择的虚拟坐席的姓名对应。当您将虚拟坐席应用程序分配给 虚拟坐席中心 中的 Studio 操作时,它会自动填充此属性。该名称是 虚拟坐席中心 应用程序中的 Virtual Agent (Bot) Name 字段中使用的名称。
customPayload

仅当需将自定义有效负载数据传递给虚拟坐席时才配置此属性。自定义有效负载对象从 Studio 脚本填充。您可以使用它从 CRM关闭 管理联系人、销售信息、支持详细信息和案例历史记录等事项的第三方系统。 传递联系人姓名等信息,以便在欢迎消息中使用。

输入将数据从脚本传递到虚拟坐席的 JSON 对象的名称。您必须在 Snippet 操作中定义自定义有效负载对象。必须在代码段或 customPayload 属性中将该对象转换为 JSON。

对特定虚拟坐席提供程序的要求:

如果需要处理虚拟坐席返回给脚本的数据,请勿使用此属性。请使用 customPayloadVarName (out) 变量。

nextPromptSequence

从虚拟坐席收到的响应,将为联系人播放。使用通过 asJSON() 函数在 nextPromptSequenceVarName (out) 中指定的变量来配置此属性。您还可以在 Snippet 操作中将 nextPromptSequenceVarName (out) 的内容转换为 JSON,并使用保留 JSON 的变量配置此属性。

nextPromptBehaviors

指定对话中下一个提示的配置和行为。使用 Snippet action并遵循默认下一个提示行为下一个提示行为代码片段示例定义您想要看到的行为。此示例描述了您可以用来配置舒适噪音、DTMF 集合以及允许联系人在播放(插入)音频时通过音频说话的属性。

使用您在代码片段中使用的对象名称配置 nextPromptBehavior 属性。进而传递设置给该属性及其操作。例如,使用下一个提示行为代码片段示例,您可以为此属性输入 {nextPromptBehaviorsOutjson} 如果使用此操作启用文本虚拟坐席来处理语音交互,则只需配置此属性。

botSessionState

虚拟坐席提供程序会为联系人和虚拟坐席之间的每次对话分配一个唯一的标识符。该标识符可防止在对话的每一个回合中都创建一个新会话。该提供程序在对话开始时创建标识符,并将其传递给包含首个响应的脚本。脚本会将标识符存储在 ExchangebotSessionStateVarName (out) 属性中命名的变量中。然后,它将标识符传递给 botSessionState 属性。

必须正确配置此属性才能使您的虚拟坐席正常运行。有关如何配置的更多信息,请参见“机器人会话状态代码片段”帮助页面。

automatedIntent

按名称输入虚拟坐席要响应的特定意图,而不是让虚拟坐席解读收集的用户输入。这种情况的常见用例是从虚拟坐席获取初始欢迎消息。Welcome 是初始问候语的标准字符串。

输出属性

这些属性包含保存执行操作返回的数据的变量。它们在操作完成后供引用和使用。

属性

说明

nextPromptBehaviorsVarName (out)

定义在下一个会话回合中提示用户的行为。

nextPromptSequenceVarName (out)

保存来自虚拟坐席的响应并将其传递到 nextPromptSequence 属性。

customPayloadVarName (out)

将自定义 JSON 数据从虚拟坐席返回到脚本。如果希望脚本处理虚拟坐席提供的数据,请使用此变量。可能包含履行数据。

如果要向虚拟坐席提供数据,请使用 customPayload 属性。

errorDetailsVarName (out)

提示错误意图序列;可能导致转移到真人坐席。

intentInfoVarName (out)

用于保存虚拟坐席指示当前用户意图的详细信息的变量。

botSessionStateVarName (out)

保存脚本存储虚拟坐席提供程序发送的机器人会话状态标识符的变量。该变量的内容被传递给 botSessionState 属性。

必须正确配置此属性才能使您的虚拟坐席正常运行。有关如何配置它的更多信息,请参见“机器人会话状态代码片段”帮助页面。

结果分支条件

结果分支条件允许您在脚本中创建分支,以在执行操作时处理不同的结果。

条件

说明

Default 除了脚本满足条件要求其接受其他分支的情况之外,所要采用的路径。如果未定义操作的其他分支,也会执行此操作。
OnPromptAndCollectNextResponse

虚拟坐席已决定继续进行交互并准备好接受更多联系的人工输入时采用的路径。对话中下一个回合的提示。

OnError 出现意外问题(如连接性差、语法错误等等)时所要采用的路径。_ERR 变量中应填入对问题的简明解释。
OnReturnControlToScript 如果虚拟坐席指示对话完成并将控制权交还给 Studio 脚本以转移或结束呼叫,则采用的路径。customPayload 结果中可能有需要处理的履行数据。
OnDTMFBreakout

满足脚本中的 DTMF关闭 当用户在电话按键上按下或敲击某个键时产生的信号音。 规则时所采用的路径。

OnUserInputTimeout

如果用户在“提示行为”片段(不论是默认下一个提示行为片段)中指定的时间内没有响应,则采用的路径。

对于 Google Dialogflow,您可以在 虚拟坐席中心 Dialogflow 应用程序中配置想要发生的事件。对于 Dialogflow ES,配置 Timeout Event 字段。对于 Dialogflow CX,配置 Timeout Event Handler。如果没有配置事件,则默认使用 Dialogflow 控制台中配置的默认回退意图。

如果需要,您可以配置这个分支以在脚本的不同位置使用不同的事件

OnUserInputNotUnderstood

当虚拟坐席不理解联系人的响应或联系超时时所采取的路径。

所需的 SNIPPET 操作代码

此操作的一个或多个属性需要带有以下自定义代码的 Snippet action

使用 Google Dialogflow CX 的 Custom Payload 的最佳实践

将此操作与 Google Dialogflow CX 一起使用时,请遵循集成自定义有效负载的最佳实践:

  • DialogflowCX 不像 Dialogflow ES 使用上下文将数据传递给 Dialogflow 意图关闭 联系人所说/输入内容背后的含义或目的;联系人想要沟通或完成的内容
  • 您可以使用 JSON 键值对将自定义数据传递到 Dialogflow CX。在脚本的 Snippet action操作中,创建一个动态 customPayload 对象,并向其添加键值。例如:

    DYNAMIC customPayload
    customPayload.ani = ani
    customPayload.contactID = contactId
    customPayload.masterContactId = masterId
    customPayloadJSON = "{customPayload.asJSON()}"	
  • 在脚本的 ExchangeConversation 操作中,通过其值中包含 asJSON() 函数的变量来配置 customPayload 属性。您可以在 customPayload 对象中找到该变量。
  • 使用 QueryParametersPayload 属性将 customPayload JSON 传递给虚拟坐席。请参阅 Google 文档,了解 Google Dialogflow CXQueryParameters 一个方块,右上角有一个从中心向外的箭头。
  • 通过 QueryParameters 传递的数据由 Dialogflow CX 中的 Webhook 接收。您可以在 Dialogflow CX 控制台中编写代码来处理传递的数据。
  • 不要在 customPayload 对象中嵌套对象。嵌套的对象作为文字字符串进行发送。
  • 要将自定义数据从 Dialogflow CX 虚拟坐席传递回脚本,请使用 Dialogflow CX 控制台中的 Custom Payload 字段。确保您位于与 CXone 结合使用的虚拟坐席的控制台中。在脚本中的语音聊天 Studio 操作中,使用 customPayloadVarName (out) 变量将其映射到脚本。例如,您可以使用此来设置下一个提示行为
  • 使用 customPayload 设置的参数只能在外部 Webhook 中使用。如果要设置参数以便在外部 webhook 之外使用,请在包含 session_params 字段的 Snippet 操作中设置参数。例如:

    {
    	"session_params":
    	{ 
    		"name": "Winnie Le Pooh"
    		"job": "Food critic"
    		"location": "Hundred Acre Wood"
    	}
    }

    使用以下语法访问 Dialogflow CX 坐席意图中的会话参数:

    $session.params.name = Winnie Le Pooh

    $session.params.job = Food critic

    $session.params.location = 100 Acre Wood

    会话参数仅与 Dialogflow CX 虚拟坐席一起使用。要通过 Dialogflow 获得类似的结果,请使用上下文。

  • 语音上下文提示可以通过 speechContexts 参数中的自定义有效负载进行传递。voiceContexts.phrases 的值必须是您想要给出的提示的 Google 类令牌 一个方块,箭头从中心指向右上角。。该令牌必须与您的联系人的语言和区域设置相匹配。例如:

    DYNAMIC customPayload
    customPayload.speechContexts.phrases="$OOV_CLASS_ALPHANUMERIC_SEQUENCE"
    customPayload.speechContexts.boost=10		
  • 要配置联系人在讲话时暂停时虚拟坐席等待的时间,请将 maxPostEnergySilenceMS 参数添加到 Next Prompt BehaviorsDefault Next Prompt Behaviors Snippet 操作中。

使用 Google Dialogflow ES 的 Custom Payload 的最佳实践

将此操作与 Google Dialogflow ES 一起使用时,请遵循集成自定义有效负载的最佳实践:

  • CustomPayload 用于传递意图关闭 联系人所说/输入内容背后的含义或目的;联系人想要沟通或完成的内容的上下文。上下文有助于虚拟坐席理解用户的意图。上下文不是必需的,但有助于虚拟坐席将话语关闭 联系人所说或输入的内容。与意图相匹配。
  • 在脚本的 Snippet 操作中,创建一个 customPayload 对象,其遵循 REST 资源: projects.agent.sessions.contextGoogle Dialogflow ES 文档指示链接到外部网站的图标中概述的格式。Studio 联机帮助提供有关动态数据对象的附加信息。
  • 您还可以在没有上下文的情况下使用 customPayload 传递自定义数据。为此,请在动态数据对象中包含标准的 JSON 键值对。
  • 语音上下文在 speech_contact 参数中的自定义有效负载中进行传递。您可以在 Studio 跟踪和应用程序日志中查看该参数的内容。
  • customPayload 动态对象以 JSON 格式作为虚拟坐席参数传递,如示例脚本中所示。
  • 语音上下文提示可以通过 speechContexts 参数中的自定义有效负载进行传递。voiceContexts.phrases 的值必须是您想要给出的提示的 Google 类令牌 一个方块,箭头从中心指向右上角。。该令牌必须与您的联系人的语言和区域设置相匹配。例如:

    DYNAMIC customPayload
    customPayload.speechContexts.phrases="$OOV_CLASS_ALPHANUMERIC_SEQUENCE"
    customPayload.speechContexts.boost=10		

提示和技巧

如果在 虚拟坐席中心 与虚拟坐席之间听不到语音音频,请检查脚本跟踪以查看是否有记录文本。如果有,则需要调整 Google Dialogflow 虚拟坐席。

脚本示例

这是一个示例,说明如何在脚本中使用此操作。它并不是一个完整的脚本。可能还需要编写其他脚本。

VoiceBot Exchange 操作必须在循环中使用。这意味着您必须在一个脚本中至少使用两个。第一个操作启动对虚拟坐席的 API 调用,并且必须在此之前执行 默认下一步提示行为 Snippet 操作。第一个操作是“Welcome Default”,它将开始第一个脚本化循环,或一个对话“回合”。

使用 VoicebotExchange 操作的脚本示例。

下载此脚本。

使用 Google Dialogflow ES 的 CustomPayload 示例脚本

这是一个示例,说明如何在脚本中使用此操作。它并不是一个完整的脚本。可能还需要编写其他脚本。

该脚本是如何将自定义有效负载与 Google Dialogflow ES 虚拟坐席相集成的一个示例。此脚本使用 Voicebot Exchange 操作,但如果您改用 TEXTBOT EXCHaNGE,它也可以工作。

说明如何使用 Google Dialogflow CX 处理自定义有效负载的示例脚本。

下载此脚本

备用超时事件的示例脚本

这是一个示例,说明如何在脚本中使用此操作。它并不是一个完整的脚本。可能还需要编写其他脚本。

可以在脚本的不同位置使用不同的超时事件。例如,您可能希望在第一次和第二次触发 UserInputTimeout 属性时使用不同的超时事件。以下示例脚本展示了可能实现此目标的一种方式。

在此脚本中,Snippet 操作用于创建和递增超时计数器。第二次超时后,Snippet 操作则用于设置不同的超时事件。交替超时事件通过 automatedIntent 属性从 Snippet 操作传递给语音机器人操作。

下载此脚本