b. Campañas v5



Creación

 

 Campañas

 

Opción donde se configuran las campañas del sistema.

Configuración de campañas de interacción con el sistema.

 

Nuevas campañas

 

Las campañas permiten definir diferentes agrupaciones de agentes tanto para la atención como para la salida de llamadas para fuera de la organización.

Aquí se definirá el comportamiento que tendrán estas campañas, tales como músicas en espera, notificaciones, estrategia de ACD en los diferentes agentes, umbrales de control etc.

 

Agrupaciones dentro de campañas

 

Como explicábamos en el punto de creación de agentes siempre es necesario agregar al agente a las campañas en las que estará trabajando. Se supone que se agregara al agente en función al tipo de trabajo que esté realizando el cual puede ser atendiendo llamadas, como realizando estas o campañas de marcador. 

Este punto es importante ya que permitirá que se generen estadísticas operativas a nivel de la campaña en si como a nivel del agente en lo que respecta a tiempos, cantidades, etc.

Campañas de Voz

 

Entrante

 


Saliente

 

 

Definición de dirección de campaña: Se debe de especificar qué tipo de campaña es (si es entrante o saliente).

Nombre: Nombre de la campaña.

Email: Email de la campaña.

DID: DID (número telefónico) asociado a la campaña para fines de identificación.

Música en Espera: Nombre de la clase de música en espera (default: default) (entrante).

Tiempo Máximo: Cuánto tiempo se deja sonar en el teléfono del agente (entrante).

Reintento: Cuanto tiempo esperar antes de tratar a todos los miembros nuevamente (entrante).

Wrapup: Tiempo para que no envíe otra llamada luego de cortar permite al interno terminar lo que esté haciendo (ej. ingreso de datos) (entrante) 

Cadena de marcado: Proveedor que se utiliza en la salida de llamadas que se marcan manualmente (saliente).

Máximo: Máxima cantidad de personas esperando en la campaña (0 sin límite) (entrante)

Nivel de Servicio: Umbral para calcular nivel de servicio (entrante/saliente).

Peso: Peso de la campaña, a más peso más prioridad (entrante).

Retraso de Agente: Espera  antes de poder hablar o escuchar anuncio (entrante).

 

Para llamadas entrantes: Las Atendidas dentro del nivel de servicio en segundos.

Para las salientes: Duración de la llamada estimada como buena para la gestión. 

 

Contexto: Contexto para que si se digita algo mientras se está en la campaña se vaya a ese contexto (entrante).

Tiempo de Anuncio: Cada cuanto tiempo se anuncia la posición de la campaña o tiempo estimado (0 es off) (entrante).

Anuncio Periódico: Nombre de un audio para ser reproducido cada cierto tiempo durante la espera.  Utiliza el parámetro tiempo de anuncio para reproducirse (Entrante).

Estrategia (entrantes):

  •  ringall: Ring en todos hasta que uno atiende.

  •  leastrecent :Ring al que fue llamado con más tiempo desde la última vez.

  •  fewestcalls : El que tenga menos llamadas atendidas.

  •  random : Randomico.

  •  rrmemory :Round robin con memoria.

  •  linear : Ring en orden.

  •  wrandom : Randomico pero usa el penalti como peso, skills.

Redondeo Segundos: Como redondear los segundos 0 5 10 15 20 o 30 (entrante).

Entrar en vacía (Entrantes): Separados por comas los siguientes status:

  • paused: Los miembros se consideran no disponibles si están en pausa.

  • penalty: Los miembros se consideran no disponibles si sus penalizaciones son menos que QUEUE_MAX_PENALTY.

  • inuse: Los miembros se consideran no disponibles si su estado de dispositivo está en uso.

  • ringing: Los miembros se consideran no disponibles si su estado de dispositivo es Sonando.

  • unavailable: Se aplica principalmente a canales de agente; si el agente no esta logueado pero es un miembro de la cola, es considerado no disponible.

  • invalid: Los miembros se consideran no disponibles si su estado de disposiivo es Inválido. Esto tipicamente es una condición de error.

  • unknown: Los miembros se consideran no disponibles si su estado de dispositivo es Desconocido.

  • wrap-up: Los miembros se consideran no disponibles si están actualmente en en tiempo de wrapup luego de finalizada una llamada.

 

