Diseñ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
Antecedentes
Las comunicaciones son
vitales para el desarrollo
de cualquier empresa.
Las empresas, utilizan los
centros de contacto para
interactuar
con
sus
clientes.
Antecedentes
Las empresas implementan
sistemas
ACD,
para
distribución de llamadas.
Aparece Asterisk, una
PBX implementada en
software y de código
abierto.
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.
Objetivo General
Tiempo de conexión
del agente
Promedio de la duración de
las llamadas tomadas por el
agente diariamente
Objetivo General
Tiempo de espera del
cliente en cola
Prioridad de la llamada
basada en el identificador
Objetivos específicos
• Implementar 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.
Esquema
Componentes
• Hardware
• Servidor
• Teléfono IP
• Software
• Servicios levantados
• Teléfono IP por software
Hardware
Características del Servidor
CPU
RAM
Disco Duro
Intel Core Duo 2.66 GHz
2 GB
300 GB
Teléfono IP
GrandStream modelo GPX2000
Software
Servicios levantados
Sistema Operativo
Software PBX
Motor Base
de Datos
Linux, Distribución
Centos 5.5
Asterisk versión My Sql Server
1.8.3.2
5.0.8
Softphone
Version Softphone
Zoiper_free_2.37
Servidor
Web
PHP
httpd-2.2.3php 5.1.653.el5.centos 27.el5_5.3
.3
Esquema de Implementación
Implementación
• Elección de política de redirección
• Inicio 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
Elección de política de redirección
La elección de la política de redirección, se realiza
mediante una aplicación Web.
Elección de política de redirección
La información es almacenada en una base de datos.
Elección de política de redirección
Archivo eleccion.php
Inicio de sesión de los agentes
Archivo de configuración agents.conf
Archivo de configuración extensions.conf
Encolamiento de las llamadas
Proceso 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.
Encolamiento de las llamadas
Archivo de configuración queue.conf
Captura de detalle de llamadas
Esta 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.
Captura de detalle de llamadas
Archivo de configuración cdr_mysql.conf
[global]
hostname=localhost
dbname=asterisk
password=labtelecom10
user=root
Captura de detalle de llamadas
Tabla cdr
Captura de detalle de llamadas
Tabla queue_log
Filtrado de llamada por
identificador
La aplicación web permite el ingreso de clientes
VIP por parte del administrador.
Filtrado de llamada por
identificador
Archivo usuariovip.php
Redirección de llamada al agente elegido
Esta 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.
Redirección de llamada al agente elegido
Agente de mayor/menor tiempo conectado
Redirección de llamada al agente elegido
Agente 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;";
Redirección de llamada al agente elegido
Agente de mayor/menor promedio diario de duración de
llamadas tomadas
Redirección de llamada al agente elegido
Agente 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);";
Pruebas
Ver video
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.
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.
Recomendaciones
• Utilizar programas que emulen teléfono IP
(softphones).
• Utilizar aplicaciones de código abierto.
• Reducir estrés producido por tiempo de
espera.
Recomendaciones
• Revisar el uso de herramientas para
manejo de datos en tiempo real de
Asterisk.
• Plantearse AMI como solución alternativa
para este trabajo.
Preguntas
Gracias por su atención
Descargar

Diseño e Implementación de un Sistema de