Luis Miguel Andino Montalvo Javier Alejandro Urquizo Guevara

1 Luis Miguel Andino Montalvo Javier Alejandro Urquizo Gu...
Author: Julia Juárez Ortiz de Zárate
0 downloads 2 Views

1 Luis Miguel Andino Montalvo Javier Alejandro Urquizo GuevaraDiseño e Implementación de un Sistema de Distribución Automática de Llamadas Entrantes (ACD) para un Callcenter Luis Miguel Andino Montalvo Javier Alejandro Urquizo Guevara

2 Antecedentes Las comunicaciones son vitales para el desarrollo de cualquier empresa. Las empresas, utilizan los centros de contacto para interactuar con sus clientes.

3 Antecedentes Las empresas implementan sistemas ACD, para distribución de llamadas. Aparece Asterisk, una PBX implementada en software y de código abierto.

4 Objetivo General Diseñar e Implementar un sistema de distribución automática de llamadas entrantes (ACD) para un Centro de Contacto, utilizando un algoritmo basado en información estadística para decidir la prioridad de asignación de las llamadas a agentes conectados.

5 Objetivo General Promedio de la duración de las llamadas tomadas por el agente diariamente Tiempo de conexión del agente

6 Objetivo General Tiempo de espera del cliente en colaPrioridad de la llamada basada en el identificador

7 Objetivos específicosImplementar una solución como aplicación a una necesidad en el mundo actual. Lograr una fácil transición a través de un sistema amigable. Acoplar diferentes programas y servicios para proveer un sistema eficiente.

8 Esquema

9 Componentes Hardware Servidor Teléfono IP SoftwareServicios levantados Teléfono IP por software

10 Hardware Características del Servidor Teléfono IP GrandStream modelo GPX2000 CPU RAM Disco Duro Intel Core Duo 2.66 GHz 2 GB 300 GB

11 Software Servicios levantados Softphone Sistema Operativo Software PBXMotor Base de Datos Servidor Web PHP Linux, Distribución Centos 5.5 Asterisk versión My Sql Server 5.0.8 httpd el5.centos.3 php el5_5.3 Version Softphone Zoiper_free_2.37

12 Esquema de Implementación

13 Implementación Elección de política de redirecciónInicio de sesión de los agentes Encolamiento de las llamadas Captura de detalle de las llamadas Filtrado de llamada por identificador Redirección de llamada al agente elegido

14 Elección de política de redirecciónLa elección de la política de redirección, se realiza mediante una aplicación Web.

15 Elección de política de redirecciónLa información es almacenada en una base de datos.

16 Elección de política de redirecciónArchivo eleccion.php

17 Inicio de sesión de los agentesArchivo de configuración agents.conf Archivo de configuración extensions.conf

18 Encolamiento de las llamadasProceso mediante el cual se colocan las llamadas en una cola al momento de marcar al Callcenter. En este paso se inactivaran a todos los agentes que no se encuentren contestando una llamada y que se encuentren en línea. El comportamiento de la cola es FIFO.

19 Encolamiento de las llamadasArchivo de configuración queue.conf

20 Captura de detalle de llamadasEsta parte del proyecto captura los datos y las variables para luego utilizarlas en el algoritmo de redirección. Se utilizará un código del software QUEUEMETRICS que maneja los datos de las colas de Asterisk en una base de datos.

21 Captura de detalle de llamadasArchivo de configuración cdr_mysql.conf [global] hostname=localhost dbname=asterisk password=labtelecom10 user=root

22 Captura de detalle de llamadasTabla cdr

23 Captura de detalle de llamadasTabla queue_log

24 Filtrado de llamada por identificadorLa aplicación web permite el ingreso de clientes VIP por parte del administrador.

25 Filtrado de llamada por identificadorArchivo usuariovip.php

26 Redirección de llamada al agente elegidoEsta sección se encargará de activar únicamente al agente que va a recibir la llamada. La elección del agente será en base a la política vigente y a la información recopilada en las bases de datos.

27 Redirección de llamada al agente elegidoAgente de mayor/menor tiempo conectado

