Scripting con Archivos y Carpetas

Puede trabajar con archivos en scripts de Studio. Los Archivos deben existir en su sistema NiCE CXone. Puede ver los archivos en NiCE CXone en la página Explorar Archivos de ACD Puede cargar y descargar archivos desde esta página. You también puede cargar y descargar archivos mediante Desktop Studio.

Hay acciones que le permiten explorar los archivos en su sistema NiCE CXone:

  • Writefile: Guarda datos en un archivo en NiCE CXone.
  • Readfile: Lee datos de un archivo.
  • Filesize: Determina el tamaño de un archivo en bytes.
  • Fileinfo: Recupera información acerca de un archivo, como su ubicación y si ha sido modificado.
  • Fileexist: Determina si un archivo específico existe.
  • Borrar: Elimina los archivos de NiCE CXone.

Hay acciones que le permiten enviar archivos por correo electrónico o FTP/SFTP:

  • EMAIL: Envía un correo electrónico con un archivo adjunto.
  • EMAIL (Digital Scripts): Envía un correo electrónico con un archivo adjunto.
  • Adjuntar: Adjunta archivos a los correos electrónicos generados.
  • Sendfile: Envía archivos mediante FTP o sftp.

Hay acciones que le permiten usar archivos de audio o avisos pregrabados en sus interacciones:

  • MENU : Reproduce un mensaje o un archivo de audio pregrabado para el contacto y crea un menú de opciones para que elijan entre.
  • Play : Reproduce archivos WAV de audio personalizados o avisos de texto a voz (TTSClosed Allows users to enter recorded prompts as text and use a computer-generated voice to speak the content.). Si se utiliza un archivo, se reproduce el archivo completo. Solo el contacto puede escuchar el audio.
  • Playlog: Reproduce archivos de audio WAV personalizados que solo el contacto puede escuchar. Le permite seleccionar un punto específico de inicio y parada. No se pueden reproducir los archivos de música integrados en otras acciones, como Music.
  • Reqagent: Reproduce archivos WAV de audio personalizados o un mensaje de texto a voz que solo el agente escucha. El aviso se reproduce antes de que el agente y el contacto se vinculen, por lo que no genera un silencio al contacto.
  • susurrar: Reproduce archivos WAV personalizados o avisos de texto a voz. Puede configurarlo para que lo escuche solo el contacto, solo el agente o ambos. El aviso se reproduce después de que el agente y el contacto se vinculan, por lo que si la acción se reproduce solo para el agente o el contacto, la otra parte escucha un silencio que dura lo mismo que el aviso.

Una acción final es la CONCATWAV acción, que le permite concatenar DOs archivos WAV.

Se somete a su sistema a una carga excesiva cuando se cumplen estas condiciones:

  • Su unidad de negocio tiene más que ~15 llamadas simultáneas.
  • Los scripts que se están ejecutando contienen acciones relacionadas con archivos, como Writefile, Readfile y Fileexist.

Esto genera limitación de velocidad (throttling). Su unidad de negocio experimentará latencia en la ejecución de script y otras funciones, incluido el manejo de contactos y los cambios de estado, hasta que se complete el Backlog de procesos.

Rutas de archivos

Cuando necesite hacer referencia a rutas de archivos en sus Scripts, consulte la página de ayuda de la acción que está utilizando. Algunas acciones utilizan rutas absolutas.Otros requieren una ruta relativa. Si la página de ayuda no lo especifica y un tipo de ruta no funciona en su script, inténtelo con el otro tipo. La diferencia entre una ruta absoluta y una relativa es la siguiente:

  • Ruta absoluta: Siempre comienza en la carpeta raíz. No importa dónde esté ubicado el archivo de script en relación con el archivo o script al que se hace referencia. Use una tilde y una barra invertida (~\) para indicar la carpeta raíz. Por ejemplo, ~\carpeta\archivo.wav.
  • Ruta relativa: Describe la ubicación del archivo al que se refiere en relación con el archivo de script, comenzando desde la ubicación del archivo de script. Si el archivo se encuentra en una subcarpeta dentro de la misma carpeta que el script, trate la ubicación del script como la raíz e incluya los nombres de las subcarpetas en su ruta. Por ejemplo, si el script está en \Folder, y file.wav está en \Folder\Subfolder1, escribiría la ruta de esta manera: \Subfolder1\file.wav. Si el archivo está fuera de la carpeta del script, o si una ruta relativa no funciona, use una ruta absoluta en su lugar.

