파일과 폴더를 이용한 스크립팅

Studio 스크립트에서 파일에 대한 작업을 수행할 수 있습니다. 파일은 CXone Mpower 시스템에 있어야 합니다. CXone Mpower의 파일은 ACD파일 찾아보기 페이지에서 확인할 수 있습니다. 이 페이지에서 파일을 업로드, 삭제할 수 있습니다. 또한 파일을 업로드하고 다운로드할 수 있습니다.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입니다. 이는 특히 다른 폴더에 있는 파일을 참조할 때 더욱 중요합니다. 이 모범 사례는 개발 워크플로 단계뿐만 아니라 스크립트에서 파일을 참조하는 모든 경우에 적용됩니다.

스크립트에서의 파일 경로 관리

Studio의 스크립트는 드물게 단독으로 존재합니다. 일반적으로 재사용 및 맞춤 설정을 지원하기 위해 여러 폴더에 걸쳐 정리됩니다. 오디오 프롬프트나 ASR닫힘 자동 음성 인식. 컨택이 프롬프트에 음성으로 응답하거나, 전화 키를 누르거나, 두 가지 모두를 사용할 수 있습니다. 문법 파일과 같이 스크립트와 함께 사용되는 다른 파일은 별도의 폴더에 있습니다. 귀사가 Studio 개발 워크플로 단계를 사용하는 경우 제어된 프로모션을 허용하는 단계 관련 폴더도 있습니다. 스크립트는 종종 다른 폴더에 있는 다른 스크립트를 참조하므로 성공적인 스크립팅을 위해서는 경로 관리가 필수적입니다.

스크립트에서 경로를 관리하는 일관되고 신뢰할 수 있는 방법을 만들려면 파일 경로에서 변수 대체를 사용할 수 있습니다. 이렇게 하면 스크립트 생태계 전반에서 다른 스크립트, 오디오 프롬프트, ASR 문법 및 기타 파일에 대한 참조가 더욱 정확해집니다.

경로 관리를 통해 스크립트는 폴더 경계를 넘어 다른 스크립트를 찾아 실행하거나 다른 파일을 사용할 수 있습니다. 파일 경로에 변수 치환을 사용하면 경로를 정의하는 위치의 수를 줄일 수 있습니다. 폴더나 파일이 변경될 경우, 파일에 대한 모든 참조를 찾아 업데이트할 필요 없이 한 곳에서만 경로만 업데이트하면 됩니다.

파일 경로에 대한 변수 대체

파일 경로에 변수 치환을 사용하면 다음과 같이 정의할 수 있습니다.

  • 스크립트에서 참조하는 스크립트 또는 파일이 저장된 폴더의 절대 경로입니다. 다른 폴더에 있는 스크립트나 파일을 참조할 때는 절대 경로를 사용해야 합니다.

  • 스크립트가 승격될 때 자동으로 업데이트되는 경로입니다. 이 옵션은 귀사가 Studio 개발 워크플로 단계를 사용하는 경우에만 적용됩니다.

  • 단일 위치 또는 소수의 위치에 있는 폴더 및 파일의 경로입니다. 이렇게 하면 변수가 어디에서 생성되었는지 알 수 있으므로 경로를 업데이트해야 할 때 더 쉬워집니다.

프롬프트, 문법, 음성 메일, 기타 스크립트 등 참조하는 각 파일 유형의 경로를 저장하는 변수를 만들 수 있습니다. 스크립트가 폴더에 파일을 저장하거나 폴더에서 파일을 읽는 경우 해당 경로에도 변수를 사용할 수 있습니다.

파일을 참조해야 하는 경우 경로 대신 변수를 사용하세요. 예를 들어, 프롬프트 파일의 경로에 대한 변수를 만들고 프롬프트를 지정할 때 action닫힘 고객 데이터를 수집하거나 음악을 재생하는 것처럼 Studio 스크립트 내에서 프로세스를 수행합니다. 속성에서 이를 사용합니다. 다음 예와 유사할 수 있습니다: {promptPath}Greeting.wav.

경로 변수 업데이트를 자동화하려면 SNIPPET 작업을 사용하고 스크립트가 어떤 개발 단계 폴더에 있는지 확인하는 코드를 작성한 다음, 그에 따라 경로를 업데이트할 수 있습니다. 이 도움말 페이지의 나머지 부분에서는 스크립팅의 모델로 사용할 수 있는 스니펫의 예를 설명합니다.

조직에 스크립트 개발자가 여러 명 있다면, 파일 경로에 변수 치환을 사용하는 전략을 함께 개발하십시오. 이렇게 하면 시간을 절약할 수 있고 모든 사람이 어떤 변수를 사용해야 하는지 알 수 있습니다.

파일 경로 변수 대체 예제