28 Redirección de llamada al agente elegidoAgente de mayor/menor tiempo conectado $query1 = "SELECT agent FROM (SELECT o.agent, o.time_id FROM queue_log o WHERE o.verb = 'AGENTLOGIN' AND o.call_id NOT IN (SELECT q.call_id FROM queue_log q WHERE q.verb = 'AGENTLOGOFF') AND o.agent NOT IN (SELECT t.agent FROM queue_log t WHERE t.verb = 'CONNECT' AND t.call_id NOT IN (SELECT q.call_id FROM queue_log q WHERE q.verb = 'COMPLETECALLER' OR q.verb = 'COMPLETEAGENT')) ORDER BY o.time_id) AS e;"; $query1 = "SELECT agent FROM (SELECT o.agent, o.time_id FROM queue_log o WHERE o.verb = 'AGENTLOGIN' AND o.call_id NOT IN (SELECT q.call_id FROM queue_log q WHERE q.verb = 'AGENTLOGOFF') AND o.agent NOT IN (SELECT t.agent FROM queue_log t WHERE t.verb = 'CONNECT' AND t.call_id NOT IN (SELECT q.call_id FROM queue_log q WHERE q.verb = 'COMPLETECALLER' OR q.verb = 'COMPLETEAGENT')) ORDER BY o.time_id DESC) AS e;";

29 Redirección de llamada al agente elegidoAgente de mayor/menor promedio diario de duración de llamadas tomadas

30 Redirección de llamada al agente elegidoAgente de mayor/menor promedio diario de duración de llamadas tomadas $query1 = "SELECT dstchannel FROM (SELECT dstchannel, AVG(duration) dur FROM cdr WHERE DAYOFYEAR(calldate)=DAYOFYEAR(CURDATE()) AND dst='2020' OR dst='2021' GROUP BY dstchannel ORDER BY dur) AS t WHERE dstchannel IN (SELECT agent FROM (SELECT o.agent, o.time_id FROM queue_log o WHERE o.verb = 'AGENTLOGIN' AND o.call_id NOT IN (SELECT q.call_id FROM queue_log q WHERE q.verb = 'AGENTLOGOFF') AND o.agent NOT IN (SELECT t.agent FROM queue_log t WHERE t.verb = 'CONNECT' AND t.call_id NOT IN (SELECT q.call_id FROM queue_log q WHERE q.verb = 'COMPLETECALLER' OR q.verb = 'COMPLETEAGENT'))) AS e);"; $query1 = "SELECT dstchannel FROM (select dstchannel, AVG(duration) dur FROM cdr WHERE DAYOFYEAR(calldate)=DAYOFYEAR(CURDATE()) AND dst='2020' OR dst='2021' GROUP BY dstchannel ORDER BY dur DESC) AS t WHERE dstchannel IN (SELECT agent FROM (SELECT o.agent, o.time_id FROM queue_log o WHERE o.verb = 'AGENTLOGIN' AND o.call_id NOT IN (SELECT q.call_id FROM queue_log q WHERE q.verb = 'AGENTLOGOFF') AND o.agent NOT IN (SELECT t.agent FROM queue_log t WHERE t.verb = 'CONNECT' AND t.call_id NOT IN (SELECT q.call_id FROM queue_log q WHERE q.verb = 'COMPLETECALLER' OR q.verb = 'COMPLETEAGENT'))) AS e);";

31 Pruebas Ver video

32 Conclusiones Se cumplió el objetivo principal de la implementación del Callcenter utilizando Asterisk como software de PBX en conjunto con diversas herramientas. En base a las pruebas realizadas se determinó que el proyecto puede ser aplicado en varias empresas con diferentes políticas.

33 Conclusiones El sistema es amigable al uso de los agentes por lo que facilita la transición a la tecnología VoIP. El sistema permite la utilización de diferentes políticas, por lo cual la eficiencia de la atención a los clientes depende de la elección de las mismas por parte de la empresa.

34 Recomendaciones Utilizar programas que emulen teléfono IP (softphones). Utilizar aplicaciones de código abierto. Reducir estrés producido por tiempo de espera.

35 Recomendaciones Revisar el uso de herramientas para manejo de datos en tiempo real de Asterisk. Plantearse AMI como solución alternativa para este trabajo.

36 Preguntas

37 Gracias por su atención