Es una práctica recomendada en Studio usar rutas absolutas cuando sea posible, aun cuando también se admitan rutas relativas. Esto es especialmente importante al hacer referencia a un archivo que se encuentra en otra carpeta. Esta práctica recomendada aplica siempre que haga referencia a archivos en Scripts, no solo al trabajar con las etapas del flujo de trabajo de desarrollo.

Gestión del camino del archivo en Scripts

Los Scripts en Studio rara vez existen de forma aislada. Por lo general, se organizan en varias carpetas para admitir la reutilización y la personalización. otros archivos que se usan con los Scripts, como los avisos de audio o los archivos de gramática de ASRClosed Automatic Speech Recognition. Allows contacts to respond to prompts by speaking, pressing phone keys, or both., se encuentran en carpetas separadas. Si su empresa usa las etapas del flujo de trabajo de desarrollo de Studio, también cuenta con carpetas relacionadas con las etapas que permiten una promoción controlada. Los Scripts hacen referencia con frecuencia a otros Scripts ubicados en carpetas diferentes, por lo que la gestión de rutas es necesaria para lograr una creación de Scripts con éxito.

Puede usar la sustitución de variables en las rutas de archivo para crear una forma consistente y confiable de administrar las rutas en sus scripts. Esto ayuda a garantizar que las referencias a otros scripts, avisos de audio, gramáticas de ASR y otros archivos sean más precisas en todo su ecosistema de scripts.

La gestión de rutas permite que los scripts encuentren y ejecuten otros scripts o usen otros archivos a través de los límites de las carpetas. Al utilizar la sustitución de variables para las rutas de archivos, usted tiene rutas definidas en una cantidad reducida de lugares. Si las carpetas o los archivos cambian, solo necesita actualizar la ruta en un lugar, en lugar de tener que buscar cada referencia al archivo.

Sustitución de variables para Rutas de archivo

Usar la sustitución de variables para las rutas de archivo le permite definir:

  • La ruta absoluta a las carpetas que contienen scripts o archivos a los que hace referencia en scripts. Cuando haga referencia a scripts o archivos ubicados en otras carpetas, debe usar una ruta absoluta.

  • Rutas que se actualizan automáticamente cuando se promueve un script. Esta opción se aplica solo si la compañía utiliza las Studio etapas de flujo de trabajo de desarrollo.

  • Rutas a carpetas y archivos en una sola ubicación, o en una pequeña cantidad de ubicaciones. Esto facilita la tarea cuando necesita actualizar la ruta, ya que sabe dónde se crearon las variables.

Puede crear variables para contener la ruta de cada tipo de archivo que referencia, como avisos, gramáticas, correos de voz, otros scripts, y así sucesivamente. Si un script guarda archivos en una carpeta o los lee desde ella, también puede usar variables para esas rutas.

Cuando necesite hacer referencia a un archivo, use la variable en lugar de la ruta. Por ejemplo, cree una variable para la ruta de sus archivos de aviso y utilícela en las propiedades de acciónClosed Performs a process within a Studio script, such as collecting customer data or playing music. cuando especifique un aviso. Podría verse como en el siguiente ejemplo: {promptPath}Saludo.wav.

Para automatizar la actualización de las variables de ruta, puede utilizar una SNIPPET action y escribir código para determinar en qué carpeta de etapa del desarrollo se encuentra el script, y luego actualizar la ruta en consecuencia. El resto de esta página de ayuda describe un ejemplo de un snippet que puede utilizar como modelo en sus scripts.

Si su organización cuenta con múltiple desarrolladores de script, trabajen en conjunto para desarrollar una estrategia para el uso de la sustitución de variables en las rutas de archivos. Esto ahorrará tiempo y garantizará que todos sepan qué variables utilizar.

Ejemplo de sustitución de variables de camino del archivo

