IVR: Funciones de usuario y macros

De Vocalcom.latam Wiki
Saltar a: navegación, buscar

Muchas veces las funciones definidas en el editor de ivrs no cumplen completamente con la funcionalidad deseada. Para personalizar aun mas el comportamiento de nuestra IVR podemos utilizar las funciones de usuario, donde se podrá ingresar código (en Onnet Language) para lograr nuestro objetivo. La forma mas accesible de conocer como funciona el código es viendo el código que genera el editor y las funciones que utiliza. De todas formas, aquí se comentaran algunas funciones avanzadas que se encuentran en las arbos.

Funciones de sistema

Funciones de cadenas

Para proceso de Strings vamos a disponer de una serie de funciones simples que nos van a ayudar a realizar busquedas, concatenacion y separacion de cadenas, las mas comunes son: STR_STR: Funcion de busqueda, devuelve la posicion en la cadena de la primera coincidencia de busqueda. Recible dos parametros: String donde buscar y String a buscar. ej:

$Temp1 = "Este texto es de prueba";

if (STR_STR($Temp1,"prueba")>0)
{DISPLAY_EVT("ESTO ES UNA PRUEBA");}

STR_TOK: Funcion de busqueda y separacion. Se utiliza para devolver la cadena anterior a la ocurrencia indicada, muy utilizada para separar cadenas que contienen parametros concatenados. Recibe tres parametros: Cadena donde buscar, orden y separador.

$Temp1 = "uno#dos#tres";

$Temp2 = STR_TOK($Temp1,1,"#");
$Temp3 = STR_TOK($Temp1,2,"#");
$Temp4 = STR_TOK($Temp1,3,"#");

DISPLAY_EVT($"Las variables tienen: Temp2: $Temp2 ; Temp3: $Temp3 ; Temp4: $Temp4 .-");

///Resultado: "Las variables tienen: Temp2: uno ; Temp3: dos ; Temp4: tres .-"

STR_LEFT: Esta funcion nos devuelve los N caracteres de la izquierda de la cadena. Recibe dos paramentros: cadena a cortar y la cantidad de caracteres a devolver.

$Temp1 = "01143232515"; ///tel larga distancia

if (STR_LEFT($Temp1,3)== "011")  ///vemos si el codigo de area es buenos aires
{DISPLAY_EVT("El telefono es de buenos aires!");}

STR_RIGHT: Esta funcion nos devuelve los N caracteres a la derecha de la cadena indicada, los parametros a recibir son: cadena a cortar y la cantidad de caracteres a devolver.

$Temp1 = "01143232515"; ///tel larga distancia

$Temp2 = STR_RIGHT($Temp1,8); ///corta el telefono sin el codigo de area.

DISPLAY_EVT($"El telefono sin codigo de buenos aires es $Temp2");

STR_MID: Devuelve la cadena que queda contenida entre dos posiciones de una cadena que la contine. Recibe tres parametros: cadena a cortar, posicion inicial y posicion final

$Temp1 = "1234567890";

$Temp2 = STR_MID($Temp1,3,7);

