Scripting met bestanden en mappen

U kunt werken met bestanden in Studio-scripts. Bestanden moeten aanwezig zijn op uw CXone Mpower-systeem. U kun de bestanden in CXone Mpower weergeven op de pagina Naar ACD-bestanden bladeren. Via deze pagina kunt u bestanden uploaden en downloaden. Je kunt ook bestanden uploaden en downloaden met behulp van Desktop Studio.

Er zijn acties waarmee u bestanden in uw CXone Mpowersysteemkunt verkennen:

Er zijn acties waarmee u bestanden kunt verzenden via e-mail of FTP/SFTP:

  • EMAILEMAIL: een e-mail verzenden met een bestandsbijlage.
  • EMAILEMAIL: (digitale scripts) een e-mail verzenden met een bestandsbijlage.
  • AttachAttach: bestanden toevoegen aan gegenereerde e-mails.
  • SendfileSendfile: bestanden verzenden via FTP of SFTP.

Er zijn acties waarmee u vooraf opgenomen audiobestanden of prompts in uw interacties kunt gebruiken:

  • MENU : Speelt een prompt of een vooraf opgenomen audiobestand af voor de contactpersoon en creëert een menu met opties waaruit hij of zij kan kiezen uit.
  • Play : Speelt aangepaste audio-WAV-bestanden of tekst-naar-spraak (TTSGesloten Hiermee kunt u teksten invoeren en door een computerstem laten uitspreken.)-prompts af. Als u een bestand gebruikt, wordt het hele bestand afgespeeld. Alleen het contact (de klant) kan het geluid horen.
  • Playlog : Speelt aangepaste WAV-audiobestanden af die alleen de contactpersoon kan horen. Hierbij kunt u een begin- en eindpunt instellen. Kan geen muziekbestanden afspelen die zijn geïntegreerd in andere acties, zoals Music.
  • Reqagent: Speelt aangepaste WAV-audiobestanden of tekst-naar-spraak-prompts af die alleen de agent hoort. De prompt wordt afgespeeld voordat de agent en het contact met elkaar zijn verbonden, zodat de prompt er niet toe leidt dat het contact niets hoort.
  • Whisper : Speelt aangepaste WAV-bestanden of tekst-naar-spraak-prompts af. U kunt instellen dat dit alleen hoorbaar is voor het contact, alleen voor de agent of voor beide. De prompt wordt afgespeeld nadat de agent en het contact met elkaar zijn verbonden, dus als de actie alleen voor de agent of het contact wordt afgespeeld, hoort de andere partij niets wanneer de prompt wordt afgespeeld.

Een laatste actie is de CONCATWAV actie, waarmee je twee WAV-bestanden kunt samenvoegen.

Bestandspaden

Wanneer u in uw scripts moet verwijzen naar bestandspaden, controleert u de helppagina voor de actie die u gebruikt. Sommige acties maken gebruik van absolute paden. Voor andere is een relatief pand vereist. Als op de helppagina geen informatie is vermeld en een type pad niet werkt in uw script, probeert u het andere type. Het verschil tussen absolute en relatieve paden is:

  • Absoluut pad: begint altijd in de hoofdmap. De locatie van het scriptbestand ten opzichte van het bestand of script waarnaar je verwijst, maakt niet uit. Gebruik een tilde en een backslash (~\) om de hoofdmap aan te geven. Bijvoorbeeld: ~\Map\bestand.wav.
  • Relatief pad: Beschrijft de locatie van het bestand waarnaar u verwijst, relatief ten opzichte van het scriptbestand, beginnend bij de locatie van het scriptbestand. Als het bestand zich in een submap in dezelfde map als het script bevindt, behandel de locatie van het script dan als de hoofdmap en neem de namen van de submappen op in uw pad. Als het script bijvoorbeeld in \\Map staat en file.wav in \\Map\\Subfolder1, dan schrijft u het pad als volgt: \\Subfolder1\\file.wav. Als het bestand zich buiten de map van het script bevindt of als een relatief pad niet werkt, gebruikt u een absoluut pad.

Het is een best practice in Studio om waar mogelijk absolute paden te gebruiken, zelfs waar relatieve paden ook worden ondersteund. Dit is vooral belangrijk wanneer je verwijst naar een bestand dat zich in een andere map bevindt. Deze beste werkwijze is van toepassing wanneer je in scripts naar bestanden verwijst, niet alleen tijdens ontwikkelingsworkflowfasen.

Bestandspadbeheer in Scripts