El ejemplo de la sustitución de variable para caminos del archivo está configurado como un script de entrada. Un script de entrada es el script predeterminado configurado en un Punto de contactoClosed The entry point that an inbound contact uses to initiate an interaction, such as a phone number or email address. (POC). En el ejemplo, el script de entrada se ejecuta hacia otro script que realiza el enrutamiento para el canal. También podría usar un script de entrada como el script predeterminado para más que un POC y hacer que se ejecute hacia el script de enrutamiento adecuado según criterios tales como ACD habilidadClosed Used to automate delivery of interactions based on agent skills, abilities, and knowledge. o DNISClosed The number dialed on inbound or outbound voice calls.. El beneficio de usar un script de entrada para múltiples POC es reducir las posibilidades de errores al tener las sustituciones de variable de camino del archivo definidas en un solo lugar.

El script de entrada de ejemplo contiene una acción BEGIN conectada a una SNIPPET y una acción RUNSCRIPT, como se muestra en la siguiente imagen.

La acción SNIPPET contiene código que determina el nombre y la ruta del script que se está ejecutando. Esta información se utiliza para compilar una ruta absoluta a las carpetas que contienen los scripts, avisos, etc. Puede escribir su propio código o usar este ejemplo:

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

Este código de ejemplo utiliza una statement SELECT con varios CASEs. Cada CASE representa una de las variables del sistema que pueden contener el nombre y la ruta del script actual. La variable utilizada en un script en particular depende del tipo de script. El snippet:

  1. Encuentra la Variable del sistema que contiene la ruta y el nombre del script actual. Para esto, realiza lo siguiente:

    1. Evalúa cada CASE para ver si la longitud del valor de la variable especificada es mayor que 0.
    2. Si es así, el snippet selecciona ese CASE y asigna el valor de la variable a la variable normalizedScriptName.
  2. Determina el nombre de la carpeta de la etapa del Workflow de desarrollo donde se encuentra el script. Para ello:

    1. Utiliza la split() función para convertir el valor de normalizedScriptName en una matriz utilizando el carácter de barra invertida (\) como delimitador y asigna el valor convertido a folderArray. Esto reemplaza todas las barras invertidas en la ruta del script por un carácter de barra vertical (|), lo que convierte la ruta y el nombre del script en una matriz. Por ejemplo, si el valor de normalizedScriptName es Prod\ScriptFolder3\ScriptExample1, el valor de folderArray se convierte en Prod|ScriptFolder3|ScriptExample1.

    2. Crea una variable llamada env para almacenar el nombre de la carpeta de la etapa actual del flujo de trabajo de desarrollo. El fragmento llena env con el contenido del primer elemento de la matriz. Siguiendo el ejemplo del paso anterior, env tendría un valor de Prod.

  3. Construye la ruta a la carpeta del script actual y la almacena en una Variable. El valor de la ruta no incluye el nombre del script. Para hacer esto, el Snippet:

    1. Usa un bucle FOR para agregar el valor de cada elemento en folderArray a una nueva variable, folderPath, separados por una barra invertida (\).

  4. Contiene una declaración IF que verifica que la variable env esté completa con un valor (IF env.length = 0). Si no lo está, le aplica dev como valor predeterminado. Esta declaración IF actúa como respaldo en caso de que ocurra algo durante la declaración IF anterior y env no esté completa.

    Es importante que esta variable tenga un valor adecuado, ya que se utiliza comúnmente en Studio Scripts para determinar el entorno que se está usando en diversas situaciones en las que el script interactúa con un sistema que podría tener una versión de salvadera o de desarrollo y una versión de producción. Por ejemplo, esto es común en las integraciones con CRMsClosed Third-party systems that manage such things as contacts, sales information, support details, and case histories.. Puede modificar el valor para que coincida con el nombre de la carpeta de etapa del desarrollo de su organización.

  5. Define y rellena variables para contener la ruta absoluta a la ubicación de las siguientes carpetas según el folderPath:

    • Las carpetas que contienen los Scripts que inicia la acción RUNSCRIPT, valor:

      ASSIGN scriptPath = "~{folderPath}\"

    • La carpeta que contiene los avisos que utilizan el script o los scripts subsiguientes:

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

    • El carpeta que contiene los archivos de gramática que utilizan los Scripts posteriores:
      ASSIGN grammarPath = "~{folderPath}\Grammars\"

    Puede crear variables adicionales para contener rutas a las ubicaciones de otros archivos que su organización utiliza, como mensaje de voz.