DISPLAY_EVT($"Temp2 tiene $Temp2); 
///Muestra: "Temp2 tiene 4567"

STR_TRIM: Es una funcion simple que devuelve la cadena pasada por parametro sin espacios.

$Temp1 = "uno dos tres";
$Temp2 = STR_TRIM($Temp1);

DISPLAY_EVT($"Temp2 tiene $Temp2);
///Muestra: "Temp2 tiene unodostres"

STR_LEN: Esta funcion nos devuelve el largo de la cadena enviada como parametro

$Temp1 = "uno dos tres";
$Temp2 = STR_LEN($Temp1);

DISPLAY_EVT($"El largo de Temp1 es de $Temp2 caracteres!");
///Muestra: "El largo de Temp1 es de 12 caracteres!"

Funciones de archivos

FILE_AT_END_WRITE: Funcion para escribir texto al final de un archivo. Recibe como parámetros el nombre del archivo (si no existe lo crea) y la linea de texto a escribir. Ejemplo:

FILE_AT_END_WRITE("d:\LOG_" & DATE_TIME("MMDD",0) & ".log",ME & " ERROR " & DATE_TIME("hhmm",0) & " - " & "Todo mal");

FILE_MKDIR: Se utiliza para crear carpetas, ya que la funcion de escribir texto, si bien crea el archivo de no existir, no crea los folders inexistentes. Recibe como parametro el path completo a crear.

INCAMP_READ

Esta macro nos devolverá información asociada a la campaña de la llamada actual.

La nomenclatura de esta funcion es: INCAMP_READ("param1,param2,...,paramX",($var1,$var2,....,$varX); donde el listado de parametros inicial (entre comillas separados por coma) se le debe corresponder un listado de variables (entre parentesis, separados por coma).

Parametros disponibles (algunos)

Queue.RealQueue : Cola real de la campaña. Onnet por su estructura multisitio maneja colas reales y colas "admin".
CustomerID : Sitio asociado a la campaña de la llamada actual.
MaxChannels : Numero máximo de lineas simultaneas para la campaña.
AgentMsg : Mensaje de audio que escucha el agente al recibir la llamada.
WaitMsg : Mensaje de audio que escucha el cliente al momento de esperar en cola.
Profile : Perfil de atención definido para la campaña.
Priority : Prioridad en cola de la llamada (valor en segundos).
DefLanguage : Idioma por defecto para la campaña.
NoAgentMsg : Mensaje que escucha el cliente en caso de que no haya ningun operador conectado (abnormal closing).
OverflowWaitTime : Tiempo de overflow definido en la campaña.
OverflowChannels : Cantidad de canales definidos como umbral para entrar en overflow para la campaña.
WelcomeMsg : Mensaje de bienvenida asociado a la campaña.
CampaignId : Id de campaña (DID).
Description : Nombre de la campaña dentro del admin.

Colas

GETREALQUEUE: Devuelve la cola real de combinacion entre cola y numero de sitio. El acd al manejar multiples sitios, tiene que diferenciar la cola 500 del sitio 1 y la cola 500 del sitio 2. Para esto maneja una lista de colas "reales", es decir el numero de cola que maneja internamente el ACD. Esta funcion se usa para vincular ambas listas.
TELE_PRESENT: Devuelve la cantidad de agentes conectados para la cola real indicada.
TELE_DISPO: Devuelve la cantidad de agentes disponibles para la cola real indicada.

Crear funciones propias

Mas allá de las funciones que pueden estar disponibles dentro de las arbos, siempre es interesante reutilizar código que se usa con frecuencia. Para esto podemos usar las estructuras del lenguaje para incluir código y llamar funciones.

Etiquetas y goto

Una de las herramientas mas simples del lenguaje de ejecucion secuencial, que permite saltar a partes de codigo ya marcadas mediante etiquetas, para luego saltar a ellas por la sentencia goto. Ejemplo

$Temp1 = 0;
PRINCIPIO:
$Temp1= $Temp1 + 1;
if ($Temp1>5) GOTO(FIN);
DISPLAY_EVT($"Estamos en la vuelta numero: $Temp1");
GOTO(PRINCIPIO);
FIN:
DISPLAY_EVT("adios");

Funciones

Las funciones dentro de el lenguaje de Onnet son en definición y funcionamiento algo bastante simple, solo basta hacer referencia a su nombre y parametros que va a recibir. Sin ser necesario indicar que vaya a devolver parametros y en el caso de que no lo haga, no es necesario agregar el comando return.

///Funcion recursiva

#funtion otraVezYo (msg)
{if (msg == "hola")
 {msg="chau";}
 else 
 {msg="hola";}

DISPLAY_EVT(msg);

otraVezYo(msg); 
}

otraVezYo("hola");

Notese que este ejemplo es un loop infinito de mensajes "hola" y "chau".

///Funcion con retorno de valores

#funtion suma (arg1,arg2)
{$Temp1 = arg1 + arg2;
 
 RETURN($Temp1);}

$Temp2 = suma(1,2);

DISPLAY_EVT($"El resultado de la suma es: $Temp2");

Archivos .onh

Los archivos .onh son archivos de librería que generalmente son incluidos en los archivos compilables (.ons). Su estructura no es compleja, solo hay que entender que cuando se importen el codigo se ejecutara en su integridad reemplazando a la función include. Por lo que, se recomienda siempre, utilizar un GOTO(fin_mi_onh) al comienzo y la etiqueta fin_min_onh al final; evitando así, que el contenido del código se procese de inmediato el contenido del archivo. (Ejemplo el operator.onh)