Salir en vacía: salen de la campaña si se vacía (entrantes).

Separados por comas los siguientes status:

  • paused: Los miembros se consideran no disponibles si están en pausa.

  • penalty: Los miembros se consideran no disponibles si sus penalizaciones son menos que QUEUE_MAX_PENALTY.

  • inuse: Los miembros se consideran no disponibles si su estado de dispositivo está en uso.

  • ringing: Los miembros se consideran no disponibles si su estado de dispositivo es Sonando.

  • unavailable: Se aplica principalmente a canales de agente; si el agente no esta logueado pero es un miembro de la cola, es considerado no disponible.

  • invalid: Los miembros se consideran no disponibles si su estado de disposiivo es Inválido. Esto tipicamente es una condición de error.

  • unknown: Los miembros se consideran no disponibles si su estado de dispositivo es Desconocido.

  • wrap-up: Los miembros se consideran no disponibles si están actualmente en en tiempo de wrapup luego de finalizada una llamada.

 

Agendar: Se encuentra el horario de la campaña.

Bienvenida: Nombre del audio que se usara como música de bienvenida dentro del flujo como parámetro.

Fuera de Horario: Nombre del audio que se usara como música de Fuera de Hora dentro del flujo como parámetro.

Umbrales: Esta sección permite definir umbrales para la supervisión de la campaña, entre ellos:

Nivel de servicio  (Ej. 40-80 porcentaje):

  • Primer rango Rojo (Ej 0-40), segundo Amarillo (Ej 40-80), tercero Verde (Ej > 80).

Tasa de abandono  (Ej. 20-60 porcentaje):

  • Primer rango Verde (Ej 0-20), segundo Amarillo (Ej 20-60), tercer Rojo (Ej > 60).

Tiempo de llamada y No llamada  (Ej. 60-180-300 tiempo en segundos):

  • Primer rango sin alerta (Ej 0-60 segundos), segundo rango teléfono en amarillo (Ej Llamadas entre 60 y 180 segundos de duración), tercer rango teléfono rojo (Ej > 180 segundos).

  • Si el agente no atiene llamadas en mas de X tiempo se ve un warning rojo (Ej > 300 segundos sin llamada se alerta).

ACD (Ej. 3-6 cantidades)

  • Hasta el primer valor el ACD esta en verde entre los mismos en Amarillo y Rojo para mayores .

Descansos (Ej 300-400-100-200):

  • Para todos los descansos que tenga configurado el sistema se pone el limite máximo en segundos que debería estar, de lo contrario se alerta en la columna de alertas con el símbolo del break en rojo que esta pasado de tiempo.

 

Reportar Tiempo de Espera: Si se reporta o no el tiempo de espera al agente. (Entrante).

Tiempo para Restart: Si esta seleccionado el timeout para un interno para atender es reseteado si da busy o congestión, esto para sí el internos puede rechazar la llamada o cancelarla (Entrante).

Anunciar Posición: Si se anuncia o no la posición en la que se encuentra en la campaña al cliente (Entrante).

Anunciar Tiempo de Espera: Si se anuncia o no el tiempo de espera al cliente (Entrante).

Espera virtual: Si se activa o no la funcionalidad de Espera virtual (Entrante). Esta funcionalidad permite rellamar a clientes que por alguna razón abandonaron la cola de espera. Solo hace falta configurar el Flujo (virtualhold → .XXX  para configurar por donde salen las llamadas del VirtualHold)

 

Grabar: Si se graban o no las llamadas entrantes a los internos en las campaña, la definición de grabación de salientes se realiza en el flujo de llamadas directamente (setear guid  como nombre de la grabación en el flujo antes de entrar a la campaña).