El Snippet anterior crea una ruta absoluta. Puede usar esta variable en cualquier script posterior que requiera una ruta de carpeta en un Snippet o en una configuración de propiedad de acción. Si la acción que está usando admite rutas relativas, puede optar por no usar la variable folderPath. Sin embargo, la mejor práctica en Studio es usar rutas absolutas cuando sea posible, incluso cuando también se admitan rutas relativas.

Personalizar Snippet de script de entrada

Para permitir que el snippet de script de entrada de ejemplo funcione con sus scripts, debe personalizar algunas de las variables:

  • scriptPath: Modifique el valor para incluir cualquier nombre de subcarpeta que no esté ya incluido en la variable scriptPath, si es aplicable.

  • promptPath: En el valor asignado, cambie \Avisos\ por el nombre de la carpeta donde se guardan los archivos de audio de avisos pregrabados. Incluya los nombres de las subcarpetas, si es aplicable.

  • grammarPath: Si usa ASRClosed Automatic Speech Recognition. Allows contacts to respond to prompts by speaking, pressing phone keys, or both., cambie \Gramáticas\ en el valor asignado por el nombre de la carpeta donde se guardan sus archivos de Gramática, incluya los nombres de subcarpetas, si es aplicable. Si no usa ASR, puede eliminar esta variable.

Puede modificar estos nombres DE variables si lo desea. Sin embargo, si cambia los nombres DE variables que ya se han usado en otros scripts, debe cambiar cada instancia del nombre anterior en sus scripts. No cambie el nombre de env.

Las personalizaciones adicionales que puede realizar incluyen las siguientes:

  • Si tiene otras carpetas a las que hace referencia en sus Scripts, agregue variables y configure sus valores de manera adecuada, siguiendo el ejemplo de las variables existentes.

  • En la siguiente instrucción IF, modifique el valor predeterminado asignado a env para que coincida con la carpeta de nivel superior de su etapa del desarrollo:

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

Configurar un Script de entrada para el lanzamiento de varios Scripts

Puede configurar un script de entrada para elegir qué script inicia la acción RUNSCRIPT. Esto es útil si desea usar el mismo script de entrada para varios scripts principales.

Para configurar esto, agregue lógica de scripting al SNIPPET en el script de entrada que define cómo se selecciona el script correspondiente. El siguiente ejemplo usa una declaración SWITCH con DNISClosed The number dialed on inbound or outbound voice calls. como el criterio de toma de decisiones. Puede usar cualquier lógica de scripting y criterios admitidos para satisfacer las necesidades de su organización. Para personalizar este código, asegúrese de que el valor de cada variable nextScript defina el script correspondiente para sus criterios. Incluya comentarios con barras diagonales dobles (//) para proporcionar explicaciones de cada 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" 
  }

Use PATH variables en Scripts

Después de configurar el script de entrada, debe utilizar las variables definidas en este en sus otros scripts.

No modifique los scripts de producción. Trabaje siempre con la versión de desarrollo de un script cuando sea posible. Pruebe todos los cambios antes de promover el script nuevamente a producción. Realizar cambios directamente en los scripts de producción puede provocar que los contactos no se enruten para el punto de contactoClosed The entry point that an inbound contact uses to initiate an interaction, such as a phone number or email address. afectado.

  1. En Studio, revise sus scripts y busque instancias donde se utilicen rutas de archivo. Las Rutas pueden aparecer en configuraciones de propiedades, subtítulos, valores de variables y código de snippet. En particular, revise acciones como RUBSUB, RUNSCRIPT, SPAWN, MUSIC, PLAY, WHISPER, y cualquiera de las acciones de ASR o las acciones relacionadas con archivos. Puede buscar scripts que contengan ciertas acciones o que tengan nombres de carpetas en sus subtítulos.

  2. Reemplace la parte correspondiente del camino del archivo con la variable correspondiente según se haya definido en su entry script. Por ejemplo, si una acción MENU tiene una propiedad Secuencia configurada para reproducir 01MainGreetingMenu.wav, debería cambiarla a "{promptPath}01MainGreetingMenu.wav". La siguiente imagen muestra varios ejemplos de esto en un script.