파일 경로에 대한 변수 대체의 예는 입력 스크립트로 설정되었습니다. 입력 스크립트는 연락처닫힘 인바운드 컨택이 인터랙션을 개시하는 데 사용되는 진입점(예: 전화번호, 이메일 주소)입니다.(POC)에 구성된 기본 스크립트입니다. 이 예시에서 진입 스크립트는 채널에 대한 라우팅을 수행하는 다른 스크립트를 실행합니다. 또한 여러 POC에 대한 기본 스크립트로 하나의 항목 스크립트를 사용하고 기준에 따라 적절한 라우팅 스크립트로 실행되도록 할 수도 있습니다, 예를 들어 ACD 스킬닫힘 상담원 스킬, 능력 및 지식에 기반한 인터랙션의 전달을 자동화하는 데 사용됩니다. 또는 DNIS닫힘 인바운드 또는 아웃바운드 음성 통화에서 걸려왔거나 걸려 나간 번호.. 여러 POC에 하나의 입력 스크립트를 사용하면 파일 경로 변수 대체를 한 곳에서만 정의하여 오류 가능성을 줄일 수 있다는 이점이 있습니다.

다음 이미지에 표시된 것처럼 예제 항목 스크립트에는 BEGIN 작업에 연결된 SNIPPETRUNSCRIPT 작업이 포함되어 있습니다.

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. 지정된 변수의 값의 길이가 0보다 큰지 확인하기 위해 각 CASE을 평가합니다.
    2. 그렇다면 스니펫은 CASE를 선택하고 변수 값을 normalizedScriptName 변수에 할당합니다.
  2. 스크립트가 있는 개발 워크플로 단계 폴더의 이름을 결정합니다. 이를 위해서는 다음을 수행해야 합니다.

    1. split() 함수를  사용하여 백슬래시 문자()를 구분 기호로 normalizedScriptName의 값을 배열로 변환하고 변환된 값을 \에 할당합니다folderArray. 이는 스크립트 경로의 모든 백슬래시를 파이프 문자(|)로 바꾸고 경로와 스크립트 이름을 배열로 변환합니다. 예를 들어, normalizedScriptName의 값이 Prod\ScriptFolder3\ScriptExample1이면 folderArray의 값은 Prod|ScriptFolder3|ScriptExample1이 됩니다.

    2. 현재 개발 워크플로 단계 폴더의 이름을 보관하기 위해 env라는 변수를 생성합니다. 스니펫은 첫 번째 배열 요소의 내용으로 env를 채웁니다. 이전 단계의 예를 따르면 envProd 값을 갖습니다.

  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.

사용자 지정 항목 스크립트 Snippet

예제 항목 스크립트 조각이 스크립트와 함께 작동하도록 하려면 일부 변수를 사용자 지정해야 합니다.

원하는 경우 이러한 변수 이름을 수정할 수 있습니다. 하지만 다른 스크립트에서 이미 사용된 변수의 이름을 변경하는 경우 스크립트에서 이전 이름이 나타나는 모든 경우를 변경해야 합니다. env의 이름을 변경하지 마세요.

추가로 사용자 정의할 수 있는 내용은 다음과 같습니다.

  • 스크립트에서 참조하는 다른 폴더가 있는 경우 기존 변수의 예를 따라 변수를 추가하고 해당 값을 적절히 구성합니다.

  • 다음 IF 문에서 개발 단계의 최상위 폴더와 일치하도록 env에 할당된 기본값을 수정합니다.

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

여러 스크립트를 시작하기 위한 엔트리 스크립트 설정

RUNSCRIPT 작업이 어떤 스크립트를 시작할지 선택하기 위해 항목 스크립트를 설정할 수 있습니다. 여러 개의 주요 스크립트에 동일한 항목 스크립트를 사용하려는 경우 이 기능이 유용합니다.

이를 설정하려면 적절한 스크립트가 선택되는 방식을 정의하는 항목 스크립트의 SNIPPET에 스크립팅 논리를 추가합니다. 다음 예에서는 DNIS를 SWITCH 의사 결정 기준으로 사용하는 닫힘 인바운드 또는 아웃바운드 음성 통화에서 걸려왔거나 걸려 나간 번호. 문을 사용합니다. 조직의 요구 사항에 맞게 지원되는 스크립팅 논리와 기준을 사용할 수 있습니다. 이 코드를 사용자 지정하려면 각 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에서 스크립트를 살펴보고 파일 경로가 사용된 인스턴스를 찾아보세요. 경로는 속성 구성, 캡션, 변수 값 및 스니펫 코드에 표시될 수 있습니다. 특히 RUBSUB, RUNSCRIPT, SPAWN, MUSIC, PLAY, WHISPERASR 또는 파일 관련 작업과 같은 작업을 살펴보세요. 특정 작업이 포함되어 있거나 캡션에 폴더 이름이 있는 스크립트를  검색할 수 있습니다.

  2. 파일 경로의 적절한 부분을 입력 스크립트에 정의된 해당 변수로 바꾸세요. 예를 들어, MENU 작업에 01MainGreetingMenu.wav를Sequence 재생하도록 구성된  속성이 있는 경우 이를 "{promptPath}"01MainGreetingMenu.wav로 변경합니다. 다음 이미지는 스크립트에서 이에 대한 몇 가지 예를 보여줍니다.