Ring en Uso: True, permite enviar llamadas a internos que estén InUse, sirve si tienen más de una línea y quieren atender de más de uno a la vez (entrantes).

Form: Aquí se define el Form o la URL que hay que desplegar al hacer clic en el botón de formularios para determinada campaña.

  • Opción 1:  uContact Form : Solo nombre del Form o Nombre del Form y | true (esto para desplegar la cruz del form y poder cerrarlo).

          Ejemplos:  Codigos | true

                           Codigos

  • Opción 2: uContact URL:  URL bien formada y | nombre a mostrar en Tab o URL bien formada | nombre del tab  | true (esto para desplegar la cruz del form y poder cerrarlo).

          Ejemplos:   http://www.observador.com.uy | Observa

                            http://www.observador.com.uy | Observa | true

 

Miembros de Campañas

 

Opción donde se manejan los miembros asignados a las campañas.

Miembros de Telefonía

 

 

En este lugar se asignan los agentes o internos a las campañas, se pone su estado (si esta en pausa) y su skill (penalización).

 

Campañas: Se selecciona la campaña.

Agentes: Se selecciona los agentes que se quieren agregar a la campaña.

Dentro de Miembros en su configuracion: En Pausa: Si está en pausa el interno se marcará la casilla de pausa.

Penalización: Mientras menos penalización tenga un agente, más llamadas le ingresaran al mismo. Si se toma como skill, mientras menos penalización

mayor skill tendrá el agente.

 Miembros: Permite visualizar los agentes asignados a la campaña seleccionada,  permite quitar de la campaña agentes de a uno o de a grupos.

Buscar: Permite búsquedas por nombre del agente (pueden ser nombres parciales para mostrar parecidos). Al buscar a un Agente, se podrá ver las campañas a las que el mismo pertenece.

 

 

Funcionamiento al seleccionar múltiples campañas:

Al seleccionar varias campañas se mostrarán todos los agentes que pertenecen a las mismas. 

Es posible agregar agentes a las campañas seleccionadas. Se deben elegir los agentes que se desean agregar y presionar el botón de agregar.

Nota: En caso de que el agente que se desea agregar no aparece en la lista de agentes (sobre la derecha) es debido a que el mismo ya pertenece a todas las campañas seleccionadas.

Si se seleccionan varias campañas y se elimina uno de los agentes, el mismo se eliminará de todas las campañas seleccionadas.



Festivos

Permite registrar los días festivos para las campañas.

 

 

Para añadir un día festivo se debe hacer click sobre el día deseado donde aparecerá la siguiente ventana:

 


Descripción: La descripción del día festivo.

Hora inicio: Hora de comienzo del día festivo.

Hora fin: Hora de fin del día festivo.

Sonido: Se especifica el sonido para el evento.

Campaña: Se agrega la campaña que se quiere agregar el festivo. Si se desean seleccionar todas las campañas se debe colocar *.

Recurrente: El evento se repetirá siempre en esa fecha (de forma anual).

No recurrente: Ocurre una única vez.

 

Al hacer clic en guardar el evento se agregará a la lista que aparece a la derecha del calendario.

 

 

Dentro de la lista de eventos, si se coloca el puntero sobre uno de los eventos, el mismo se verá resaltado dentro del calendario.

Los eventos recurrentes se muestran con un ícono de loop junto al nombre del evento.

Si se desea eliminar un evento, se debe posicionar sobre el evento a eliminar y presionar la cruz que aparece sobre la esquina.

 

Lista de no marcado


La lista de no marcado permite agregar números a una campaña a los cuales no se desea poder realizar llamadas.

Esta funcionalidad permite gestionar las listas de no marcado de las campañas así como agregar o quitar números específicos. Estas funcionalidades se detallarán más adelante.

 

 

Campaña: Nombre de la campaña que se desea modificar. Es posible seleccionar todas las campañas eligiendo el *.

Número: Número a agregar o quitar de la lista.

