3CX – Condiciones y Variables
Daniel Anchondo avatar
Escrito por Daniel Anchondo
Actualizado hace más de una semana

En este Capítulo

  • Introducción

  • Variables

  • Variables de sesión

  • Bloques de construcción de control de flujo

  • Asignar una variable

  • Incremento Variable

  • Variable de decremento

  • Crear una condición

  • Loop

  • Logger

  • Salir de la aplicación

 

Introducción

Durante un flujo de llamadas, generalmente necesitamos tomar decisiones y hacer diferentes cosas dependiendo de las diferentes condiciones. Por ejemplo, si una base de datos nos dice que la ID y el PIN de un cliente son válidos, es posible que tengamos que transferir la llamada a una cola de llamadas específica y hacer otra cosa. O podríamos necesitar que la persona que llama vuelva a intentar ingresar una ID, iterando varias veces un conjunto de componentes (entrada de usuario, validación, etc.). Para hacer esto, necesitamos usar variables, bucles y condiciones. En este capítulo, explicaremos los componentes disponibles de manera inmediata.

 

Variables

Las variables son como “cajas” con un nombre, en el que puede poner un valor y recuperarlo más tarde.

Puede definir variables para usar en su proyecto, en diferentes niveles:

  • Nivel del proyecto: las variables definidas en este nivel se pueden usar en todo el proyecto mediante cualquier callflow, marcador o componente definido por el usuario. Son variables globales que se pueden usar, por ejemplo, para compartir datos entre un flujo de llamadas y componentes definidos por el usuario.

  • Flujo de llamada o nivel de marcador: estas variables son visibles dentro del flujo de llamadas o del marcador, pero no pueden ser vistas por ningún componente secundario.

  • Nivel de componente definido por el usuario: estas variables pueden ser públicas o privadas. Las variables públicas son visibles por el flujo de llamadas principal, el marcador o el componente del usuario, y se pueden usar para establecer parámetros y personalizar el comportamiento del componente. Las variables privadas solo son visibles internamente en el componente definido por el usuario.

Las variables pueden ser de solo lectura (solo se pueden asignar la primera vez durante la inicialización) o de lectura y escritura (el valor puede cambiarse más adelante durante el procesamiento de la llamada).

Las variables no se comparten entre llamadas. Cuando el sistema procesa más de 1 llamada a la vez, cada llamada tiene su propio conjunto de instancias variables. Un valor establecido en la llamada 1 no se puede ver en la llamada 2, son independientes.

Para crear variables, vaya a la ventana Explorador de proyectos, seleccione el proyecto, el flujo de llamadas, el marcador o el componente (según el nivel de variable que desee usar) y luego vaya a la ventana Propiedades, que mostrará el elemento Variables. Haga clic en el botón a la derecha para abrir el Editor de colecciones de variables.

El Editor de colecciones variables

Puede crear tantas variables como necesite.

Variables de sesión

Hay algunas variables de sesión que puede usar en su flujo de llamadas para diferentes propósitos. Estos son:

  • ani: el número de la persona que llama conectada a una aplicación CFD.

  • audioFolder: la ruta a la carpeta donde se guarda el audio de esta aplicación.

  • callid: la única ID de llamada 3CX. Puede usar este valor para hacer coincidir información en 3CX CDR.

  • did: el DID utilizado por la persona que llama para llegar a 3CX.

  • dnis: el número de extensión de la cola donde se implementa esta aplicación CFD.

  • queueCallid: una identificación de llamada utilizada por el servicio 3CX Queue Manager, útil para unir líneas de registro para la misma llamada.

  • transferingExtension: cuando una extensión transfiere una llamada a una aplicación CFD, esta variable contiene el número de extensión que transfirió la llamada.

 

Bloques de construcción de control de flujo

 Los siguientes son los bloques de construcción de control de flujo disponibles listos para su aplicación. Puede configurarlos desde la ventana Propiedades o abrir el cuadro de diálogo de configuración haciendo doble clic en el componente. Cuando una propiedad de entrada es una expresión, haga clic en el botón a la derecha del cuadro de texto para abrir el Editor de expresiones.

 

Asignar una variable

Asignar una configuración variable

Este componente permite asignar un nuevo valor a una variable existente. La variable seleccionada debe ser de lectura y escritura para poder ser asignada. Las propiedades de entrada son las siguientes:

  • VariableName: el nombre de la variable. Debe ser una variable existente definida en el alcance del proyecto, el flujo de llamadas o el alcance del marcador o una propiedad pública de un componente. El cuadro de diálogo Variable Selector permite seleccionar una variable entre todas las disponibles.

  • Expresión: el valor para asignar a la variable. El cuadro de diálogo Expression Editor permite crear fácilmente expresiones complejas. El usuario puede elegir usar una Cadena constante, una Expresión de C #, una Variable o una Función incorporada, donde cada parámetro es una nueva expresión y se puede editar usando un nuevo cuadro de diálogo del Editor de expresiones. Las variables se seleccionan de una lista que muestra todas las variables disponibles en el ámbito actual (variables de solo lectura y lectura-escritura).

Incremento de Variable

Este componente permite incrementar una variable numérica existente. La variable seleccionada debe tener accesibilidad de lectura-escritura para incrementarse. Las propiedades de entrada son las siguientes:

