使用文件和文件夹进行脚本编写

您可以使用 Studio 脚本中的文件。 文件必须存在于您的 CXone Mpower 系统上。 您可以在浏览 ACD 文件页面查看 CXone Mpower 中的文件。 您可以从此页面上传和下载文件。 您还可以使用上传和下载Desktop Studio个文件。

有一些操作允许您浏览 CXone Mpower系统中的文件:

有些操作可使您通过电子邮件或 FTP/SFTP 发送文件:

  • EMAILEMAIL:发送带有文件附件的电子邮件。
  • EMAILEMAIL(数字脚本):发送带有文件附件的电子邮件。
  • AttachAttach:将文件附加到生成的电子邮件中。
  • SendfileSendfile:通过 FTP 或 SFTP 发送文件。

有一些作允许您在交互中使用预先录制的音频文件或提示:

  • MENU :为联系人播放提示或预先录制的音频文件,并创建一个选项菜单供他们选择。从中进行选择。
  • Play :播放自定义音频 WAV 文件或文本转语音 (TTS关闭 允许用户将录制的提示作为文本输入,并使用计算机生成的语音来朗读内容。) 提示。 如果使用文件,则播放整个文件。 只有联系人才能听到该音频。
  • Playlog :播放只有联系人才能听到的自定义音频 WAV 文件。 它允许您选择特定的开始点和停止点。 无法播放内置于其他操作的音乐文件,例如 Music
  • Reqagent: 播放只有坐席会听到的自定义音频 WAV 文件或文本转语音提示。 提示会在坐席和联系人链接之前播放,因此提示不会导致联系人听到静音。
  • Whisper :播放自定义 WAV 文件或文本转语音提示。 您可以将其设置为仅联系人、仅坐席或两者均可听到。 提示会在坐席和联系人链接之后播放,因此如果该操作仅针对坐席或联系人播放,则另一方在提示期间将听到静音。

最后一步操作是 CONCATWAV action,它可以将两个 WAV 文件连接起来。

文件路径

当您需要在脚本中引用文件路径时,请检查帮助页面以了解您正在使用的操作。 某些操作使用绝对路径。 其他则需要相对路径。 如果帮助页面未指定并且一种类型的路径在您的脚本中不起作用,请尝试另一种类型。 绝对路径和相对路径的区别是:

  • 绝对路径:始终从根文件夹开始。 脚本文件相对于你引用的文件或脚本的位置并不重要。 使用波浪号和反斜杠 (~\) 来指示根文件夹。 例如,~\文件夹\file.wav。
  • 相对路径:描述您引用的文件相对于脚本文件的位置,从脚本文件的位置开始。 如果文件位于与脚本位于同一文件夹的子文件夹中,请将脚本的位置视为根目录,并在路径中包含子文件夹名称。 例如,如果脚本位于 \文件夹 中,file.wav位于 \文件夹\Subfolder1 中,则路径如下:\Subfolder1\file.wav。 如果文件位于脚本文件夹之外,或者相对路径不起作用,请改用绝对路径。

这是一种最佳实践Studio尽可能使用绝对路径,即使也支持相对路径。 当引用位于其他文件夹中的文件时,这一点尤其重要。 这条最佳实践适用于你在脚本中引用文件的任何时候,而不仅仅是在处理开发工作流程阶段时。

Scripts中的文件路径管理

Studio 中的 Scripts很少单独存在。 为了便于重复使用和自定义,它们通常组织在多个文件夹中。 脚本中使用的其他文件,例如音频提示或 ASR关闭 自动语音识别。 允许联系人通过语音、按键或两者结合的方式响应提示。 语法文件,都位于单独的文件夹中。 如果贵公司使用 Studio 开发工作流程阶段,您还有与阶段相关的文件夹,可以进行受控推广。 Scripts经常引用位于不同文件夹中的其他Scripts,因此路径管理对于 Scripts 的成功运行至关重要。

您可以使用文件路径中的变量替换来创建一种一致、可靠的方法来管理脚本中的路径。 这有助于确保在整个脚本生态系统中,对其他脚本、音频提示、ASR 语法和其他文件的引用更加准确。

路径管理允许脚本跨文件夹边界查找和执行其他脚本或使用其他文件。 通过使用变量替换文件路径,可以在较少的地方定义路径。 如果文件夹或文件发生更改,您只需在一个地方更新路径,而无需查找对该文件的每个引用。

文件路径的变量替换

使用变量替换文件路径可以定义:

  • 包含脚本或脚本中引用的文件的文件夹的绝对路径。 当您引用位于其他文件夹中的脚本或文件时,必须使用绝对路径。

  • 脚本升级时自动更新的路径。 此选项仅适用于贵公司使用 Studio 个开发工作流程阶段的情况。

  • 单个位置或少量位置中的文件夹和文件的路径。 这样一来,在需要更新路径时就更容易了,因为你知道变量是在哪里创建的。

您可以创建变量来保存您引用的每种类型文件的路径,例如提示、语法、语音邮件、其他脚本等等。 如果脚本将文件保存到文件夹或从文件夹中读取文件,您也可以对这些路径使用变量。