Archivo: Archivo que contiene los números de teléfono a agregar.

Formato del archivo .csv

listanegra.csv

23578408;campaña

23113758;campaña

Vaciar una lista

 

Para vaciar una lista se debe seleccionar una campaña y luego presionar la cruz que se encuentra al lado del nombre de la campaña.

 

 

Esto eliminará todos los números de la lista de no marcado de la campaña seleccionada.

 

Eliminar un número de la lista

 

Para eliminar un número de la lista de no marcado, se debe seleccionar la campaña y se debe indicar el número que se desea remover. Luego presionar sobre el botón de eliminar.

Otra forma es buscar el número en la lista y presionar el botón de eliminar.

 

Agregar un número a la lista

 

Para agregar un número a la lista, se debe seleccionar la campaña, indicar el número a agregar y presionar el botón guardar.

Si se desea subir varios teléfonos es posible subir un archivo conteniendo los números de los archivos con el formato especificado anteriormente.

 

 

Salientes

 

Desde Agente con Hardphone

 

 

${OUTGUID}: Guid de la llamada generada ${OUTAGENT}: Nombre del agente que realiza la llamada ${OUTQUEUE}: Nombre de la cola por la que sale la llamada ${OUTDID}: DID numero callerid para usar al salir corresponde al de la cola ${OUDIDALED}: Numero marcado

 

Con Teléfono Java

 

La llamada no se hace en 2 pasos sino directo y el nombre de la cola, guid y did pueden obtenerse de un SIP Header, el resto de las variables son obtenidas directamente de donde corresponden:

 

 

${SIP_HEADER(OUTGUID)}: Guid de la llamada generada ${CDR(accountcode)}: Nombre del agente que realiza la llamada ${SIP_HEADER(OUTQUEUE)}: Nombre Cola ${SIP_HEADER(OUTDID)}: DID numero callerid para usar al salir corresponde al de la cola ${EXTEN}: Numero marcado

 

Ejemplo Completo para ambos casos

 

Podemos ver las variables que se ejecutan y como se toman en cuenta las que llegan dependiendo del modo que se ejecute el agente.

Es importante usar __Ani para poder buscar en Logs.

El QueueUpdate en el Hangup es fundamenta por temas de estadísticas de campañas salientes.

En Hangup tambien agregar Set(CDR(userfield)=${userfield}) para Marcar la Grabación 

Es posible ejecutar en el Dial un Macro para enviar datos al cliente una vez la llamada es atendida.

 

