Script con etapas del flujo de trabajo de desarrollo

El contenido de esta página es para un producto o función en versión controlada (CR). Si no forma parte del grupo CR y desea obtener más información, comuníquese con suRepresentante de cuenta.

A menos que se indique lo contrario, la información de esta página de ayuda no se aplica a Desktop Studio. Para proteger la seguridad de los scripts en las diversas etapas, las carpetas asignadas a las etapas del flujo de trabajo de desarrollo no están visibles en Desktop Studio.

Las etapas del flujo de trabajo de desarrollo afectan algunos aspectos de la creación de scripts:

  • A medida que los scripts se mueven de una carpeta a otra a través del ciclo de vida de desarrollo, las rutas de archivos a las que se hace referencia en los scripts pueden verse afectadas. Se hace referencia a las rutas de archivo cuando se especifica la ubicación de un archivo, como un mensaje de solicitud, un archivo de gramática o una ubicación para almacenar archivos guardados.
  • Cuando un script pasa a la siguiente etapa o se copia a una etapa inferior, Studio hace una copia del script y la coloca en la carpeta de la siguiente etapa de desarrollo. Los archivos a los que hace referencia el script no se copian automáticamente. Debes copiar manualmente cualquier archivo referenciado en la carpeta de la siguiente etapa de desarrollo.
  • Copiar archivos referenciados de una etapa a otra les proporciona los mismos beneficios que a los scripts. También ayuda a garantizar que las rutas relativas a los archivos no cambien. Sin embargo, las rutas absolutas pueden verse afectadas porque los archivos y el script se ubican en una carpeta de una etapa diferente después de ser movidos.
  • La solución para evitar rutas absolutas rotas es utilizar la sustitución de variables. Esto implica más trabajo al principio, pero a largo plazo, le ahorra tiempo en comparación con modificar las rutas de cada archivo en cada script cada vez que se mueve. También elimina el riesgo de modificar las rutas de archivos en los scripts de producción sin probar el cambio primero.

Es una mejor práctica en Studio utilizar rutas absolutas siempre que sea posible, incluso cuando también se admiten rutas relativas.

Sustitución de variables para rutas de archivos

El uso de sustitución de variables para rutas de archivos le permite hacer que las rutas se actualicen automáticamente cuando se promueve o copia el script. Puede crear variables para contener la ruta a cada tipo de archivo al que haga referencia, como indicaciones, gramáticas, mensajes de voz, etc. Si un script guarda archivos o lee archivos de una carpeta, también puedes usar variables para esas rutas.

Cuando necesite hacer referencia a un archivo, utilice la variable en lugar de la ruta. Por ejemplo, cree una variable para la ruta a sus archivos de solicitud y úsela en las propiedades acciónClosed Realiza un proceso dentro de un script Studio, como recopilar datos de clientes o reproducir música. cuando especifique una solicitud. Podría parecerse al siguiente ejemplo: {promptPath}Greeting.wav.

Para automatizar la actualización de las variables de ruta, puede utilizar una SNIPPET acción y escribir código para determinar en qué carpeta de etapa de 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 fragmento que puede utilizar como modelo en sus secuencias de comandos.

Si su organización cuenta con varios escritores de scripts, trabajen juntos para desarrollar una estrategia para utilizar 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 variable de ruta de archivo

El ejemplo de sustitución de variables para rutas de archivos se configura como un script de entrada. Un script de entrada es el script predeterminado configurado en un punto de contactoClosed El 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 lanza otro script que realiza el enrutamiento del canal. También puede utilizar un script de entrada como script predeterminado para más de un POC y hacer que inicie el script de enrutamiento apropiado en función de criterios como ACD habilidadClosed Se utiliza para automatizar la entrega de interacciones en función de 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 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 acción SNIPPET y una 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 crear una ruta absoluta a las carpetas que contienen los scripts, las indicaciones, etc. Puedes escribir tu 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 instrucción SELECT con varias 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 particular depende del tipo de script. El fragmento:

  1. Encuentra la variable del sistema que contiene la ruta y el nombre del script actual. Para ello:

    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 fragmento selecciona CASE y asigna el valor de la variable a la variable normalizedScriptName.
  2. Determina el nombre de la carpeta de la etapa del flujo de trabajo de desarrollo donde se encuentra el script. Para ello:

    1. Utiliza la función split() 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 con un carácter de barra vertical (|), 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 la etapa del flujo de trabajo de desarrollo actual. El fragmento rellena 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 ello, el fragmento:

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

  4. Contiene una declaración IF que verifica que la variable env esté rellena con un valor (IF env.length = 0). Si no es así, le aplica dev como predeterminado. Esta declaración IF actúa como respaldo en caso de que algo suceda durante la declaración IF anterior y env no se complete. Es importante que esta variable tenga un valor apropiado porque se usa comúnmente en scripts Studio para determinar el entorno que se utiliza en una variedad de situaciones en las que el script interactúa con un sistema que puede tener una versión sandbox o de desarrollo y una versión de producción. Por ejemplo, esto es común con las 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 de 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 folderPath:

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

      ASSIGN scriptPath = "~{folderPath}\"

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

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

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

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

El fragmento anterior crea una ruta absoluta. Puede utilizar esta variable en cualquier script posterior que requiera una ruta de carpeta en un fragmento o una configuración de propiedad de acción. Si la acción que estás utilizando admite rutas relativas, puedes elegir no utilizar la variable folderPath. Sin embargo, la mejor práctica en Studio es utilizar rutas absolutas cuando sea posible, incluso cuando también se admiten rutas relativas.

Personalizar fragmento de script de entrada

Para permitir que el fragmento 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, deberá cambiar cada instancia del nombre antiguo en sus scripts. No cambie el nombre de env.

Las personalizaciones adicionales que puedes 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 para su etapa de desarrollo:

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

Configurar un script de entrada para iniciar varios scripts

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

Para configurar esto, agregue lógica de script al SNIPPET en el script de entrada que define cómo se selecciona el script apropiado. 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 utilizar 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 apropiado 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" 
  }

Usar variables de ruta en scripts

Después de configurar su script de entrada, deberá utilizar las variables definidas en él en sus otros scripts.

No modifique los scripts de producción. Siempre copie primero un script a una etapa de desarrollo inferior y luego realice los cambios. 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 dirijan al punto de contactoClosed El 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 utilizan rutas de archivos. Las rutas pueden aparecer en configuraciones de propiedades, títulos, valores de variables y fragmentos de código. En particular, observe acciones como RUBSUB, RUNSCRIPT, SPAWN, MUSIC, PLAY, WHISPER y cualquiera de las ASR o acciones relacionadas con archivos. Puede buscar scripts que contengan determinadas acciones o que tengan nombres de carpetas en sus títulos.

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