VariableName: el nombre de la variable a incrementar. Debe ser una variable existente definida en el alcance del proyecto, el flujo de llamadas o el alcance del marcador o una propiedad pública de un componente. El cuadro de diálogo Variable Selector permite seleccionar una variable entre todas las disponibles.

 

Decremento de Variable

Este componente permite decrementar una variable numérica existente. La variable seleccionada debe tener accesibilidad de lectura-escritura para poder disminuirla. Las propiedades de entrada son las siguientes:

  • VariableName: el nombre de la variable a disminuir. Debe ser una variable existente definida en el alcance del proyecto, el flujo de llamadas o el alcance del marcador o una propiedad pública de un componente. El cuadro de diálogo Variable Selector permite seleccionar una variable entre todas las disponibles.

Crear una condición

Este componente permite seleccionar una rama para su ejecución cuando se cumple una condición.

Crear un componente de condición

Para agregar una rama, el usuario debe ejecutar el comando “Agregar rama” desde la ventana Propiedades o el menú contextual. Cada rama tiene una propiedad de entrada de condición. Esa propiedad es una expresión que debe evaluarse como verdadera para poder ejecutar la rama. Las ramas se evalúan de izquierda a derecha, por lo que puede cambiar la orden de evaluación utilizando los comandos “Mover a la izquierda” y “Mover a la derecha”, que se muestran cuando se selecciona una rama.

Solo se puede ejecutar una rama, y será la primera que tenga una condición que evalúe como verdadera. La propiedad Condition para la última rama es opcional. Si está configurado, debe cumplirse para ejecutar la rama. Si no está configurado, la rama se ejecuta cuando no todas las ramas anteriores. Si la última rama tiene una condición, es posible que no se ejecute ninguna rama, cuando cada condición se evalúa como falsa.

 

Condición de fecha y hora

Este componente permite seleccionar una rama para la ejecución en función de la fecha y la hora actuales, y también aplicar filtros DID.

Componente de condición de fecha y hora

Para agregar una rama, el usuario debe ejecutar el comando “Agregar rama” desde la ventana Propiedades o el menú contextual. Cada rama tiene 3 propiedades de entrada:

  • Filtro DID: permite especificar que esta rama se activará solo cuando la llamada llegue a 3CX a un DID específico. Puede seleccionar:

  • AllDID para permitir llamadas a cualquier DID

  • AllDIDsWithExceptions para permitir llamadas a cualquier DID, excepto los que están en la lista a continuación (DID separados por comas)

  • SpecificDIDs para permitir llamadas solo a los DID en la lista a continuación

  • Lista de filtros DID: esta es una lista de DID separados por comas, que se considerará cuando el filtro DID sea AllDIDsWithExceptions o SpecificDIDs.

  • DateTimeConditions: esta es la lista de condiciones de fecha y hora que se aplican a esta rama.

Tanto el DID como las condiciones de fecha y hora se deben evaluar como verdaderas para poder ejecutar la bifurcación. Las ramas se evalúan de izquierda a derecha, por lo que puede cambiar la orden de evaluación utilizando los comandos “Mover a la izquierda” y “Mover a la derecha”, que se muestran cuando se selecciona una rama. Solo se puede ejecutar una rama, y será la primera que tenga ambas condiciones que se evalúe como verdadera.

La lista de condiciones de fecha y hora se configura con el Editor de colecciones de condiciones de fecha y hora. Por ejemplo, el siguiente editor muestra 2 condiciones de fecha y hora:

Este editor puede tener tantas filas como necesite. Cuando 1 fila se evalúa como verdadera, toda la condición de fecha y hora se evalúa como verdadera también. Por ejemplo, en la captura de pantalla anterior, la rama se ejecutará entre 0 y 7, y entre 19 y medianoche.

El tiempo configurado en los campos Desde y Hasta está incluido en el rango. Por lo tanto, para configurar un rango de tiempo entre 0 y 7, debe establecerlo entre 0:00 y 6:59.

En este cuadro de diálogo podemos especificar diferentes condiciones de fecha y hora:

  • Día de la semana: para especificar intervalos de tiempo en días específicos de la semana, por ejemplo, todos los lunes.

  • Día específico: para especificar un rango de tiempo en una fecha específica, por ejemplo, un día festivo en particular.

  • Horario de oficina de 3CX: para activar la sucursal durante el horario de oficina global.

  • 3CX Horas fuera de la oficina: para activar la sucursal cuando ya no tenemos horarios de oficina globales.

 

Loop

Este componente permite ejecutar un grupo de componentes mientras se cumple una condición. Los componentes contenidos en el componente Loop se ejecutan de 0 a N veces. Si la condición no se cumple la primera vez, esos componentes no se ejecutan en absoluto. Las propiedades de entrada son las siguientes:

  • Condición: una expresión que debe evaluarse como verdadera para ejecutar los componentes contenidos.

Logger

Este componente permite escribir información en el archivo de registro del Administrador de colas 3CX. Las propiedades de entrada son las siguientes:

Nivel: el nivel de registro (Trace, Info o Error).

Texto: una expresión que devuelve el texto para escribir.

 

Salir de la aplicación

Este componente permite salir de la aplicación actual, también desconectando la llamada. Este es el último componente que se ejecutará.

¿Ha quedado contestada tu pregunta?