Bueno después de la instalación vamos a probar un poquito la situación. Crearemos una cola, cuatro agentes, y unos diez usuarios con sus extensiones para experimentar.
Creamos una cola bastante sencilla con estrategia aleatoria (que mas justicia que la propia suerte), y a los agentes miembros de esta.
gabriel@trantor:~$ sudo vim /etc/asterisk/queues.conf [Telecontacto] musicclass = default strategy = random timeout = 15 retry = 5 wrapuptime = 0 maxlen = 0 announce-frequency = 0 announce-holdtime = no member => Agent/1001 member => Agent/1002 member => Agent/1003 member => Agent/1004
Respectivamente ponemos a los agentes.
gabriel@trantor:~$ sudo vim /etc/asterisk/agents.conf agent => 1001,4321,Telecontacto Uno agent => 1002,4321,Telecontacto Dos agent => 1003,4321,Telecontacto Tres agent => 1004,4321,Telecontacto Cuatro
Creamos diez usuarios SIP, a partir de una sencilla plantilla.
gabriel@trantor:~$ sudo vim /etc/asterisk/sip.conf [telecontacto](!) type=friend host=dynamic disallow=all allow=alaw secret=tele00 qualify=yes language=es callgroup=1 pickupgroup=1 [8000](telecontacto) [8011](telecontacto) [8022](telecontacto) [8033](telecontacto) [8044](telecontacto) [8055](telecontacto) [8066](telecontacto) [8077](telecontacto) [8088](telecontacto) [8099](telecontacto)
Bueno y ahora algo de dialplan, de manera sencilla tenemos una extensión que al marcarla entrara a la cola, simulando una serie de llamadas entrantes. Marcaremos desde nuestro teléfono o softphone #70 para llamar la aplicación AgentCallbackLogin, la cual nos pide el numero de agente, la contraseña y la extensión a la cual va a estar asociada el agente. Para “desloguear” al agente podemos volver a marcar #70 solo que omitimos poner la extensión. De igual manera un modo mas automático es marcar #71 seguido del numero del agente.
gabriel@trantor:~$ sudo vim /etc/asterisk/extensions.conf exten => 7000,1,Goto(telecontacto,s,1) ;Agent Login exten=> #70,1,AgentCallbackLogin() exten=> #60,1,AgentLogin(|s) ;Agent Logout exten => _#71XXXX,1,Answer() exten => _#71XXXX,n,System(asterisk -rx "agent logoff Agent/${EXTEN:3}") ;Extensiones principales exten => _80XX,1,Dial(SIP/${EXTEN}) [telecontacto] exten => s,1,Answer exten => s,n,Ringing exten => s,n,SetMusicOnHold(default) exten => s,n,Queue(Telecontacto) exten => s,n,Hangup
Registramos a tres agentes, mas un cuarto usuario que llamara y entrara a la cola de llamadas. Vemos aquí la ejecución al registrar un usuario y “loguearse” con su agente.
*CLI> -- Registered SIP '8011' at 192.9.200.161 port 5065 [Oct 9 22:37:56] NOTICE[22151]: chan_sip.c:13107 handle_response_peerpoke: Peer '8011' is now Reachable. (3ms / 2000ms) -- Executing [#70@default:1] AgentCallbackLogin("SIP/8011-b6701a90", "") in new stack -- Playing 'agent-user' (language 'es') -- Playing 'agent-pass' (language 'es') -- Playing 'agent-newlocation' (language 'es') == Setting global variable 'AGENTBYCALLERID_8011' to '1001' -- Playing 'agent-loginok' (language 'es') == Callback Agent '1001' logged in on 8011 -- Playing 'vm-goodbye' (language 'es') == Spawn extension (default, #70, 1) exited non-zero on 'SIP/8011-b6701a90'
Después de registrar a los agentes, podemos observar ahora los agentes en linea asociados a su respectiva extensión.
*CLI> agent show online 1001 (Telecontacto Uno) available at '8011' (musiconhold is 'default') 1002 (Telecontacto Dos) available at '8022' (musiconhold is 'default') 1003 (Telecontacto Tres) available at '8033' (musiconhold is 'default') 3 agents online
El cuarto usuario marca para entrar a la cola y esta es la ejecución que sigue. La llamada es asignada al agente 1001, asignado en la extensión 8011.
*CLI> -- Executing [7000@default:1] Goto("SIP/8000-b6706260", "telecontacto|s|1") in new stack -- Goto (telecontacto,s,1) -- Executing [s@telecontacto:1] Answer("SIP/8000-b6706260", "") in new stack -- Executing [s@telecontacto:2] Ringing("SIP/8000-b6706260", "") in new stack -- Executing [s@telecontacto:3] SetMusicOnHold("SIP/8000-b6706260", "default") in new stack -- Executing [s@telecontacto:4] Queue("SIP/8000-b6706260", "Telecontacto") in new stack -- Started music on hold, class 'default', on SIP/8000-b6706260 -- outgoing agentcall, to agent '1001', on 'Local/8011@default-b805,1' -- Executing [8011@default:1] Dial("Local/8011@default-b805,2", "SIP/8011") in new stack -- Called 8011 -- SIP/8011-09bc1e48 is ringing -- Agent/1001 is ringing -- SIP/8011-09bc1e48 answered Local/8011@default-b805,2 -- Agent/1001 answered SIP/8000-b6706260 -- Stopped music on hold on SIP/8000-b6706260 == Spawn extension (default, 8011, 1) exited non-zero on 'Local/8011@default-b805,2' == Spawn extension (telecontacto, s, 4) exited non-zero on 'SIP/8000-b6706260'
Vemos a los agentes cuando uno de ellos esta trabajando.
*CLI> agent show online 1001 (Telecontacto Uno) available at '8011' (musiconhold is 'default') 1002 (Telecontacto Dos) logged in on SIP/8022-09bc1e48 talking to SIP/8000-b6706260 (musiconhold is 'default') 1003 (Telecontacto Tres) available at '8033' (musiconhold is 'default') 3 agents online
Ya que tenemos la base vamos a ver como nos va con las estadísticas en la aplicación Queuemetrics, por el momento es todo.
Exelente articulo!! me gustaria sabe como se puede hacer para ejecutar un macro cuando un agente atiende una llamada en cola? se puede ?
LikeLike
Muy buen articulo, me sirvió de mucho, ahora tengo una duda, ¿es posible configurar asterisk para que no entren llamadas si no hay agentes disponibles ?
LikeLike
Si claro puedes poner algo de grupos horarios ademas los agentes deben estar logueados para que ingresen las llamdas
LikeLike
hola buenas tarde , necesito ayuda tengo dos grupos a y b si en el grupo a no receppciona las llamada x motivo en un tiempo determinado quiero que esas yamada se direccionen al grupo B
LikeLike
hola, una consulta agentcallbacklogin, se tiene que descargar porque, en mi trabajo no lo reconoce, agradeceria mucho su ayuda
LikeLike