exten=> _9XXXXXXXX,1,Set(VOLUME(TX)=2) exten=> _9XXXXXXXX,2,Set(VOLUME(RX)=2) exten=> _9XXXXXXXX,3,GotoIf($["${OUTQUEUE}"= ""]?48:4) exten=> _9XXXXXXXX,4,Set(__OUTQUEUE=${OUTQUEUE}) exten=> _9XXXXXXXX,5,Set(__DIALED=${OUTDIALED}) exten=> _9XXXXXXXX,6,Set(__AGENT=${OUTAGENT}) exten=> _9XXXXXXXX,7,Set(CALLERID(num)=${OUTDID}) exten=> _9XXXXXXXX,8,Set(CALLERID(name-pres)=allowed_passed_screen) exten=> _9XXXXXXXX,9,Set(event=${ODBC_Data(select event from queue_log where agent = '${OUTAGENT}' and queuename= '${OUTQUEUE}' and event in ('PAUSE', 'UNPAUSE') ORDER BY id DESC LIMIT 1)}) exten=> _9XXXXXXXX,10,GotoIf($["${event}" = "PAUSE"]?46:11) exten=> _9XXXXXXXX,11,GotoIf($["${OUTGUID}" = ""]?41:12) exten=> _9XXXXXXXX,12,Set(__guid=${OUTGUID}) exten=> _9XXXXXXXX,13,Set(CDR(guid)=${guid}) exten=> _9XXXXXXXX,14,Set(CDR(type)=record) exten=> _9XXXXXXXX,15,MixMonitor(${guid}.gsm,b,) exten=> _9XXXXXXXX,16,Set(CDR(campaign)=${OUTQUEUE}) exten=> _9XXXXXXXX,17,Set(CDR(accountcode)=${AGENT}) exten=> _9XXXXXXXX,18,Set(__idLlamada=${guid}) exten=> _9XXXXXXXX,19,Set(__REALDIALED=${EXTEN:1}) exten=> _9XXXXXXXX,20,Set(existeNum=${ODBC_Data(SELECT COUNT(*) FROM black_list WHERE (campaign like '${OUTQUEUE}%' || campaign like '*%') AND phone ='${EXTEN}')}) exten=> _9XXXXXXXX,21,GotoIf($["${existeNum}"!= "0"]?38:22) exten=> _9XXXXXXXX,22,Dial(SIP/DINSTAR/${EXTEN:1},180,TKkc,) exten=> _9XXXXXXXX,23,Set(CDR(causecode)=${HANGUPCAUSE}) exten=> _9XXXXXXXX,24,NoOp(${DIALSTATUS}) exten=> _9XXXXXXXX,25,NoOp(${HASH(SIP_CAUSE,${CDR(dstchannel)})}) exten=> _9XXXXXXXX,26,NoOp(${HANGUPCAUSE}) exten=> _9XXXXXXXX,27,GotoIf($["${DIALSTATUS}" = "BUSY"]?36:28) exten=> _9XXXXXXXX,28,GotoIf($["${DIALSTATUS}" = "CONGESTION"]?36:29) exten=> _9XXXXXXXX,29,GotoIf($["${DIALSTATUS}" = "CHANUNAVAIL"]?34:30) exten=> _9XXXXXXXX,30,GotoIf($["${DIALSTATUS}" = "CANCEL"]?32:31) exten=> _9XXXXXXXX,31,Hangup() exten=> _9XXXXXXXX,32,Playback(outofservice,) exten=> _9XXXXXXXX,33,Goto(agentes,${EXTEN},31) exten=> _9XXXXXXXX,34,Playback(outofservice,) exten=> _9XXXXXXXX,35,Goto(agentes,${EXTEN},31) exten=> _9XXXXXXXX,36,Playback(busy,) exten=> _9XXXXXXXX,37,Goto(agentes,${EXTEN},31) exten=> _9XXXXXXXX,38,Set(dummy=${ODBC_Repo(INSERT INTO black_list_history(calldate\,src\,dst) VALUES (now()\,'${AGENT}'\,'${EXTEN}'))}) exten=> _9XXXXXXXX,39,Playback(DNCRaudio,) exten=> _9XXXXXXXX,40,Goto(agentes,${EXTEN},31) exten=> _9XXXXXXXX,41,GotoIf($["${SIP_HEADER(OUTGUID)}" = ""]?44:42) exten=> _9XXXXXXXX,42,Set(__guid=${SIP_HEADER(OUTGUID)}) exten=> _9XXXXXXXX,43,Goto(agentes,${EXTEN},13) exten=> _9XXXXXXXX,44,GUID(__guid) exten=> _9XXXXXXXX,45,Goto(agentes,${EXTEN},13) exten=> _9XXXXXXXX,46,Playback(pausaerror,) exten=> _9XXXXXXXX,47,Hangup() exten=> _9XXXXXXXX,48,GotoIf($[$["${SIP_HEADER(OUTQUEUE)}"= ""]|$["${SIP_HEADER(OUTQUEUE)}"= "null"]]?54:49) exten=> _9XXXXXXXX,49,Set(__AGENT=${CDR(accountcode)}) exten=> _9XXXXXXXX,50,Set(__DIALED=${EXTEN}) exten=> _9XXXXXXXX,51,Set(__OUTQUEUE=${SIP_HEADER(OUTQUEUE)}) exten=> _9XXXXXXXX,52,Set(CALLERID(num)=${SIP_HEADER(OUTDID)}) exten=> _9XXXXXXXX,53,Goto(agentes,${EXTEN},8) exten=> _9XXXXXXXX,54,Set(HASH(Result)=${ODBC_Data(select did\,name from queues where name in (select queue_name from queue_members where membername = '${CDR(accountcode)}') and direction = 'Outbound')}) exten=> _9XXXXXXXX,55,GotoIf($["${HASH(Result,name)}"= ""]?61:56) exten=> _9XXXXXXXX,56,Set(__AGENT=${CDR(accountcode)}) exten=> _9XXXXXXXX,57,Set(__DIALED=${EXTEN}) exten=> _9XXXXXXXX,58,Set(__OUTQUEUE=${HASH(Result,name)}) exten=> _9XXXXXXXX,59,Set(CALLERID(num)=${HASH(Result,did)}) exten=> _9XXXXXXXX,60,Goto(agentes,${EXTEN},8) exten=> _9XXXXXXXX,61,Background(llamadasincola,,,) exten=> _9XXXXXXXX,62,Hangup() exten=> h,1,Set(CDR(userfield)=${userfield}) exten=> h,2,QueueUpdate(${OUTQUEUE},${UNIQUEID},${AGENT},${DIALSTATUS},${ANSWEREDTIME},${DIALEDTIME}|${DIALED}|${IdLlamada}|)

 