Scripts in Studio bestaan ​​zelden op zichzelf. Ze zijn doorgaans in meerdere mappen georganiseerd om hergebruik en aanpassing te vergemakkelijken. Andere bestanden die bij scripts worden gebruikt, zoals audio-aanwijzingen of ASRGesloten Automatische spraakherkenning. Hiermee kunnen contacten op vragen reageren door iets te zeggen, op telefoontoetsen te drukken, of beide.-grammaticabestanden, bevinden zich in aparte mappen. Als uw bedrijf de Studio ontwikkelingsworkflowfasengebruikt, beschikt u ook over fasegerelateerde mappen die gecontroleerde promotie mogelijk maken. Scripts verwijzen vaak naar andere scripts die zich in verschillende mappen bevinden; padbeheer is daarom essentieel voor een succesvolle scripting.

Je kunt variabele substitutie in bestandspaden gebruiken om een ​​consistente en betrouwbare manier te creëren voor het beheren van paden in je scripts. Dit zorgt ervoor dat verwijzingen naar andere scripts, audiofragmenten, ASR-grammatica's en andere bestanden nauwkeuriger zijn binnen uw scriptecosysteem.

Padbeheer maakt het mogelijk voor scripts om andere scripts te vinden en uit te voeren, of om andere bestanden te gebruiken, ongeacht de mapstructuur. Door variabele substitutie te gebruiken voor bestandspaden, worden paden op slechts een klein aantal plaatsen gedefinieerd. Als mappen of bestanden wijzigen, hoeft u het pad slechts op één plek bij te werken, in plaats van elke verwijzing naar het bestand te moeten opzoeken.

Variabele substitutie voor bestandspaden

Door gebruik te maken van variabele substitutie voor bestandspaden kunt u het volgende definiëren:

  • Het absolute pad naar mappen die scripts of bestanden bevatten waarnaar u in scripts verwijst. Wanneer u verwijst naar scripts of bestanden die zich in andere mappen bevinden, moet u een absoluut pad gebruiken.

  • Paden die automatisch worden bijgewerkt wanneer een script wordt gepromoveerd. Deze optie is alleen van toepassing als uw bedrijf gebruikmaakt van Studio ontwikkelingsworkflowfasen.

  • Padnamen naar mappen en bestanden op één locatie, of op een klein aantal locaties. Dit maakt het gemakkelijker wanneer je het pad moet bijwerken, omdat je weet waar de variabelen zijn aangemaakt.

Je kunt variabelen aanmaken om het pad naar elk type bestand waarnaar je verwijst op te slaan, zoals prompts, grammatica's, voicemails, andere scripts, enzovoort. Als een script bestanden in een map opslaat of eruit leest, kunt u ook variabelen voor die paden gebruiken.

Wanneer u naar een bestand moet verwijzen, gebruikt u de variabele in plaats van het pad. Maak bijvoorbeeld een variabele voor het pad naar uw promptbestanden en gebruik deze in actieGesloten Voert een proces uit binnen een Studio-script, zoals het verzamelen van klantgegevens of muziek af te spelen.-eigenschappen wanneer u een prompt opgeeft. Het zou er bijvoorbeeld zo uit kunnen zien: {promptPath}Greeting.wav.

Om het bijwerken van de padvariabelen te automatiseren, kunt u een SNIPPET actie gebruiken en code schrijven om te bepalen in welke map in de ontwikkelingsfase het script zich bevindt. Vervolgens kunt u het pad dienovereenkomstig bijwerken. De rest van deze Help-pagina beschrijft een voorbeeld van een fragment dat u kunt gebruiken als model in uw script.

Als uw organisatie meerdere scriptontwikkelaars heeft, werk dan samen aan een strategie voor het gebruik van variabele substitutie voor bestandspaden. Hiermee bespaart u tijd en weet u zeker dat iedereen weet welke variabelen ze moeten gebruiken.

Voorbeeld van substitutie van bestandspadvariabelen

Het voorbeeld van variabelevervanging voor bestandspaden is ingesteld als een invoerscript. Een invoerscript is het standaardscript dat is geconfigureerd in een contactpuntGesloten Het toegangspunt dat een inbound contact gebruikt om een interactie te starten, zoals een telefoonnummer of e-mailadres. (POC). In het voorbeeld wordt het opstartscript uitgevoerd, dat vervolgens een ander script aanroept dat de routering voor het kanaal verzorgt. Je kunt ook één invoerscript gebruiken als standaardscript voor meer dan één Contactpunt en het laten uitvoeren naar het juiste routeringsscript op basis van criteria zoals ACD vaardigheidGesloten Skills worden gebruikt om de aanlevering van interacties te automatiseren op basis van de vaardigheden, capaciteiten en kennis van de agent. of DNISGesloten Het nummer dat wordt gekozen voor inkomende of uitgaande spraakoproepen.. Het voordeel van het gebruiken van één invoerscript voor meerdere POC's is dat de kans op fouten afneemt, omdat de vervangingen van bestandspadvariabelen slechts op één plaats worden gedefinieerd.

