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. También puede cargar y descargar archivos usando Desktop Studio.

Hay acciones que le permiten explorar archivos en su NiCE CXonesistema:

  • 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 sobre un archivo, como su ubicación y si ha sido modificado.
  • Fileexist: Determina si existe un archivo específico.
  • Delete: Elimina 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 (scripts de Digital): Envía un correo electrónico con un archivo adjunto.
  • Attach: Adjunta archivos a correos electrónicos generados.
  • Sendfile: Envía archivos mediante FTP o sftp.

Hay acciones que le permiten usar archivos de audio pregrabados o avisos 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 ellas.
  • Play : Reproduce archivos de audio WAV personalizados o avisos de texto a voz (TTSClosed Permite a los usuarios ingresar avisos grabados como texto y utilizar una voz generada por computadora para reproducir el contenido.). Si se usa 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 que están 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 última acción 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 de ~15 llamadas simultáneas.
  • Los scripts que se están ejecutando contienen acciones relacionadas con archivos, como Writefile, Readfile y Fileexist.

Esto tiene como resultado estrangulamiento. Su unidad de negocio tendrá latencia en la ejecución de scripts y otras funciones, incluido el manejo de contactos y los cambios de estado, hasta que se completen los procesos pendientes.

Rutas de archivo

Cuando necesite hacer referencia a rutas de archivo en sus scripts, consulte la página de ayuda de la acción que está utilizando. Algunas acciones usan rutas absolutas. Otras requieren una ruta relativa. Si la página de ayuda no especifica cuál y un tipo de ruta no funciona en su script, pruebe 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 se encuentre el archivo de script en relación con el archivo o script al que hace referencia. Use una tilde y una barra invertida (~\) para indicar la carpeta raíz. Por ejemplo, ~\Folder\file.wav.
  • Ruta relativa: Describe la ubicación del archivo al que hace referencia 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 la siguiente 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 siempre que sea posible, incluso cuando también se admitan rutas relativas. Esto es especialmente importante al hacer referencia a un archivo ubicado en otra carpeta. Esta práctica recomendada se aplica cada vez que haga referencia a archivos en scripts, no solo cuando trabaje 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 múltiples carpetas para facilitar la reutilización y la personalización. otros archivos utilizados con los Scripts, como los avisos de audio o los archivos de gramática de ASRClosed Reconocimiento automático de Voz. Permite a los contactos responder a los avisos hablando, presionando teclas del teléfono o ambas opciones., se encuentran en carpetas separadas. Si su empresa utiliza las etapas del flujo de trabajo de desarrollo de Studio, también tiene 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 rutas de archivo para crear una manera coherente y confiable de gestionar 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 archivo, tiene las rutas definidas en una pequeña cantidad 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

El uso de 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 los scripts. Cuando hace referencia a scripts o archivos ubicados en otras carpetas, debe usar una ruta absoluta.

  • Rutas que se actualizan automáticamente cuando se promociona un script. Esta opción se aplica solo si su empresa utiliza las etapas del flujo de trabajo de desarrollo de Studio.

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

Puede crear variables para contener la ruta de cada tipo de archivo al que hace referencia, como avisos, gramáticas, mensajes de voz, otros scripts, etcétera. Si un script guarda archivos en una carpeta o los lee de 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 avisos y úsela en las propiedades de la acciónClosed Realiza un proceso dentro de un script de Studio, como recopilar datos del cliente o reproducir música. cuando especifique un aviso. Podría verse como el siguiente ejemplo: {promptPath}Greeting.wav.

Para automatizar la actualización de las variables de ruta, puede usar una acción SNIPPET acción 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 snippet que puede usar como modelo en su scripting.

Si su organización tiene múltiples desarrolladores de scripts, trabajen juntos para desarrollar una estrategia para usar la sustitución de variables para las rutas de archivo. Esto ahorrará tiempo y garantizará que todos sepan qué variables usar.

Ejemplo de sustitución de variables de Ruta de archivo

El ejemplo de sustitución de variables para rutas de archivo está configurado como un script de entrada. Un script de entrada es el script predeterminado configurado en un punto de contactoClosed punto de entrada que utiliza un contacto entrante para iniciar una interacción, como un número de teléfono o una dirección de correo electrónico. (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 de un POC y hacer que se ejecute hacia el script de enrutamiento adecuado según criterios como ACD habilidadClosed Se usa para automatizar la entrega de interacciones según las habilidades, capacidades y conocimientos del agente. o DNISClosed El número marcado en llamadas de voz entrantes o salientes.. El beneficio de usar un solo script de entrada para múltiples POC es reducir las posibilidades de errores al tener las sustituciones de variables de ruta de 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 usa para crear 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 usa una SELECT declaración con varios CASEs. Cada CASE representa una de las variables del sistema que puede 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. Busca la variable del sistema que contiene la ruta y el nombre del script actual. Para hacer esto:

    1. Evalúa cada CASE para ver si el valor de la variable especificada tiene una longitud 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 etapa del flujo de trabajo de desarrollo donde se encuentra el script. Para hacer esto:

    1. Usa la función split() función para convertir el valor de normalizedScriptName en una matriz usando 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 contener el nombre de la carpeta de etapa del flujo de trabajo de desarrollo actual. El snippet completa env con el contenido del primer elemento de la matriz. Siguiendo el ejemplo del paso anterior, env tendría un valor de Prod.

  3. Crea 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 de folderArray a una nueva variable, folderPath, separados por una barra invertida (\).

  4. Contiene una declaración IF que verifica que la variable env esté completada 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é completada.

    Es importante que esta variable tenga un valor adecuado, ya que se utiliza comúnmente en scripts de Studio para determinar el entorno que se está usando en una variedad de 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 integraciones con CRMClosed sistemas de Terceros que administran cosas como contactos, información de ventas, detalles de soporte e historiales de casos.. Puede modificar el valor para que coincida con el nombre de la carpeta de la 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 la acción RUNSCRIPT inicia, valor:

      ASSIGN scriptPath = "~{folderPath}\"

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

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

    • La carpeta que contiene los archivos de gramática que utilizan el script o los scripts posteriores:
      ASSIGN grammarPath = "~{folderPath}\Grammars\"

    Puede crear variables adicionales para contener rutas a las ubicaciones de otros archivos que utiliza su organización, como el 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á utilizando admite rutas relativas, puede optar por no usar la variable folderPath. Sin embargo, la mejor práctica en Studio es usar rutas absolutas siempre que 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:

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

Las personalizaciones adicionales que puede realizar incluyen:

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

  • En la siguiente declaració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 lanza 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 defina cómo se selecciona el script correspondiente. El siguiente ejemplo utiliza una declaración SWITCH con DNISClosed El número marcado en llamadas de voz entrantes o salientes. como criterio de toma de decisiones. Puede usar cualquier lógica y criterios de scripting compatibles 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 su criterio. Incluya comentarios con dobles barras diagonales (//) 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" 

  }

Usar variables de Ruta en Scripts

Después de configurar su script de entrada, debe usar las variables definidas en él 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 de nuevo 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 punto de entrada que utiliza un contacto entrante para iniciar una interacción, como un número de teléfono o una dirección de correo electrónico. afectado.

  1. En Studio, revise sus scripts y busque instancias donde se utilicen rutas de archivos. 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 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 de la ruta del archivo con la variable correspondiente según lo definido en su script de entrada. Por ejemplo, si una acción de Menú tiene una propiedad de Secuencia configurada para reproducir 01MainGreetingMenu.wav, la cambiaría a "{promptPath}01MainGreetingMenu.wav". La siguiente imagen muestra varios ejemplos de esto en un script.