En la creación de campañas se define el Form o la URL que hay que desplegar al hacer clic en el botón de formularios para determinada campaña.

Opción 1:  uContact Form:   Solo nombre del Form, Nombre del Form y | true (esto para desplegar la cruz del form y poder cerrarlo)

Ejemplos:  Codigos | true

                Codigos

Opcion 2: uContact URL:  URL bien formada y | nombre a mostrar en Tab o URL bien formada | nombre del tab  | true (esto para desplegar la cruz del form y poder cerrarlo)

Ejemplos:   http://www.observador.com.uy | Observa

                 http://www.observador.com.uy | Observa | true



Entrantes

 

Podemos ver el workflow de ejecución.

Es importante usar __Ani para poder buscar en Logs.

Ya no usamos mas MACRO para pasar datos de CTI sino SIP HEADER, esta se persiste durante toda la llamada lo cual debería si es una transferencia tambien pasar los datos, también es posible eliminar el HEADER.

Ejemplo

 

 

 

Para Hardphones si se quiere autoanswer setera el SIP Header: P-Auto-Answer: normal.

 

En El SIPAddHeader setear que Form o la URL que hay que desplegar al entrar una llamada .

Opción 1:  uContact Form:   Solo nombre del Form, Nombre del Form y | true (esto para desplegar la cruz del form y poder cerrarlo)

Ejemplos:  Codigos | true

                Codigos

 

 

 

Opcion 2: uContact URL:  URL bien formada y | nombre a mostrar en Tab o URL bien formada | nombre del tab  | true (esto para desplegar la cruz del form y poder cerrarlo)

Ejemplos:   http://www.observador.com.uy | Observa

                 http://www.observador.com.uy | Observa | true

 

 

 



Avanzadas

 

Ir primero a un agente

 

  • Setear en los agentes diferentes números de penalización.

  •  Setear en la campaña la estrategia wrandom.

  •  En el Workflow setear las variables con el mismo número (el de la penalización del agente por el que se quiere comenzar), y en el wrokflow en la actividad de Queue setear la rule que se quiera o sea la que esta entre [] en el archivo queuerules.conf .

     

  • En /etc/asterisk/queuerules.conf agregar una regla que después de X tiempo si no lo pudo contactar comience a saltar por los agentes disponibles.

 

 

 

Significa: 

Después de 30 segundos, ajustar las variables QUEUE_MAX_PENALTY en +1000 y ajustar QUEUE_MIN_PENALTY en - 1000

esto hace que luego de este tiempo ya salte entre otros agentes.

 

 

Ejemplo