当您需要引用文件时,请使用变量代替路径。 例如,为提示文件的路径创建一个变量,并在指定提示时在 action关闭 在 Studio 脚本中执行的流程,例如收集客户数据或播放音乐。 属性中使用该变量。 它可能类似于以下示例:{promptPath}Greeting.wav

要自动更新路径变量,您可以使用SNIPPET 并编写代码来确定脚本位于哪个开发阶段文件夹,然后相应地更新路径。 本帮助页面的其余部分描述了一个示例,您可以将其用作脚本中的模型。

如果您的组织有多名脚本开发人员,请共同制定使用变量替换文件路径的策略。 这将节省时间并确保每个人都知道要使用哪些变量。

文件路径变量替换示例

文件路径的变量替换示例设置为入口脚本。 入口脚本是在联络点关闭 呼入联系人用来发起交互的入口点,如电话号码或电子邮件地址。 (POC) 中配置的默认脚本。 在这个例子中,入口脚本运行到另一个脚本,该脚本执行通道的路由。 您还可以使用一个入口脚本作为多个 POC 的默认脚本,并使其根据诸如 技能ACDDNIS关闭 用于根据坐席的技能、能力和知识自动传递交互。 等标准运行到相应的路由脚本关闭 呼入或呼出语音呼叫时所拨打的号码。 对多个 POC 使用一个入口脚本的好处是,通过仅在一个位置定义文件路径变量替换来减少出错的机会。

示例入口脚本包含一个连接到BEGINSNIPPET动作和一个RUNSCRIPT动作,如下图所示。

SNIPPET作包含用于确定正在运行的脚本的名称和路径的代码。 此信息用于构建包含脚本、提示等的文件夹的绝对路径。 您可以编写自己的代码或使用以下示例:

SELECT
 {
  CASE runScript.length > 0 //Voice, Legacy Chat, Work Item
  {
   ASSIGN normalizedScriptName = "{runScript}"
  }
  CASE __runScript.length > 0 //Legacy Email
  {
   ASSIGN normalizedScriptName = "{__runScript}"  
  }
  CASE __targetScript.length > 0 //Simulate Inbound
  {
   ASSIGN normalizedScriptName = "{__targetScript}"
  }
  CASE __scriptName.length > 0 //Digital
  {
   ASSIGN normalizedScriptName = "{__scriptName}"
  }
  CASE customScript.length > 0 //Custom Outbound script
  {
   ASSIGN normalizedScriptName = "{customScript}"  
  }
  CASE __reskillscript.length > 0 //Custom Script assigned to skill on reskill
  {
   ASSIGN normalizedScriptName = "{__reskillscript}"  
  }
  CASE global:callSuppScript.length > 0 //Suppression script
  {
   ASSIGN normalizedScriptName = "{global:callSuppScript}"
  }
}
IF normalizedScriptName.length > 0
{
 ASSIGN folderArray = "{normalizedScriptName.split('\')}"
 ASSIGN env = "{folderArray[1]}"
 FOR i = 1 TO folderArray.size - 1
 {
  ASSIGN folderPath = "{folderPath}\{folderArray[i]}"
  }
}
IF env.length = 0
 {
  ASSIGN env = "DEV"
 }
ASSIGN scriptPath = "~{folderPath}\"
ASSIGN promptPath = "~{folderPath}\Prompts\"
ASSIGN grammarPath = "~{folderPath}\Grammars\"

此示例代码使用具有多个SELECT 语句CASEs。 每个CASE代表一个可以保存当前脚本名称和路径的系统变量。 特定脚本中使用的变量取决于脚本的类型。 代码片段:

  1. 查找包含当前脚本的路径和名称的系统变量。 为此,它:

    1. 评估每个CASE以查看指定变量的值的长度是否大于 0。
    2. 如果是这样,代码片段将选择该CASE并将变量的值赋值给normalizedScriptName变量。
  2. 确定脚本所在的开发工作流阶段文件夹的名称。 为此,它:

    1. 使用split() 函数normalizedScriptName的值转换为数组,使用反斜杠字符 (\) 作为分隔符,并将转换后的值赋值给folderArray。 这会将脚本路径中的所有反斜杠替换为竖线字符 (|),从而将路径和脚本名称转换为数组。 例如,如果 normalizedScriptName 的值为 Prod\ScriptFolder3\ScriptExample1,则 folderArray 的值将变为 Prod|脚本文件夹3|ScriptExample1

    2. 创建一个名为 env 的变量来保存当前开发工作流阶段文件夹的名称。 该代码段使用第一个数组元素的内容填充env。 按照上一步中的示例,env的值为 Prod

  3. 构建当前脚本文件夹的路径并将其存储在变量中。 路径值不包括脚本的名称。 为此,代码段:

    1. 使用FOR循环将 folderArray 中每个元素的值添加到新变量 folderPath,用反斜杠 (\) 分隔。

  4. 包含一个 IF 语句,用于验证env变量是否填充了值 (IF env.length = 0)。 如果不是,则默认将 dev 应用于它。 此 IF 语句用作备份,以防在前面的 IF 语句期间发生某些情况,并且未填充env

    该变量具有适当的值非常重要,因为它通常在 Studio 脚本中使用,以确定在各种情况下脚本与可能具有沙箱或开发版本和生产版本的系统交互时所使用的环境。 例如,这在与 CRM关闭 管理联系人、销售信息、支持详细信息和案例历史记录等事项的第三方系统。 的集成中很常见。 您可以修改该值以匹配组织的开发阶段文件夹的名称。

  5. 定义并填充变量,以根据保存以下文件夹位置的绝对路径folderPath

    • 包含RUNSCRIPT作启动的脚本的文件夹的值:

      ASSIGN scriptPath = "~{folderPath}\"

    • 包含后续脚本使用的提示的文件夹:

      ASSIGN promptPath = "~{folderPath}\Prompts\"

    • 包含后续脚本使用的语法文件的文件夹:
      ASSIGN grammarPath = "~{folderPath}\Grammars\"

    您可以创建其他变量来保存组织使用的其他文件(如语音邮件)位置的路径。

