Este documento proporciona información sobre el sistema Cisco Unity Express (CUE). Específicamente, este documento ofrece una introducción a la creación de una aplicación AutoAttendant personalizada en el producto.
Para obtener más detalles sobre Cisco Unity Express, refiérase a la Guía del Editor de Secuencias de Comandos de Cisco Unity Express. Este documento está dirigido a los administradores que necesitan una guía básica para comenzar a utilizar Cisco Unity Express Editor y mantener scripts dentro del producto Cisco Unity Express.
Nota: El soporte de script personalizado no está disponible a través del Soporte Técnico de Cisco. Para preguntas, comentarios y ayuda con un script personalizado, envíe un correo electrónico a ask-cue-editor@external.cisco.com.
El lector debe estar familiarizado con la administración y configuración de Cisco Unity Express a través de la interfaz de línea de comandos (CLI) o la GUI.
El Editor de secuencias de comandos de Cisco Unity Express (CUEEditor2.1.1.exe) y el script de ejemplo que utiliza este documento (CUE-AA-S6-AASample.zip) están disponibles en el Centro de descarga de software de Cisco Unity Express 2.1.1.
La información en este documento se basa en la versión 2.1.1 de Cisco Unity Express. El ejemplo contiene pasos que sólo están disponibles en Cisco Unity Express 2.1.1. Aunque muchos de los principios son los mismos para las versiones anteriores. Los pasos específicos de 2.1.1 se señalan explícitamente en este documento.
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
For more information on document conventions, refer to the Cisco Technical Tips Conventions.
El producto básico de Cisco Unity Express se suministra con un buzón de voz y un asistente automático básico (en Cisco Unity Express 2.1.1 y versiones posteriores, hay dos scripts de asistente automático). Muchos clientes consideran que el contestador automático estándar es demasiado limitado. Cisco Unity Express tiene un editor de secuencias de comandos que permite la creación de secuencias de comandos personalizadas. Estos scripts personalizados se pueden cargar en Cisco Unity Express y reemplazar (o trabajar además) al asistente automático normal.
Advertencia: La secuencia de comandos de ejemplo que se muestra aquí se muestra con fines ilustrativos. Se puede modificar de cualquier forma. El objetivo de este artículo es ilustrar el proceso de diseño e implementación de un guión personalizado. No se pretende proporcionar un script de producción terminado. Sin embargo, si decide utilizar esta secuencia de comandos, como mínimo, registre cada una de las indicaciones. Puede escuchar los archivos de audio adjuntos para escuchar cómo suenan. Pero use la Administración a través del Sistema de Gestión de Saludos/Telefonía.
Nota: En este momento, no es posible obtener una copia de los scripts del sistema reales que utiliza Cisco Unity Express. Estos scripts tienen pasos que el editor de secuencias de comandos normal no admite. Los scripts del sistema a partir de Cisco Unity Express 2.1.1 son aa.aef, voicebrowser.aef, setmwi.aef, promptmgmt.aef, checkaltgreet.aef, xferMailbox.aef y aasimple.aef.
El editor de secuencias de comandos es una herramienta que permite crear secuencias de comandos en un equipo independiente de Cisco Unity Express. Una vez creados, los scripts se cargan y configuran en Cisco Unity Express.
Esta lista explica algunos términos básicos para ayudarle a entender los conceptos en este documento.
Paso: bloque de creación básico para la creación de secuencias de comandos. Cada paso es la unidad ejecutable más básica, como una instrucción "if", una "Goto", etc.
Secuencia de comandos: uno o varios pasos que se ejecutan en secuencia. Un script es un archivo con una extensión .aef.
Variable: son variables en un script. Las variables pueden ser de tipos diferentes, como Integer, Boolean, String, etc.
Parámetro: es una propiedad de una variable para que la variable se exponga al administrador a través de la interfaz web de Cisco Unity Express. Por ejemplo, si tiene una variable OperatorExtension que desea asignar el valor 1000 de forma predeterminada, a veces debe cambiarse a 2000. En este caso, la variable se expone a través de la interfaz web para que no sea necesario cargar el script completo en Cisco Unity Express cada vez que se deba cambiar el valor.
Mensaje: un archivo .wav que se puede reproducir. Se carga manualmente en el sistema Cisco Unity Express o se registra a través del sistema de administración mediante el teléfono (AVT) (antes de la versión 2.1.1, el AVT se llamaba Sistema de gestión de saludos (GMS)). Todas las indicaciones de usuario cargadas se colocan en el mismo directorio. Están visibles en la GUI a través del elemento de menú Buzón de voz > Mensajes o en la CLI a través del comando show ccn prompt.
En una secuencia de comandos, las indicaciones de usuario se especifican como P[<nombreDeMensaje>]. Las indicaciones del sistema se registran previamente y se pueden utilizar. Se especifican como SP[<nombrePedido>]. En el apéndice 1 se enumeran las indicaciones del sistema disponibles.
Aplicación: es la secuencia de comandos con todos los mensajes y parámetros completados. De forma predeterminada, Cisco Unity Express se envía con el buzón de voz, el sistema AVT y una aplicación de asistente automático simple que se configuran todas al ejecutar el Asistente de inicialización al final de una instalación.
Desencadenante: el disparador indica a Cisco Unity Express que una aplicación en particular debe ejecutarse. Por ejemplo, cuando marca 1000, el sistema telefónico (Cisco CallManager o Cisco CallManager Express ) enruta la llamada a Cisco Unity Express. Cuando Cisco Unity Express ve que se realiza una llamada al número 1000, busca un disparador para esa extensión. A continuación, se inicia la aplicación correspondiente. En otras palabras, sabe si una llamada a 1000 debe ir al buzón de voz, al contestador automático o a otra cosa. Puede tener varios desencadenadores en la misma aplicación. Hay varios desencadenadores que se agregan de forma predeterminada, como desencadenadores del buzón de voz, AVT y contestador automático enlatado.
Cuando comprende la terminología, facilita la comprensión de la herramienta de administración web de Cisco Unity Express.
En la página web de Cisco Unity Express, la opción Asistente automático de la categoría Correo de voz hace referencia a las aplicaciones tal como se definen en la terminología. Cada entrada contiene el número asociado a la aplicación, la secuencia de comandos a la que hace referencia, los parámetros asociados al script, si la aplicación está habilitada o no, y el número de puertos asociados.
La gestión de llamadas actualmente sólo contiene los números asociados para el buzón de voz, el asistente automático integrado y el sistema AVT. En Cisco Unity Express 2.1 y versiones posteriores, bajo Administration > Call-in Numbers hay una visualización adicional de todos los Triggers, tanto JTAPI (para Cisco CallManager) como SIP (para Cisco CallManager Express o el modo SRST). Actualmente, la única manera de ver si hay varios desencadenadores configurados que apuntan a la misma aplicación es con el comando show ccn trigger ejecutado en la CLI.
La opción Indicadores hace referencia a los archivos de audio (.wav) que existen en el sistema.
La selección Scripts hace referencia a los archivos .aef que puede almacenar en el sistema. Actualmente, puede cargar hasta cuatro scripts además de las secuencias de comandos del sistema.
Desde la CLI, esta información está disponible fácilmente mediante los comandos show ccn. Este resultado representa partes de cada resultado de comando:
cue-3745-44a> show ccn application Name: customaa Description: customaa Script: customaa.aef ID number: 4 Enabled: yes Maximum number of sessions: 8 OperatorExtension: 205 MainMenu: MainMenu.wav ClosedGreeting: ClosedGreeting.wav InvalidExt: InvalidExt.wav MaxRetries: 3 MaxExtension: 205 SorryGoodbye: SorryGoodbye.wav EnterExtension: EnterExtension.wav namePrompt: namePrompt.wav MinExtension: 200 ... cue-3745-44a> show ccn prompts Name: MainMenu.wav Language: de_DE Last Modified Date: Wed Dec 22 03:34:57 GMT+00:00 2004 Length in Bytes: 121978 Name: EnterExtension.wav Language: de_DE Last Modified Date: Wed Dec 22 03:34:26 GMT+00:00 2004 Length in Bytes: 21338 Name: SorryGoodbye.wav Language: de_DE Last Modified Date: Wed Dec 22 03:34:02 GMT+00:00 2004 Length in Bytes: 17658 Name: ClosedGreeting.wav Language: de_DE Last Modified Date: Wed Dec 22 03:33:00 GMT+00:00 2004 Length in Bytes: 86138 Name: InvalidExt.wav Language: de_DE Last Modified Date: Wed Dec 22 03:47:07 GMT+00:00 2004 Length in Bytes: 29818 Name: namePrompt.wav Language: de_DE Last Modified Date: Wed Dec 22 03:40:28 GMT+00:00 2004 Length in Bytes: 22618 ... cue-3745-44a> show ccn trigger Name: 18955 Type: SIP Application: customaa Locale: systemDefault Idle Timeout: 10000 Enabled: yes Maximum number of sessions: 8 ...
La salida show ccn application muestra el nombre de la aplicación, el script al que hace referencia, si está habilitado o no y cuántas llamadas simultáneas puede manejar, junto con todos los parámetros de script con sus valores.
El comando show ccn prompt enumera todos los comandos, su idioma, tamaño y fecha modificada.
La información show ccn trigger proporciona el número ("Nombre") así como la aplicación a la que llama, el estado (habilitado/desactivado) y el número de sesiones.
Utilice el Editor de secuencias de comandos (sólo clientes registrados) para crear un nuevo script. Debe estar instalado en un PC independiente.
En la misma ubicación hay varios scripts de ejemplo. Estos scripts ayudan a aprender a realizar operaciones específicas en un script. Cisco recomienda instalar el Editor y descargar algunos scripts de ejemplo para familiarizarse con la forma en que funciona el Editor.
Una vez que se inicie el Editor de secuencias de comandos, puede abrir un script como se muestra en este gráfico:
El panel Paleta contiene carpetas con cada paso, categorizadas en función de su función principal. Desde allí, arrastre los pasos hasta el panel Diseño para crear una secuencia de comandos. En el panel Variable, puede crear y editar variables. Después de arrastrar un paso al panel Diseño, puede hacer clic con el botón secundario del mouse en un paso, seleccionar Propiedades y personalizar el paso y las variables asignadas al paso. Antes de cargar un script en Cisco Unity Express, siempre debe validarlo primero a través de la opción Tools > Validate. A continuación, se muestra cualquier resultado de error en el panel Depuración.
Una de las cosas más útiles que se deben recordar cuando se utiliza el Editor es la función Ayuda. Puede tener acceso directamente a ella a través del menú Ayuda de la barra de herramientas o al seleccionar una propiedad de paso determinada.
Puede utilizar el menú Ayuda para familiarizarse con algunos de los pasos. En el Editor de secuencias de comandos, arrastre algunos pasos de la paleta al panel de diseño y haga clic con el botón derecho del ratón en uno y seleccione Propiedades. A continuación, haga clic en el botón Ayuda y obtenga ayuda sobre ese paso en particular.
Este documento describe la creación de un script de ejemplo. El documento también trata algunos de los problemas comunes que las personas intentan resolver cuando crean un asistente automático personalizado. El objetivo aquí es crear un script que responda a una llamada, comprobar si hay un saludo alternativo de emergencia y si la hora actual es normal o no. Si está cerrado, reproduzca un saludo personalizado y envíe la llamada al operador. Si está abierto, reproduzca un menú que permita a la persona que llama marcar 1 para marcar por nombre, 2 para marcar por extensión o 0 para un operador. La opción dial-by-extension (marcar por extensión) sólo debe transferir la llamada a un intervalo especificado, no a cualquier número que pueda introducir.
Advertencia: El ejemplo que utiliza este documento es sólo para fines ilustrativos. Aunque es libre de usar las porciones que desee, probablemente no coincida exactamente con la situación de su empresa. Especialmente en las áreas de manejo de errores, este script no es muy útil.
Nota: Aparte de los scripts de ejemplo en www.cisco.com, el CD de Cisco Unity Express contiene un script similar al que se utiliza aquí, denominado aa_sample1.aef. Es muy similar al contestador automático de envío normal (anterior a 2.1). Si piensa utilizar el script en lata como punto de partida, utilice este script en lugar del archivo aa.aef que se encuentra al instalar algunas versiones del Editor de secuencias de comandos.
Actualmente, Cisco Unity Express admite la integración con Cisco CallManager o Cisco CallManager Express. Aunque el script en sí no cambia, el método de integración puede dar lugar a algunas ligeras diferencias. Cuando se ejecuta un paso de redirección, que transfiere lógicamente la llamada de Cisco Unity Express a una extensión externa, este método de integración es crítico. Cuando se integra con Cisco CallManager Express, que es el mismo para una integración de Cisco CallManager actualmente en modo SRST, la señalización se realiza a través de SIP en forma de un mensaje BYE/También. Esto significa que una redirección cuelga la llamada a Cisco Unity Express y le dice al router Cisco CallManager Express/SRST que conecte al llamador a la extensión especificada en la parte "También:" del mensaje BYE. Si esa extensión no es válida o no se puede acceder a ella, la persona que llama puede ser abandonada. Esto se debe a que no hay manera de que Cisco Unity Express recupere esa llamada y se le notifique que la transferencia falla. Es una transferencia ciega. Si la llamada se redirige a una extensión no registrada u ocupada que no responde, las reglas de reenvío de llamadas normales que se aplican a ese número de directorio están en vigor. Cisco Unity Express ya no forma parte de la llamada. Esto también significa que cuando se escribe Pasos de redirección, actualmente no hay muchas ventajas cuando se agrega código para tratar con redirecciones ocupadas/inválidas/fallidas, ya que la redirección en sí es equivalente a una desconexión. No hay ningún caso de falla posible.
Para las integraciones de Cisco CallManager, Cisco Unity Express se comunica a través de Java Telephony Application Programming Interface (JTAPI). Esto permite realizar pasos de redirección ocupados/no válidos/fallidos. Por lo tanto, agregue código a la secuencia de comandos para controlar esas situaciones. Cuando todos los Cisco CallManagers se vuelven inalcanzables y el sistema cae en el modo SRST, se utiliza la señalización SIP que se mencionó anteriormente en este documento. Por lo tanto, se aplican todas las limitaciones descritas en este documento.
Antes de comenzar con un script de producción, es imprescindible planificar el flujo de llamadas completo. Para este ejemplo, suponga que todas las extensiones están en el rango 200-299 (el punto importante es que todas comienzan con 2). Para este ejemplo, tiene algo como este procedimiento:
Responda a la llamada.
Compruebe si hay un saludo alternativo. Si la hay, escúchala.
Compruebe si es un día festivo. Si es así, reproduzca un saludo festivo y vaya al menú principal.
Compruebe si es durante o después del horario laborable y reproduzca el saludo correspondiente (abierto/cerrado). Vaya al menú principal.
El menú principal debe reproducir un mensaje y permitir a los usuarios introducir una extensión en cualquier momento si lo conocen. Se les permite introducir 1 si desean buscar un usuario en el directorio o 0 si desean alcanzar el operador. Dado que todas las extensiones de usuario válidas comienzan por 2, al introducir 2 bifurcaciones en la sección marcación por extensión.
El dial-by-name busca a los usuarios y los transfiere. El usuario se transfiere al operador si se introduce cero.
La opción dial-by-extension intenta inmediatamente recopilar dos dígitos más. Si se introduce menos, volverá al menú principal. Si se recopilan dos, intenta buscar al usuario. El usuario se transfiere a esa extensión si el usuario sale, de lo contrario el usuario pasa al menú principal.
La transferencia a la función de operador transfiere la llamada. Si falla por alguna razón, vuelve al menú principal.
Una secuencia de control de errores adicional para varios problemas (como transferencias fallidas múltiples) que indica al usuario que intente de nuevo más tarde y se cuelga.
Se puede hacer mucho por el manejo de errores. Para una implementación real, probablemente ayuda a asignar el flujo de llamadas completo (esto incluye el control de errores y cada interacción o elección del usuario) en un diagrama de flujo.
Introduzca la secuencia de comandos en el Editor de secuencias de comandos.
Todos los scripts comienzan con un paso de inicio. Lo primero que hay que hacer es aceptar la llamada. Después, reproduzca un mensaje (DP[500]) que es una pausa de 0,5 segundos. En algunas situaciones, el corte de audio a la red pública de telefonía conmutada (PSTN) no se produce rápidamente. Reproduzca algo antes y saludo "real" para evitar cualquier recorte percibido del saludo. A continuación se muestra un paso Al ir una excepción. Lo que hace es buscar cualquier excepción de tipo "UndefinedPromptException" en el momento de la ejecución del script. Esta excepción concreta se produce cuando el paso intenta reproducir un mensaje que no existe. Esto sólo ocurre si el paso que reproduce el mensaje tiene la propiedad "Continue On PromptErrors" establecida en No. Si se establece en Sí, no se reproducirá ningún mensaje y no se producirá ninguna excepción. El uso de este paso de On Exception Goto se asegura de que si se borra un mensaje crítico que puede administrar el administrador (como el menú principal), puede bifurcar a una sección donde puede bifurcar a la etiqueta "Lo sentimos" para decirle al usuario que intente de nuevo más tarde. Después de eso, llame a un subflujo, active AltGreet.aef. Este es un script del sistema, que siempre está ahí. Comprueba la existencia del archivo AltGreeting.wav. Si existe, lo reproduce. Si no lo hace, el subflujo regresa. Esto es útil ya que puede utilizarlo junto con el GMS (ahora llamado sistema AVT) para reproducir un saludo de emergencia de algún tipo antes del mensaje normal. Para obtener más información sobre esta función, refiérase a Configuración y Uso del Sistema de Administración de Saludos y Saludo Alternativo de Emergencia para Unity Express. No hay manera de decir si el saludo alternativo se reproduce realmente (o verifica la existencia de un archivo en el repositorio local). No es necesario que lo utilice al principio de un script. En función de su aplicación, puede utilizar la función de saludo alternativo de emergencia para registrar avisos de días festivos, por ejemplo. En lugar de llamar a este subflujo, llámelo solamente si es un feriado. Esto ayuda a los administradores del sitio a grabar saludos festivos a través de la interfaz de usuario de telefonía sin necesidad de acceder al sistema a través de un navegador o la CLI (para cambiar el nombre de las indicaciones o asignarlas a variables de script).
Decida qué mensaje de apertura desea reproducir. Si es un día festivo, haga el saludo de vacaciones. Si es durante el horario laboral (que se pueden configurar mediante programaciones en el administrador web de Cisco Unity Express), reproduzca el saludo inicial (que puede ser algo tan simple como "gracias por llamar a Cisco Systems"), o bien reproduzca el saludo cerrado. Independientemente de cuál juegue, también se puede ir directamente al menú principal.
Nota: Los pasos "Is Holiday" y "Business Hours" son específicos de 2.1.1 y posteriores. Para las versiones anteriores de Cisco Unity Express, la única opción es utilizar el paso "Hora del día". Esto no le permite reproducir saludos diferentes según el día o la fecha. Sólo se basa en el tiempo.
Introduzca la sección Menú principal. Puesto que gran parte del control de errores envía posteriormente a la persona que llama al menú principal, se agrega un contador. El contador "intentos" se compara con "MaxRetries", otra variable que puede configurar el usuario (3 de forma predeterminada). Si se llega a ese contador, pida disculpas y transfiera a la persona que llama al operador ("Lo sentimos, tiene problemas. Por favor, espere a un operador.").
El paso Menú muestra un mensaje básico ("Si conoce la extensión de su interlocutor, marque en cualquier momento. Para un operador, pulse 1, para repetir estas opciones, pulse 9."). En este caso, dado que reproduce su propio mensaje grabado, cambia el parámetro Maximum Retries en este paso a 0. Esto se hace en cualquier lugar en el que tenga la opción de hacerlo. La razón es que si se trata de algo distinto a 0, escuchará el mensaje del sistema "¿todavía está allí?" cada vez que se alcanza el temporizador de vencimiento y se desplaza a la rama Timeout. Se llega a la sucursal que no funciona cuando alguien presiona cualquier cosa que no sea 1, 2, 9 o 0. En este caso, se muestra el mensaje "La extensión introducida no es válida" y se abandona el paso en el que se incrementa el contador de intentos y se vuelve al menú principal.
Nota: Para asegurarse de que el audio se detiene tan pronto como se introduce un dígito en los pasos de medios (como Menú o Símbolo de reproducción), debe marcar el campo Entrar en la pestaña Aviso del paso. El campo Interrumpible (en la ficha General) se utiliza para otras interrupciones del paso que actualmente no son aplicables a Cisco Unity Express.
Se agrega una única sección de control de errores. La sección "Lo sentimos" muestra un mensaje ("No podemos transferir la llamada en este momento. Inténtelo de nuevo más tarde. Adiós"). A continuación, la llamada se desconecta.
Siempre puede utilizar un saludo del sistema en lugar de estas variables personalizadas. Las indicaciones del sistema siempre tienen la notación SP[] mientras que las indicaciones del usuario utilizan la notación P[]. No se puede asignar un mensaje del sistema a una variable de prompt cuando se define (en el panel de variables, ya que son valores de usuario por definición). Una vez definido, en el script puede asignar un mensaje del sistema a una variable a través del paso Set (o cualquiera de los pasos Create Prompt).
Una forma de realizar el marcado por nombre es descargar el ejemplo (S4_DialByName) de Cisco.com, cargarlo como un script independiente en Cisco Unity Express y después agregar un paso de subflujo de llamada para invocarlo. En este caso, el paso se coloca directamente en el script y se analiza en detalle. El paso NameToUser sólo permite configurar uno de sus mensajes ("Spell the last name of the person you want to call, seguido del nombre de la letra Q press 7, y para la letra Z press 9"). No es posible eliminar todos los avisos del sistema. Para minimizarlos, primero debe desactivar la tecla Cancelar (valor predeterminado *). Si está presente, , el sistema agrega un mensaje "para volver a empezar, pulse asterisco" al final del mensaje grabado. En segundo lugar, cambie Maximum Retries (Reintentos máximos) a cero, de modo que los mensajes "Please try again" (Inténtelo de nuevo) y "Are you Still There" (Todavía está allí) no se puedan producir. Realice siempre un seguimiento del número de intentos con una variable de contador independiente que agregue. Todavía hay un mensaje del sistema que no se puede eliminar. Se trata del mensaje para varias coincidencias ("Se encontró más de un nombre. Seleccione una de las siguientes opciones..."). El paso Nombre de usuario termina siempre como Satisfactorio, Tiempo de espera, Sin éxito o Operador (si se selecciona en las propiedades del paso). Excepto para la bifurcación Correcto y Operador, se descarta del paso Menú. Esto significa que incrementa el contador de intentos y vuelve al menú principal. En función de la situación, puede tener un contador de reintentos independiente y agregar un paso para volver a la etiqueta DialByName para que repita la acción que ya está seleccionada.
Nota: Un defecto en la versión 2.1.1 que se debe tener en cuenta es el Id. de bug Cisco CSCeg81385 (sólo para clientes registrados). Cuando el valor de Reintentos máximos del paso NameToUser se establece en cero o en uno, debe utilizar un carácter de terminación. Sin el carácter de terminación, no se dirige a la rama "Satisfactoria" de este paso. En su lugar, siempre pasa a "Tiempo de espera", incluso si hay una coincidencia.
Si el usuario no introduce una extensión que se pueda asignar a un nombre, la bifurcación No realizada comprueba un nuevo contador (SpellByNameIntts) frente a MaxRetries. Suponga que el mismo número máximo de reintentos para ingresar al menú principal debe aplicarse a la función de hechizo por nombre. Puede agregar una variable independiente si necesita ser diferente.
Un paso NameToUser exitoso significa que se ingresa al menos un dígito y se selecciona el apellido de un único usuario tal como se define en Cisco Unity Express (la rama Timeout sólo se alcanza si no se ingresa ningún dígito). Para asegurarse de que la extensión es única, verifique que pueda volver a asignar la extensión al usuario. Esto se puede lograr con el paso ExtensionToUser. Este paso se agrega en Cisco Unity Express 2.1.1. Anteriormente, no había forma, con una extensión, de asegurarse de que se asignara a un usuario real en el sistema de buzón de voz. Lo mejor que se puede hacer es configurar algunas variables con las que comparar, como la adición de un paso "If (TransferExt < MinExtension) || (TransferExt > MaxExtension)..." o algo similar.
Aquí puede ver el script después de asignar la extensión de nuevo al usuario. Si no reproduce un mensaje que indica que la extensión no es válida. Por lo general, no hay extensión por alguna razón. En el caso de Cisco CallManager Express, esto puede significar que cuelgue si intenta transferir la llamada. Esto puede provocar una ligera confusión, ya que la persona que llama ya ha seleccionado un usuario. Sin embargo, está claro que ya se trata de una condición de error de la que desea conocer de todos modos. Si la asignación de la extensión a un usuario se realiza correctamente, compruebe primero si tiene un nombre grabado (la variable spokeName se rellena al buscar ese usuario). A continuación, establezca la variable de indicación en Llamar más el spokeName. De lo contrario, configúrelo en extensión de llamada más la extensión escrita del usuario. También puede especificar el nombre (reproducir S[name] en el mensaje). No hay ningún nombre grabado para reproducir. La ortografía de cualquier sistema, como escribir un nombre o una extensión, siempre se realiza en la voz del sistema y no se puede personalizar. El paso Confirmación implícita reproduce el mensaje que acaba de crear. Si el usuario no escribe nada, continúa e ingresa en la rama "Sí" y redirige la llamada. Si hay un problema, en el caso de la integración de Cisco CallManager, se reproduce un saludo y la persona que llama se devuelve al menú principal. Si la persona que llama introduce algo, genere otro mensaje. Esta vez, comience el mensaje con el nombre hablado o una versión escrita del nombre del usuario (paso Crear mensaje condicional). Siga esto en una pausa y una indicación "si este es el nombre de la persona a la que llama, pulse 1". Ahora el usuario puede pulsar 1 para que sí, 2, * o esperar. El sistema los envía de vuelta a la sección deletreo por nombre o al operador. Esto depende de cuántas veces han pasado por el sistema.
La sección Marcar por extensión ya tiene el primer dígito ("2" en este ejemplo) recopilado. Establezca la variable prefixDigit en 2. Puede cambiar fácilmente esto, en función del dígito inicial (o si hay más de un dígito inicial posible). Ningún dígito inicial puede ser igual que otra opción del menú (como 1, que se utiliza para marcar por nombre en este ejemplo). La opción Obtener cadena de dígitos también recopila un número fijo de dígitos (dos en este caso). Por lo tanto, es necesario fijar el número total de dígitos. Si las extensiones válidas comienzan por 2 o 3, puede agregar un paso "Set prefixDigit = "3" a la opción 3 del paso Menú seguido de un paso Goto DialByExtension.
Dado que tiene extensiones de tres dígitos en este entorno, el parámetro Get Digit String step Input length es 2. No hay carácter de terminación ni clave de cancelación. El número máximo de reintentos es 0. Si un usuario no introduce una extensión válida, el script incrementa el número de intentos y vuelve al menú principal. El paso no reproduce ningún audio (el mensaje es P[]), ya que el usuario ya se encuentra en medio de la marcación de dígitos.
Cuando se recopilan dos dígitos correctamente, anteponga el prefixDigit ("2" en este caso) que ya está marcado (lo que le permite bifurcar desde el paso Menú). TransferirExt que resulta pasa al paso Extensión a usuario, que verifica si es un usuario válido. Si es así, cree un mensaje con la extensión especificada. En el paso Confirmación implícita, reproduzca el mensaje "extensión de llamada" seguido de la extensión. Busque el usuario y reproduzca el nombre hablado, como hizo en DialByName. Sin embargo, en este caso no es necesario. Si no se marca ningún dígito, suponga que ésta es la extensión a la que desea llegar la persona que llama y redirija la llamada. De lo contrario, vuelva al menú principal. El propósito del paso Play Prompt DP[250] es purgar cualquier otra entrada, porque el paso Get Digit String no tiene ningún carácter de terminación configurado. La idea es que desea que esto funcione si alguien marca la extensión "200" o "200#". Si se ingresa el # mientras se ejecuta el paso de confirmación implícita, entonces se pasa a la parte No de ese paso. En algunos casos, probablemente no sea necesario tener un paso de confirmación implícito, sino más bien redirigir la llamada inmediatamente. A título ilustrativo, estos pasos se dejan en.
Reproduzca el mensaje "Transfiriendo llamada" y, a continuación, redirija la llamada a la extensión de operador configurada. Si falla por alguna razón, tiene un contador independiente que incrementa y vuelve al menú principal. La razón de esto es que desea tener algún método para darle al operador algún tiempo para salir del teléfono o volver a registrarse para que pueda intentar transferirles de nuevo con éxito. Después de varios intentos (codificado de forma rígida en 3 en este ejemplo), se bifurca a la etiqueta "Lo siento", que descarta la llamada.
Hay muchos lugares donde los scripts pueden fallar. Una de las áreas más comunes en un script bien diseñado es cuando faltan las indicaciones del usuario. Cuando el sistema intenta reproducir un mensaje que no existe, pueden ocurrir varias cosas. En primer lugar, si el paso que se reproduce en el mensaje tiene el valor "Continuar al solicitar errores" establecido en Sí. Continúa con el paso siguiente y no reproduce el mensaje. Si Continue On Prompt Errors se establece en No, se genera una excepción. La mayoría de las veces, se trata de la "ExcepciónDeMensajeIndefinida", lo que significa que no se encuentra el mensaje o que nunca se ha configurado. Cuando tiene un paso On Exception Goto, puede permitirle capturar esta excepción y bifurcar a una sección de código que puede reproducir un mensaje del sistema u otra forma de audio en su lugar. Dado que el paso On Exception Goto se aplica a todo el audio que se reproduce en todo el script (no se puede definir un paso On Exception Goto separado para cada mensaje que se reproduce), la mejor manera de controlar esto es establecer una variable de código de error inmediatamente antes de reproducir el mensaje. De esta manera, puede bifurcar en algún lugar, realizar una acción basada en ese código de error y, a continuación, posiblemente, bifurcar de nuevo.
Por ejemplo, puede modificar el script con lo siguiente:
Ha agregado la etiqueta "Maxretries" (Maxretries). Se usa para volver al mismo lugar. Establezca una variable ErrorCode en Maxretries. En el paso del mensaje de reproducción, asegúrese de que Continue On Prompt Errors esté establecido en No. Ahora agregue una sección que pueda manejar esto. Vea si ErrorCode coincide con "Maxretries" y, a continuación, establezca la variable SientoProblemas (que intentó reproducir anteriormente) en el mensaje del sistema Lo sentimos, ya que tiene problemas. Por favor, quédate en la fila y algunos estarán contigo en breve. A continuación, vaya a la etiqueta Maxretries para que pueda reproducirse.
El último paso es cambiar el mensaje On Exception Goto para buscar el error UndefinedPromptException:
Este paso puede estar en cualquier lugar del script. Sin embargo, suele ponerse al principio o cerca de él. Hay varios pasos que pueden reproducir avisos. Los mensajes del sistema se enumeran en la parte inferior de este documento.
Este método se puede utilizar en lugar de llamar al subflujo checkAltGreet.aef. Debe reproducir el archivo AltGreeting.wav. Si hay un error, manósela. El beneficio es que sabe cuándo juega o no.
Aunque menos frecuentes, estas son las otras excepciones inmediatas:
ExcepciónDeMensajeNoDefinida
PromptException
GeneradorDeMensajeNoDefinido
InvalidPromptArgumentException
ExpresiónMensajeNoSoportada
Actualmente no es posible redirigir la llamada directamente a un buzón de voz. Debe enviarse a un número que se reenvía al buzón de voz. Puede ser un número ficticio en Cisco CallManager Express (o incluso en Cisco CallManager) que se configura para reenviar todas las llamadas al número piloto del buzón de voz. Utilice la configuración del número de Cisco Unity Express/e.164 para hacer coincidir ese número con un suscriptor o grupo. Transferir una persona que llama directamente a un buzón de correo de Unity Express explica cómo se puede hacer esto.
Debe crear todas las variables utilizadas en un script antes de poder utilizarlas. Si utiliza uno y después lo elimina, seleccione Herramientas > Validar en el Editor de secuencias de comandos para encontrarlo. Para este script de ejemplo, estas son las variables que se utilizan. Observe los campos Nombre, Tipo, Valor (que es el valor de la variable inicialmente) y Atributo. El atributo Parameter significa que la variable se expone al administrador a través de la página web. Cualquier cosa que desee que personalice el administrador de Cisco Unity Express debe tener el atributo Parameter.
Si no desea registrar todas estas indicaciones personalizadas, puede editar cada una de ellas y desmarcar el atributo Parameter para que no se exponga a través de la página web. Para asegurarse de que el sistema siga funcionando, agregue varios pasos Set al inicio del script. Por ejemplo, establezca 'Llamar' en 'SP[LlamadaAA/AC]'. No todas las indicaciones que se muestran aquí tienen los scripts del sistema correspondientes. En la mayoría de los casos, tiene sentido registrarlos tú mismo. Si las indicaciones no cambian, puede registrarlas una vez, asegúrese de que existen en Cisco Unity Express System con un nombre de archivo dado y, a continuación, quitar el atributo Parameter de la variable. De esta manera, el mensaje reproducirá un nombre de archivo fijo. Sin embargo, la variable no se expone a través de la interfaz web donde un administrador puede cambiarla accidentalmente.
Normalmente, el primer paso para agregar una nueva aplicación y secuencia de comandos a Cisco Unity Express es cargar las indicaciones. Esto es importante porque las indicaciones deben existir en el sistema para que usted pueda configurarlas en los parámetros del script. De lo contrario, debe dejar los parámetros en blanco, cargar las indicaciones y, a continuación, volver y editar los parámetros del script. Para obtener información adicional sobre cómo grabar y cargar avisos, refiérase a Administración a través del Sistema de Gestión de Saludos/Teléfono (AVT).
Una vez que haya guardado el script y esté listo para probarlo, primero deberá cargarlo en Cisco Unity Express. La forma más sencilla es utilizar la GUI, ya que no se requiere un servidor FTP para cargar los archivos de script desde.
Complete estos pasos:
Inicie sesión en la GUI de Cisco Unity Express con una cuenta que tenga derechos administrativos.
Seleccione Voice Mail > Auto Attendant.
Haga clic en Add (Agregar).
Junto a "Guión del operador automático seleccionado", haga clic en el botón Cargar.
Haga clic en Examinar.
Busque el archivo de script, selecciónelo y presione OK.
Si desea cambiar el nombre del archivo de destino, hágalo. De lo contrario, pulse Cargar.
Ingrese un valor para Application Name (Nombre de aplicación). Esto puede estar en minúsculas y se utiliza para hacer referencia a la aplicación asociada a este archivo de script.
Haga clic en Next (Siguiente).
La página muestra ahora todas las variables del script que se marcan como parámetros. Esto significa que se pueden configurar en esta página. Si aún no ha cargado los archivos de solicitud, puede pasar primero por esto y, a continuación, rellenar la información más tarde.
Haga clic en Next cuando termine de ingresar los parámetros de script.
Asegúrese de que la aplicación esté marcada como Enabled, configure el número máximo de llamadas simultáneas (el valor predeterminado es el número máximo permitido por la licencia) e introduzca un número de llamada entrante.
Este es el número al que se llama esta aplicación en particular (disparador). Puede ser su número de asistente automático principal o temporal. También puede omitir esta información y rellenarla más adelante. Sin un número de llamada, no puede probar ni iniciar un script.
Nota: Para las integraciones de Cisco CallManager con el soporte SRST, debe ingresar varios números de llamada entrante. Antes de Cisco Unity Express 2.1.1, esta información debía ingresarse a través de la CLI. En Cisco Unity Express 2.1, se pueden ingresar varios números de llamada (disparadores) desde la pantalla Administration > Call-in Numbers .
Haga clic en Finalizado.
Una vez que cargue el script y configure la aplicación, debe asegurarse de que puede enrutar las llamadas a la aplicación. Esto significa que se debe configurar Cisco CallManager Express o Cisco CallManager. Con CallManager Express, esto implica la configuración de un par de marcado que señala a Cisco Unity Express que coincide con el patrón (número de disparador o número de llamada) configurado en Cisco Unity Express. En Cisco CallManager, se debe agregar un punto de ruta CTI con este número. No olvide que debe asociar este punto de ruta CTI con el usuario JTAPI al que Cisco Unity Express inicia sesión como. Esta configuración posiblemente requiera un reinicio de Cisco Unity Express. Una vez que agregue el punto de ruta y se asocie con el usuario, puede cambiar el script tanto como desee sin necesidad de reiniciar.
Cuando actualiza un script, si no se agregan o cambian parámetros de variable, puede ir al editor de Cisco Unity Express, hacer clic en Buzón de voz > Secuencias de comandos, Cargar y seleccionar el script. Se sobrescribe con todos los demás parámetros configurados que permanecen iguales.
Cuando crea avisos, lo más fácil es utilizar el sistema AVT. Los nombres de archivo que registra incluyen marcas de fecha y hora. Sin embargo, en Cisco Unit Express 2.1.1 y versiones posteriores, es posible utilizar el comando ccn de CLI para renombrar prompt. Anteriormente, tenía que descargar el mensaje, volver a cargarlo con un nuevo nombre y, a continuación, eliminar el archivo .wav original. Por ejemplo:
cue-3745-44a> show ccn prompts ... Name: UserPrompt_01032005170038.wav Language: en_US Last Modified Date: Mon Jan 03 17:00:38 EST 2005 Length in Bytes: 35098 cue-3745-44a> ccn rename prompt UserPrompt_01032005170038.wav MyPrompt.wav language en_US Warning! Any existing ccn applications that use this prompt will stop working until they are manually updated with the new prompt name. Continue? (y/n) y cue-3745-44a>
Cuando resuelva un problema con una secuencia de comandos, debe llamar y probar varios escenarios, tanto la entrada normal del usuario, como el tiempo de espera y las condiciones de error anticipadas.
Antes de cargar una secuencia de comandos, acceda siempre a la entrada Tools > Validate en el Editor de secuencias de comandos y asegúrese de que aparece el mensaje "Validation Success" (Validación correcta). Si no es así, todos los errores aparecen en el panel de depuración. Puede hacer doble clic en ellos y le muestra dónde existe la condición de error en el script.
En la mayoría de los casos, los seguimientos predeterminados son más que suficientes para solucionar problemas. Para simplificar esto, deje los seguimientos predeterminados y utilice la capacidad de filtrado para mostrar lo que necesita.
Antes de cualquier prueba, ejecute el comando clear trace. Esto borra el búfer de memoria de los mensajes de seguimiento de modo que la cantidad de información filtrada sólo incluya los datos después de ejecutar el comando.
Para la ejecución de secuencias de comandos, el elemento más importante sobre el que se debe filtrar es EJECUTING_STEP. Muestra todos los pasos a medida que se ejecutan. Por ejemplo:
cue-3745-44a> clear trace cue-3745-44a> /*** NOW THE TEST CALL IS MADE ***/ cue-3745-44a> show trace buffer long | include EXECUTING_STEP 3119 12/28 17:05:33.955 ACCN APMG 0 EXECUTING_STEP:Executing a step: Application=App[name=customaa,type=Cisco Script Application,id=4, desc=customaa,enabled=true,max=8,valid=true,optional= [cfgVars=[Lcom.cisco.wfapi.util.WFNameValuePair;@14efaa66,script=customaa21.aef]], Task id=17,000,000,007,Step id=0,Step Class=com.cisco.wfframework.steps.core. StepStart,Step Description=Start ...
En este resultado de ejemplo, parte de la información redundante se elimina en el centro y se recorta el comienzo de la marca de fecha/hora. La mayoría de las veces, la información más importante se encuentra al final de cada línea.
Nota: Muchas de estas líneas de salida se reducen a una segunda y tercera línea por razones espaciales.
5:33.956 Step id=529,Step Class=com.cisco.wfframework.steps.core.StepComment, Step Description=/* Assumptions: User extensions ... */ 5:33.957 Step id=3,Step Class=com.cisco.wf.steps.ivr.AcceptStep,Step Description=Accept (contact: --Triggering Contact--) 5:33.977 Step id=129,Step Class=com.cisco.wf.steps.ivr.OutputStep,Step Description=Play Prompt (contact: --Triggering Contact--, prompt: DP[500]) 5:34.461 Step id=2,190,Step Class=com.cisco.wfframework.steps.core .StepOnExceptionGoto,Step Description=On Exception(UndefinedPromptException) Goto Error 5:34.463 Step id=1,649,Step Class=com.cisco.wfframework.steps.core .StepComment,Step Description=/* Check for Alternate Greeting. ... */ 5:34.464 Step id=1,650,Step Class=com.cisco.wfframework.steps.core .StepCallSubflow,Step Description=Call Subflow -- checkAltGreet.aef 5:34.467 Step id=0,Step Class=com.cisco.wfframework.steps.core.StepStart, Step Description=Start 5:34.468 Step id=78,Step Class=com.cisco.wf.steps.ivr.GetContactInfoStep, Step Description=Get Contact Info (contact: --Triggering Contact--) 5:34.469 Step id=79,Step Class=com.cisco.wfframework.steps.core .StepCreateHost,Step Description=aType = new com.cisco .aesop.AltGreetType(language) 5:34.473 Step id=56,Step Class=com.cisco.wfframework.steps.core .StepHost,Step Description=pExist = aType.isEnabled() 5:34.477 Step id=5,Step Class=com.cisco.wfframework.steps.core .StepIf,Step Description=If ( pExist == true 5:34.478 Step id=3,Step Class=com.cisco.wfframework.steps.core .StepEnd,Step Description=End 5:34.480 Step id=510,Step Class=com.cisco.wf.steps.ivr.HolidayStep, Step Description=Is Holiday (Date: --Current Date--) 5:34.487 Step id=512,Step Class=com.cisco.wf.steps.ivr.BusinessHoursStep, Step Description=Business Hours (date: --Current Date--, time: --Current Time--, schedule: BusinessSchedule) 5:34.527 Step id=1,659,Step Class=com.cisco.wfframework.steps.core .StepLabel,Step Description=Office Open: 5:34.529 Step id=1,660,Step Class=com.cisco.wf.steps.ivr.OutputStep, Step Description=Play Prompt (contact: --Triggering Contact--, prompt: OpenGreeting) 5:35.722 Step id=1,669,Step Class=com.cisco.wfframework.steps.core .StepLabel,Step Description=Main Menu: 5:35.723 Step id=732,Step Class=com.cisco.wfframework.steps.core .StepIf,Step Description=If ( attempts >= MaxRetries ) Then 5:35.724 Step id=2,195,Step Class=com.cisco.wfframework.steps.core .StepAssign,Step Description=Set ErrorCode = "mainmenu" 5:35.726 Step id=2,259,Step Class=com.cisco.wf.steps.ivr.MenuStep, Step Description=Menu (contact: --Triggering Contact--, prompt: MainMenu) 5:35.730 Step id=2,294,Step Class=com.cisco.wf.steps.ivr.ParseInputStep, Step Description=Get Digit String(contact: --Triggering Contact--, result digit string: TransferExt) 5:36.197 Step id=2,295,Step Class=com.cisco.wfframework.steps.core .StepAssign,Step Description=Set TransferExt = "2" + TransferExt 5:36.198 Step id=2,296,Step Class=com.cisco.wf.steps.ivr.ExtensionToAddressStep, Step Description=Extension To User (Extension: TransferExt, result user:user) 5:36.214 Step id=2,297,Step Class=com.cisco.prompt.steps.CreateGeneratedPromptStep, Step Description=Create Generated Prompt( telephone.number type, store in prompt ) 5:36.229 Step id=2,298,Step Class=com.cisco.wf.steps.ivr.ImplicitConfirmStep, Step Description=Implicit Confirmation (contact: --Triggering Contact--) 5:41.971 Step id=2,301,Step Class=com.cisco.wf.steps.ivr.RedirectStep, Step Description=Call Redirect (contact: --Triggering Contact--, extension: TransferExt)
Ahora puede ver cada paso a medida que se ejecuta. No puede ver cómo se evalúan las expresiones ni cómo se puede ver ninguna entrada de usuario. Si la secuencia de comandos se encuentra delante de usted, puede seguir dónde se bifurca la secuencia de comandos, con el conocimiento de los dígitos introducidos (en este caso, el usuario marca, marca una extensión y se transfiere).
Utilice un filtro para ver los dígitos.
cue-3745-44a> show trace buffer long | include "process digit" 3119 12/28 17:05:35.728 ACCN CMTS 0 process digit 2 tag=2 3119 12/28 17:05:35.943 ACCN CMTS 0 process digit 0 3119 12/28 17:05:36.195 ACCN CMTS 0 process digit 1
A partir de este resultado, verá que se marca la extensión 201.
Si las versiones de CUE y el editor de secuencias de comandos CUE son diferentes y está intentando cargar una secuencia de comandos AA a través de GUI o CLI, la carga falla con el mensaje de error Upload failed. Si ambas versiones son diferentes, deberá volver a crear el script utilizando el editor CUE de la versión que sea la misma que su CUE. O bien, actualice el CUE a la versión del editor de secuencias de comandos CUE y ejecute el script.
Esta tabla muestra las indicaciones del sistema que puede utilizar.
Nota: No puede reutilizar todas las indicaciones que escuche en la aplicación de correo de voz de Cisco Unity Express en un script personalizado. Algunas de las indicaciones sólo están disponibles a través del script de buzón de voz que no puede personalizar a través del Editor de secuencias de comandos de Cisco Unity Express.
Mensaje del sistema | Audio grabado |
---|---|
SP[AA/AAWelcome] | "Bienvenido al operador automático" |
SP[AA/AAMainMenu] | "Para introducir el número de teléfono de la persona a la que intenta ponerse en contacto, pulse 1. Para introducir el nombre de la persona a la que intenta ponerse en contacto, pulse 2. Para transferir al operador, pulse 0" |
SP[AA/AAEnterExtn] | "Introduzca el número de teléfono y pulse la tecla #" |
SP[AA/AACallingExtn] | "Extensión de llamada" |
SP[AAPhoneReach] | "El número de teléfono al que intenta acceder" |
SP[AA/AAOutOfServicePhone] | "Actualmente está fuera de servicio" |
SP[AA/AANameDial] | "Escriba el apellido de la persona a la que desea llamar seguido del nombre. Para la letra Q, pulse 7, para Z pulse 9" |
SP[AA/AACalling] | "Llamada" |
SP[AA/AASorry] | "Lo siento. Estás teniendo problemas. Por favor, quédate en la fila y algunos estarán contigo en breve". |
SP[AA/AAWant2Call] | "Si éste es el nombre de la persona a la que llama, pulse 1, para volver a empezar, pulse *" |
SP[AA/Still_there] | "¿Todavía estás ahí?" |
Para restablecer el sistema (Cisco Unity Express 2.1.x y versiones anteriores) a los seguimientos predeterminados a través de la CLI, primero inhabilite todos los seguimientos usando el comando no trace all y luego péguelo en la CLI:
trace ccn engine dbug trace ccn libldap dbug trace ccn subsystemappl dbug trace ccn managerappl dbug trace ccn managerchannel dbug trace ccn subsystemjtapi dbug trace ccn subsystemsip dbug trace ccn stacksip dbug trace ccn subsystemhttp dbug trace ccn vbrowsercore dbug trace ccn subsystemcmt dbug trace ccn libmedia dbug trace ccn managercontact dbug trace ccn stepcall dbug trace ccn stepmedia dbug trace config-ccn sip-subsystem debug trace config-ccn jtapi-subsystem debug trace config-ccn sip-trigger debug trace config-ccn jtapi-trigger debug trace config-ccn http-trigger debug trace config-ccn group debug trace config-ccn application debug trace config-ccn script debug trace config-ccn prompt debug trace config-ccn miscellaneous debug trace voicemail database query trace voicemail database results trace voicemail database transaction trace voicemail database connection trace voicemail database execute trace voicemail mailbox login trace voicemail mailbox logout trace voicemail mailbox send trace voicemail mailbox save trace voicemail mailbox receive trace voicemail mailbox delete trace voicemail message create trace voicemail message dec trace voicemail message delete trace voicemail message get trace voicemail message inc trace webinterface initwizard inittrace ccn engine dbug trace ccn libldap dbug trace ccn subsystemappl dbug trace ccn managerappl dbug trace ccn managerchannel dbug trace ccn subsystemjtapi dbug trace ccn subsystemsip dbug trace ccn stacksip dbug trace ccn subsystemhttp dbug trace ccn vbrowsercore dbug trace ccn subsystemcmt dbug trace ccn libmedia dbug trace ccn managercontact dbug trace ccn stepcall dbug trace ccn stepmedia dbug trace config-ccn sip-subsystem debug trace config-ccn jtapi-subsystem debug trace config-ccn sip-trigger debug trace config-ccn jtapi-trigger debug trace config-ccn http-trigger debug trace config-ccn group debug trace config-ccn application debug trace config-ccn script debug trace config-ccn prompt debug trace config-ccn miscellaneous debug trace voicemail database query trace voicemail database results trace voicemail database transaction trace voicemail database connection trace voicemail database execute trace voicemail mailbox login trace voicemail mailbox logout trace voicemail mailbox send trace voicemail mailbox save trace voicemail mailbox receive trace voicemail mailbox delete trace voicemail message create trace voicemail message dec trace voicemail message delete trace voicemail message get trace voicemail message inc trace webinterface initwizard init