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.