Het voorbeeldscript bevat een actie BEGIN die is gekoppeld aan een actie SNIPPET en een actie RUNSCRIPT, zoals weergegeven in de volgende afbeelding.

De actie SNIPPET bevat code die de naam en het pad naar het script dat wordt uitgevoerd, bepaalt. Deze informatie wordt gebruikt om een absoluut pad te bouwen naar de mappen die scripts, prompts, enzovoort bevatten. U kunt uw eigen code schrijven of dit voorbeeld gebruiken:

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\"

Deze voorbeeldcode gebruikt een SELECT instructie met meerdere CASEs. Elke CASE vertegenwoordigt een van de systeemvariabelen die de huidige scriptnaam en het pad kunnen bevatten. Welke variabele in een bepaald script wordt gebruikt, hangt af van het type script. Het fragment:

  1. Vindt de systeemvariabele die het pad naar en de naam van het huidige script bevat. Om dit te doen:

    1. Evalueert elke CASE om te zien of de waarde van de opgegeven variabele een lengte heeft die groter is dan 0.
    2. Als dat het geval is, selecteert het fragment CASE en wijst de waarde van de variabele toe aan variabele normalizedScriptName.
  2. Bepaalt de naam van de map met de ontwikkelingsworkflowfase waarin het script zich bevindt. Om dit te doen:

    1. Gebruikt de split() functie om de waarde van normalizedScriptName te converteren naar een array met behulp van het backslash-teken (\) als scheidingsteken en wijst de geconverteerde waarde toe aan folderArray. Hiermee worden alle backslashes in het scriptpad vervangen door een pijpteken (|), waarmee het pad en de scriptnaam worden omgezet in een array. Als de waarde van normalizedScriptName bijvoorbeeld Prod\ScriptFolder3\ScriptExample1 is, wordt de waarde van folderArray Prod|ScriptFolder3|ScriptExample1.

    2. Maakt een variabele met de naam env om de naam van de map met de huidige ontwikkelingsworkflowfase vast te leggen. Het fragment vult env met de inhoud van het eerste array-element. Volgens het voorbeeld in de voorgaande stap zou env de waarde Prod hebben.

  3. Bouwt het pad naar de map van het huidige script en slaat het op in een variabele. De padwaarde bevat niet de naam van het script. Om dit te doen, het fragment:

    1. Gebruikt een FOR-lus om de waarde van elk element in folderArray toe te voegen aan een nieuwe variabele, folderPath, gescheiden door een backslash (\).

  4. Bevat een IF-instructie die controleert of variabele env is gevuld met een waarde (IF env.length = 0). Als dat niet het geval is, wordt dev er standaard op toegepast. Deze IF-instructie fungeert als reserve voor het geval er iets gebeurt tijdens de voorgaande IF-instructie en env niet wordt ingevuld.

    Het is belangrijk dat deze variabele een geschikte waarde heeft, omdat deze vaak wordt gebruikt in Studio-scripts om de omgeving te bepalen die wordt gebruikt in verschillende situaties waarin het script interactie heeft met een systeem dat mogelijk een sandbox- of ontwikkelversie en een productieversie heeft. Dit komt bijvoorbeeld vaak voor bij integraties met CRM'sGesloten Klantrelatiebeheer: externe systemen voor het beheren van contacten, verkoopkansen, supportdetails en cases.. U kunt de waarde aanpassen, zodat deze overeenkomt met de naam van de map met de ontwikkelingsfasen van uw organisatie.

  5. Definieert en vult variabelen om het absolute pad naar de locatie van de volgende mappen vast te houden op basis van de folderPath:

    • De mappen die de scripts bevatten die de actie RUNSCRIPT start, waarde:

      ASSIGN scriptPath = "~{folderPath}\"

    • De map die de prompts bevat die het/de daaropvolgende script(s) gebruikt:

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

    • De map die de grammaticabestanden bevat die het volgende script of de volgende scripts gebruiken:
      ASSIGN grammarPath = "~{folderPath}\Grammars\"

    U kunt extra variabelen maken om paden vast te leggen naar de locaties van andere bestanden die uw organisatie gebruikt, zoals voicemail.