前面的代码片段构建了一个绝对路径。 您可以在任何需要代码片段或作属性配置中的文件夹路径的后续脚本中使用此变量。 如果您使用的作支持相对路径,则可以选择不使用 folderPath 变量。 但是,最佳做法Studio是尽可能使用绝对路径,即使也支持相对路径。

自定义入口脚本代码片段

要允许示例入口脚本片段与您的脚本一起使用,您需要自定义一些变量:

  • scriptPath:修改值以包含scriptPath变量中尚未包含的任何子文件夹名称(如果适用)。

  • promptPath:在指定的值中,\Prompts\更改为保存预先录制的提示音频文件的文件夹名称。 包括任何子文件夹名称(如果适用)。

  • grammarPath:如果使用 ASR关闭 自动语音识别。 允许联系人通过语音、按键或两者结合的方式响应提示。,请将分配值中的\Grammars\更改为保存语法文件的文件夹的名称,并包含任何子文件夹名称(如果适用)。 如果不使用 ASR,则可以删除此变量。

如果需要,您可以修改这些变量名称。 但是,如果更改其他脚本中已使用的变量的名称,则必须更改脚本中旧名称的每个实例。 不要更改env的名称。

您可以进行的其他自定义包括:

  • 如果您在脚本中引用了其他文件夹,请按照现有变量的示例添加变量并相应地配置其值。

  • 在以下IF语句中,修改分配给env的默认值,以匹配开发阶段的顶级文件夹:

    
    IF env.length = 0
     {
      ASSIGN env = "DEV"
     }

设置入口脚本以启动多个 Scripts

您可以设置入口脚本来选择RUNSCRIPT作启动的脚本。 如果要对多个主脚本使用相同的入口脚本,这将非常有用。

要进行此设置,请将脚本逻辑添加到入口脚本中的SNIPPET,以定义如何选择适当的脚本。 以下示例使用以 SWITCHDNIS 作为决策条件的 关闭 呼入或呼出语音呼叫时所拨打的号码。 语句。 您可以使用任何受支持的脚本逻辑和条件来满足您组织的需求。 要自定义此代码,请确保每个nextScript变量的值为其条件定义适当的脚本。 包括带有双正斜杠 (//) 的注释,以提供每个脚本的说明。

SWITCH DNIS // choose the next script based on a DNIS
{
CASE 8885551234  {
	ASSIGN nextScript = "{scriptPath}MainGreeting1"
  }
CASE 8005552345
  {
    ASSIGN nextScript = "{scriptPath}MainGreeting2" 
  }
CASE 6145554567  {
    ASSIGN nextScript = "{scriptPath}MainGreeting3" 
  }
DEFAULT
  {
    ASSIGN nextScript = "{scriptPath}MainGreeting4" 
  }

在 Scripts 中使用路径变量

设置入口脚本后,您需要在其他脚本中使用其中定义的变量。

不要修改生产脚本。 尽可能始终使用脚本的开发版本。 在将脚本提升回生产环境之前测试所有更改。 直接更改生产脚本可能会导致无法为受影响的联络点关闭 呼入联系人用来发起交互的入口点,如电话号码或电子邮件地址。路由联系人。

  1. Studio中,浏览脚本并查找使用文件路径的实例。 路径可能会显示在属性配置、说明、变量值和代码片段中。 具体而言,请查看RUBSUBRUNSCRIPTSPAWNMUSICPLAYWHISPER等作,以及任何ASR或与文件相关的作。 您可以搜索包含某些作或标题中包含文件夹名称的脚本

  2. 将文件路径的相应部分替换为入口脚本中定义的相应变量。 例如,如果MENU作将 Sequence 属性配置为播放01MainGreetingMenu.wav,则应将其更改为 “{promptPath}01MainGreetingMenu.wav”。 下图显示了脚本中的几个示例。