使用檔案和資料夾編寫指令碼

您可以在 Studio 指令碼中處理檔案。 檔案必須存在於您的 CXone Mpower 系統上。 您可以在瀏覽ACD檔案頁面上的 CXone Mpower 中檢視檔案。 您可以從該頁面上載和下載檔案。 您也可以使用 Desktop Studio上傳和下載檔案。

有一些動作可讓您探索CXone Mpower系統中的檔案:

有一些動作可以讓您透過電郵或 FTP/SFTP 傳送檔案:

有一些操作允許您在互動中使用預先錄製的音訊檔案或提示:

  • MENU :為聯絡人播放提示或預先錄製的音訊檔案,並建立選項選單供他們選擇。
  • Play :播放自訂音訊 WAV 檔案或文字轉語音 (TTS關閉 允許使用者將錄音的提示輸入為文字形式,並使用電腦產生的語音來講述內容。) 提示。 如果使用檔,則會播放整個檔。 只有聯絡人能聽到音訊。
  • Playlog :播放只有聯絡人才能聽到的自訂音訊 WAV 檔案。 它允許您選擇一個特定的開始和停止點。 不能播放內建在其他動作中的音樂檔案,如 Music
  • Reqagent: 播放只有客服專員才能聽到的自訂音訊 WAV 檔案或文字轉語音提示。 提示在客服專員和聯絡人連結之前播放,所以提示不會導致聯絡人聽到靜音。
  • Whisper :播放自訂 WAV 檔案或文字轉語音提示。 您可以把它設定為只有聯絡人可以聽到,只有客服專員可以聽到,或者兩者都可以聽到。 提示在客服專員和聯絡人連結後播放,所以如果該動作只為客服專員或聯絡人播放,另一方在提示期間聽到靜音。

最後一個動作是CONCATWAV 動作,它允許您連接兩個 WAV 檔案。

檔案路徑

當您需要在指令碼中參考檔案路徑時,請檢查您正在使用的動作的說明頁面。 某些動作使用絕對路徑。 其他動作需要相對路徑。 如果說明頁面並未指定,且其中一種路徑在您的指令碼中無法運作,請嘗試其他類型。 絕對路徑和相對路徑的差異是:

  • 絕對路徑:始終從根資料夾開始。 指令碼檔案相對於您所引用的檔案或指令碼的位置並不重要。 使用波浪號和反斜杠 (~\) 表示根資料夾。 例如,~\資料夾\file.wav。
  • 相對路徑:描述您所引用的檔案相對於指令碼檔案的位置,從指令碼檔案的位置開始。 如果檔案位於與指令碼位於同一資料夾中的子資料夾中,請將指令碼的位置視為根目錄,並在路徑中包含子資料夾名稱。 例如,如果腳本在 \資料夾 中,file.wav在 \資料夾\Subfolder1 中,則可以像這樣編寫路徑:\Subfolder1\file.wav。 如果檔案位於指令碼資料夾之外,或者相對路徑不起作用,請改用絕對路徑。

中,盡可能使用絕對路徑是一種最佳做法,即使也支持相對路徑Studio。 當引用位於另一個資料夾中的檔案時,這一點尤其重要。 此最佳實務適用於您在指令碼中引用檔案的任何時候,而不僅僅是在處理開發工作流程階段時。

指令碼中的檔案路徑管理

指令碼Studio很少孤立存在。 它們通常組織在多個資料夾中,以支援重複使用和自訂。 與指令碼一起使用的其他檔案,例如音訊提示或 ASR關閉 自動語音識別。 允許聯絡人透過說話、按下電話鍵或使用此兩種方式回應提示。 文法檔案,位於單獨的資料夾中。 如果您的公司使用Studio 開發工作流程階段,您也有允許受控升級的階段相關資料夾。 指令碼經常引用位於不同資料夾中的其他指令碼,路徑管理對於成功編寫指令碼是必要的。

您可以在檔案路徑中使用變數替換來建立一種一致、可靠的方式來管理指令碼中的路徑。 這有助於確保在整個指令碼生態系統中對其他指令碼、音訊提示、ASR 文法和其他檔案的引用更加準確。

路徑管理允許指令碼跨資料夾邊界尋找、執行其他指令碼或使用其他檔案。 透過對檔案路徑使用變數替換,您可以在少數位置定義路徑。 如果資料夾或檔案變更,您只需在一個地方更新路徑,而不必尋找檔案的每個參考。

變數 檔案路徑的取代

使用檔案路徑的變數替換可讓您定義:

  • 儲存您在指令碼中引用的指令碼或檔案的資料夾的絕對路徑。 當您引用位於其他資料夾中的指令碼或檔案時,必須使用絕對路徑。

  • 升級指令碼時自動更新的路徑。 僅當您的公司使用Studio開發工作流程階段時,此選項才適用。

  • 單個位置或少數位置的資料夾和檔案的路徑。 當您需要更新路徑時,這會變得更容易,因為您知道變數的建立位置。

您可以建立變數來保存您引用的每種檔案類型的路徑,例如提示、文法、語音郵件、其他指令碼等。 如果文稿將檔保存到資料夾或從資料夾中讀取檔,則也可以對這些路徑使用變數。

需要引用檔時,請使用變數代替路徑。 例如,為提示符檔的路徑創建一個變數,並在指定提示時在 action關閉 在Studio指令碼中執行一個流程,例如收集客戶資料或播放音樂。 屬性中使用它。 它可能類似於以下示例:{promptPath}Greeting.wav

