Scripter: Preview multillamada

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

Para evitar el comportamiento generado por el bug de poder realizar múltiples redials sobre una llamada preview que no contacta, se recomienda el siguiente procedimiento para reemplazar la función del tipo "llamar" de las acciones cti.

Para utilizar esta metodología, se utilizaran 3 acciones> la acción llamar propiamente dicha, onload de la pagina de búsqueda y onload de la pagina principal.

La ejecución consecutiva de dichas acciones (que se ejecutaran automáticamente sin intervención del operador), generarán una nueva llamada al mismo registro en forma de llamada saliente (calltype 2) asociadas a la campaña saliente del operador y con todas las ventajas que eso implica.


A continuación una descripción simple de cada función en su forma indispensable. Siempre es posible agregarle mas complejidad y contemplar nuevos casos, pero dicha complejidad es accesoria a las necesidades de cada operación en particular.

Acción llamar

Esta función, se encarga de allanar el camino para que las funciones siguientes cursen la llamada. Aquí se definirá a que teléfono se llamará (también se puede definir un nuevo índice, pero se asume que se quiere llamar al mismo).

Toda información se guarda en el frame principal del agente con la función GetAgentFrame() y funcionara a forma de contenedor de las variables globales.

// funcion llamar
 
//Acción CTI Colgar

//Acción CTI Avanzada Cambiar Estado -> Calificar con un estado que indique que se va a realizar una rellamada

//recuperamos el frame del agente
var frm = GetAgentFrame() ;
 
if (frm != null) {
        //seteamos el flag para saber que estamos realizando una llamada hibrida y los datos para dicha llamada
        frm.llamada_hibrida_flag = true;
        frm.llamada_hibrida_indice = $INDICE;
        frm.llamada_hibrida_tel = @TelefonoLlamar.value;
}
 
//pasamos a search mode
var toolbar = GetAgentLink();
if (toolbar != null)
{
        toolbar.SetSearchMode(true);
}

Tener en cuenta que para pasar a search, la llamada tiene que estar calificada. Esto puede hacerse mediante las funciones de cti, o bien obligar al agente que califique la llamada para luego habilitar el botón de llamar.

Onload pagina search

Esta función, que deberá ser ejecutada en el evento onload de la pagina de búsqueda, es la encargada de generar la nueva llamada (en este caso preview) para el registro y teléfono indicado. Notar que valida con un flag si se esta accediendo al modo de llamada híbrida (o multillamada (o como gusten)) para diferenciar los accesos por búsqueda normal del agente. Si el flag no esta en verdadero, la pagina search debería comportarse de forma normal.

var frm = GetAgentFrame() ;
 
//si el flag de llamada hibrida esta levantado....
if ( frm != null && frm.llamada_hibrida_flag == true ) {
        var toolbar = GetAgentLink();
        if (toolbar != null)
        {
                //llamamos al numero e indice indicados en las variables
                toolbar.SearchModeSelect( frm.llamada_hibrida_indice, true, frm.llamada_hibrida_tel );
        }
}

Onload pagina principal

Esta función, que debe correrse dentro de la acción onload de la pagina principal del script de la campaña saliente, se encarga de forzar el llamado que se genero desde el modo search en tipo preview. Puede obviarse si se genera una llamada progresiva desde search, pero algunas plataformas no pueden hacerlo dado que reciben el mensaje "limpieza de llamada normal" ("Call normal clearing" en ingles).

Notar que mas allá de iniciar la llamada, también cambia el flag de llamada híbrida para que siguientes accesos a search mode no disparen esta llamada nuevamente.


var frm = GetAgentFrame() ;
 
//si el flag de llamada hibrida esta levantado, llamara al numero indicado
if (frm !=null && frm.llamada_hibrida_flag == true )
{
        var toolbar = GetAgentLink();
        if (toolbar != null)
        {
                //se agrega cero al numero como a toda llamada saliente
                var tel = '0'  + frm.llamada_hibrida_tel;
                toolbar.ManualCall(tel, '', '');
        }
 
        //se reinicializan las variables
        frm.llamada_hibrida_flag = false;
        frm.llamada_hibrida_indice = 0;
        frm.llamada_hibrida_tel = 0;
}