Het voorafgaande fragment bouwt een absoluut pad. U kunt deze variabele gebruiken in elk volgend script dat een mappad in een fragment of een actie-eigenschapconfiguratie vereist. Als de actie die u gebruikt relatieve paden ondersteunt, kunt u ervoor kiezen om de variabele folderPath niet te gebruiken. De beste praktijk in Studio is echter om absolute paden te gebruiken waar mogelijk, zelfs waar relatieve paden ook worden ondersteund.

Pas invoerscriptfragment aan

Om ervoor te zorgen dat het scriptfragment met de voorbeeldinvoer met uw scripts werkt, moet u een aantal variabelen aanpassen:

  • scriptPath: Wijzig de waarde om eventuele submapnamen op te nemen die nog niet in de variabele scriptPath zijn opgenomen, indien van toepassing.

  • promptPath: Verander in de toegewezen waarde \Prompts\ naar de naam van de map waar uw vooraf opgenomen audiobestanden worden opgeslagen. Voeg indien van toepassing de namen van de submappen toe.

  • grammarPath: Als u ASRGesloten Automatische spraakherkenning. Hiermee kunnen contacten op vragen reageren door iets te zeggen, op telefoontoetsen te drukken, of beide. gebruikt, vervangt u \Grammars\ in de toegewezen waarde door de naam van de map waarin uw grammaticabestanden zijn opgeslagen. Voeg indien van toepassing ook de namen van submappen toe. Als u ASR niet gebruikt, kunt u deze variabele verwijderen.

U kunt deze variabelenamen indien gewenst wijzigen. Als u echter de namen wijzigt van variabelen die al in andere scripts zijn gebruikt, moet u alle exemplaren van de oude naam in uw scripts wijzigen. Verander de naam van env niet.

U kunt onder meer de volgende extra aanpassingen doorvoeren:

  • Als u in uw scripts naar andere mappen verwijst, voegt u variabelen toe en configureert u hun waarden op de juiste manier, volgens het voorbeeld van de bestaande variabelen.

  • Wijzig in de volgende IF-instructie de standaardwaarde die is toegewezen aan env, zodat deze overeenkomt met de hoofdmap voor uw ontwikkelingsfase:

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

Stel een invoerscript in om meerdere scripts te starten

U kunt een invoerscript instellen om te kiezen welk script de actie RUNSCRIPT start. Dit is handig als u hetzelfde invoerscript voor meerdere hoofdscripts wilt gebruiken.

Om dit in te stellen, voegt u scriptlogica toe aan de SNIPPET in het invoerscript die definieert hoe het juiste script wordt geselecteerd. In het volgende voorbeeld wordt een SWITCH-instructie gebruikt met DNISGesloten Het nummer dat wordt gekozen voor inkomende of uitgaande spraakoproepen. als besluitvormingscriterium. U kunt elke ondersteunde scriptlogica en criteria gebruiken om aan de behoeften van uw organisatie te voldoen. Om deze code aan te passen, moet u ervoor zorgen dat de waarde van elke variabele nextScript het juiste script voor de bijbehorende criteria definieert. Voeg opmerkingen toe met dubbele schuine strepen (//) om uitleg te geven over elk script.

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" 
  }

Padvariabelen gebruiken in scripts

Nadat u uw invoerscript hebt ingesteld, moet u de variabelen die erin zijn gedefinieerd, in uw andere scripts gebruiken.

Wijzig de productiescripts niet. Werk waar mogelijk altijd met de ontwikkelingsversie van een script. Test alle wijzigingen voordat u het script weer naar productie promoot. Als u wijzigingen rechtstreeks in productiescripts aanbrengt, kan het zijn dat contacten niet worden doorgestuurd naar het betreffende contactpuntGesloten Het toegangspunt dat een inbound contact gebruikt om een interactie te starten, zoals een telefoonnummer of e-mailadres..

  1. Ga in Studio door uw scripts en zoek naar gevallen waarin bestandspaden worden gebruikt. Paden kunnen voorkomen in eigenschapsconfiguraties, bijschriften, variabelewaarden en fragmentcode. Kijk in het bijzonder naar acties zoals RUBSUB, RUNSCRIPT, SPAWN, MUSIC, PLAY, WHISPER en alle ASR of bestandsgerelateerde acties. U kunt zoeken naar scripts die bepaalde acties bevatten of waarvan de mapnamen in de bijschriften voorkomen.

  2. Vervang het juiste deel van het bestandspad door de overeenkomstige variabele zoals gedefinieerd in uw invoerscript. Als een actie MENU bijvoorbeeld een eigenschap Sequence heeft die is geconfigureerd om 01MainGreetingMenu.wav af te spelen, wijzigt u deze in "{promptPath}01MainGreetingMenu.wav". De onderstaande afbeelding toont enkele voorbeelden hiervan in een script.