要自動更新路徑變數,可以使用SNIPPET 操作並編寫代碼來確定腳本所在的開發階段資料夾,然後相應地更新路徑。 本幫助頁面的其餘部分描述了可在腳本中用作模型的 snippet 範例。

如果您的組織有多個指令碼開發人員,請共同制定對檔案路徑使用變數替換的策略。 這將節省時間並確保每個人都知道要使用哪些變數。

檔案路徑變數取代範例

檔案路徑的變數替換範例設置為入口腳本。 入口指令碼是在聯絡點關閉 呼入聯絡人用來發起互動的入口點,如電話號碼或電郵地址。 (POC) 中配置的預設指令碼。 在此範例中,入口指令碼執行到另一個執行通道路由的指令碼。 您也可以使用一個項目指令碼作為多個POC的預設指令碼,並根據 技能ACDDNIS關閉 用於基於客服專員技能、能力和知識的互動的自動化傳遞。等條件將其執行到適當的路由指令碼關閉 呼入或呼出語音電話撥打的號碼。。 對多個 POC 使用一個條目腳本的好處是,通過僅在一個位置定義檔路徑變數替換來減少出錯的機會。

示例入口腳本包含一個連接到BEGINSNIPPETRUNSCRIPT操作,如下圖所示。

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. 如果是這樣,則 snippet 會選擇該CASE並將變數的值分配給normalizedScriptName變數。
  2. 確定指令碼所在的開發工作流階段資料夾的名稱。 為此,它:

    1. 使用 split() functionnormalizedScriptName 的值轉換為使用反斜杠字元 (\) 作為分隔符的陣列,並將轉換后的值分配給folderArray。 這會將腳本路徑中的所有反斜杠替換為豎線字元 (|),這會將路徑和腳本名稱轉換為陣列。 例如,如果 normalizedScriptName 的值為 Prod\ScriptFolder3\ScriptExample1,則 folderArray 的值將變為 Prod|腳本資料夾3|腳本示例 1

    2. 創建一個名為 env 的變數來儲存當前開發工作流階段資料夾的名稱。 snippet 用第一個陣列元素的內容填充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\"

    您可以建立其他變數來儲存組織使用的其他檔案(如語音郵件)位置的路徑。

前面的代碼段構建一個絕對路徑。 您可以在任何需要 snippet 中的資料夾路徑或動作屬性配置的後續指令碼中使用此變數。 如果您使用的操作支援相對路徑,則可以選擇不使用 folderPath 變數。 但是,最佳做法是在可能的情況下使用絕對路徑,即使也支持相對路徑Studio

自訂 入口文稿程式碼片段

要允許範例入口指令碼 snippet 與您的指令碼一起使用,您需要自訂一些變數:

  • scriptPath:修改該值以包含 scriptPath 變數中尚未包含的任何子資料夾名稱(如果適用)。

  • promptPath:在分配的值中,將\Prompts\更改為保存預先錄製的提示音訊檔的資料夾的名稱。 包括任何子資料夾名稱(如果適用)。

  • grammarPath:如果使用 ASR關閉 自動語音識別。 允許聯絡人透過說話、按下電話鍵或使用此兩種方式回應提示。,請將分配值中的\Grammars\更改為保存文法檔的資料夾的名稱,如果適用,請包括任何子資料夾名稱。 如果不使用 ASR,可以刪除此變數。

如果需要,您可以修改這些變數名稱。 但是,如果更改已在其他腳本中使用的變數的名稱,則必須更改腳本中舊名稱的每個實例。 請勿變更env的名稱。

您可以進行的其他自訂包括:

  • 如果您有在指令碼中引用的其他資料夾,請按照現有變數的範例新增變數並適當配置其值。

  • 在以下 IF 語句中,修改分配給 env 的預設值,以符合開發階段的頂級資料夾:

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

設定入口指令碼以啟動多個Scripts

您可以設定入口指令碼來選擇 RUNSCRIPT 動作啟動的指令碼。 如果要對多個主腳本使用相同的入口腳本,這將非常有用。

要進行此設置,請將腳本邏輯添加到條目腳本中的SNIPPET,以定義如何選擇適當的腳本。 下面的示例使用 SWITCH 語句,其中 DNIS關閉 呼入或呼出語音電話撥打的號碼。 作為決策標準。 您可以使用任何受支援的腳本邏輯和條件來滿足組織的需求。 若要自定義此代碼,請確保每個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" 
  }

在指令碼中使用路徑變數

設置入口腳本后,需要在其他腳本中使用其中定義的變數。

不要修改生產腳本。 盡可能使用指令碼的開發版本。 在將腳本提升回生產環境之前測試所有更改。 直接對生產腳本進行更改可能會導致無法為受影響的聯絡點關閉 呼入聯絡人用來發起互動的入口點,如電話號碼或電郵地址。路由聯絡。

  1. Studio中,瀏覽文稿並查找使用檔案路徑的實例。 路徑可能會顯示在屬性配置、標題、變數值和代碼段中。 特別是,查看RUBSUBRUNSCRIPTSPAWNMUSICPLAYWHISPER等操作,以及任何 ASR檔相關操作。 您可以搜尋包含某些動作或其標題中包含資料夾名稱的指令碼

  2. 將檔案路徑的相應部分替換為入口指令碼中定義的相應變數。 例如,如果 MENU 動作將 Sequence 屬性配置為播放01MainGreetingMenu.wav,則可以將其更改為 “{promptPath}01MainGreetingMenu.wav”。 下圖顯示了腳本中的幾個範例。