Saber si todos los agentes estan ocupados antes de mandar a la cola

766 views
Skip to first unread message

Ivan

unread,
Jul 22, 2010, 12:38:00 PM7/22/10
to asterisk-es
Hola,

Me gustaria saber como determinar si estan todos los agentes ocupados
para poder decir el tipico mensaje de "nuestros agentes se encuentran
ocupados....." antes de ponerlos con la musica en espera, si no estan
en espera me gustaria mandarlos a la cola con:

queue(cola,r)

para que suene linea hasta ser atendido.

Tengo el mensaje periodico diciendo que los agentes siguen ocupados
ahora me falta el mensaje de que todos estan ocupados.

Saludos y gracias.

Raúl Alexis Betancor Santana

unread,
Jul 22, 2010, 2:00:11 PM7/22/10
to aster...@googlegroups.com

Es tan simple, como sacar las estadísticas de la cola y ver si hay agentes
libres.

Ahora te toca leer un poco sobre como sacar estadísticas de la cola.

--
Raúl Alexis Betancor Santana
Dimensión Virtual

Ivan

unread,
Jul 22, 2010, 4:05:51 PM7/22/10
to asterisk-es
Gracias, al menos ya tengo un hilo por donde tirar, jejejje

On 22 jul, 20:00, Raúl Alexis Betancor Santana <r...@dimension-

Ivan

unread,
Jul 23, 2010, 3:11:48 AM7/23/10
to asterisk-es


> Es tan simple, como sacar las estadísticas de la cola y ver si hay agentes
> libres.
>
> Ahora te toca leer un poco sobre como sacar estadísticas de la cola.

He estado buscando informacion pero solo he encontrado:


QUEUE_WAITING_COUNT(cola) -> numero de llamadas sin atender esperando
en la cola
QUEUE_MEMBER_COUNT(cola) - > numero de agentes en la cola

Uso la version 1.4 y no encuentro nada para saber si tengo agentes
libres y en funcion de ello proceder.

Saludos y gracias

Elio Rojano

unread,
Jul 23, 2010, 3:55:23 AM7/23/10
to aster...@googlegroups.com
No has leído lo que te han dicho: 
   > Es tan simple, como sacar las estadísticas de la cola y ver si hay agentes libres.

Asterisk guarda en las estadísticas de la cola todo lo referente a dichas colas (número de llamadas, esperando) agentes libres, agentes ocupados, etc... no es consultar una variable, ni una aplicación ... debes "currártelo" un poco más.

Raúl Alexis Betancor Santana

unread,
Jul 23, 2010, 4:13:37 AM7/23/10
to aster...@googlegroups.com

http://www.voip-info.org/wiki/view/Asterisk+Manager+API+Action+QueueStatus

Sacado del PRIMER enlace que devuelve google al preguntar por "asterisk AMI
queue"

Ahora ... te toca currarte la parte programatática del asunto.

Saludos

TelecoSilvia

unread,
Jul 23, 2010, 5:18:00 AM7/23/10
to asterisk-es
Igual te sirven las opciones joinempty y leavewhenempty al definir las
colas, creo que con "strict" incluía el caso que los agentes
estubieran ocupados.

On 23 jul, 10:13, Raúl Alexis Betancor Santana <r...@dimension-
virtual.com> wrote:
> On Friday 23 July 2010 08:11:48 Ivan wrote:
>
> > > Es tan simple, como sacar las estadísticas de la cola y ver si hay
> > > agentes libres.
>
> > > Ahora te toca leer un poco sobre como sacar estadísticas de la cola.
>
> > He estado buscando informacion pero solo he encontrado:
>
> > QUEUE_WAITING_COUNT(cola) -> numero de llamadas sin atender esperando
> > en la cola
> > QUEUE_MEMBER_COUNT(cola) - > numero de agentes en la cola
>
> > Uso la version 1.4 y no encuentro nada para saber si tengo agentes
> > libres y en funcion de ello proceder.
>
> http://www.voip-info.org/wiki/view/Asterisk+Manager+API+Action+QueueS...

Ivan

unread,
Jul 23, 2010, 8:07:49 AM7/23/10
to asterisk-es
Esto lo que me haria es pasar a la siguiente linea del dialplan,
igualmente pasarian a la siguiente linea al finalizar una llamada
atendida por un operador.
> > Dimensión Virtual- Ocultar texto de la cita -
>
> - Mostrar texto de la cita -

Ivan

unread,
Jul 23, 2010, 8:50:57 AM7/23/10
to asterisk-es
Haber si lo estoy entendido bien,

Segun interpreto tengo que usar un lenguaje cualquiera de
programacion, realizar una aplicacion que abra un socket para
comunicarme con asterisk via AMI, loguearme y que cada vez que entre
una llamada le pida:

Action: QueueStatus

Con lo que recebire algo asi como:

Response: Success
Message: Queue status will follow

Event: QueueParams
Queue: test_queue
Max: 0
Calls: 4
Holdtime: 2
Completed: 0
Abandoned: 0
ServiceLevel: 0
ServicelevelPerf: 0.0
Weight: 0

Event: QueueMember
Queue: test_queue
Name: IAX2/testing
Location: IAX2/testing
Membership: dynamic
Penalty: 0
CallsTaken: 0
LastCall: 0
Status: 6
Paused: 0

Y mirando el estado de cada uno de los agentes podre determinar si hay
alguno libre o no.

¿Ha eso es lo que os referiais?
Pues si, si que hay que currarselo sabiendo que en la version 1.6 se
puede usar QUEUE_MEMBER(cola,free)

Ahora, no se que hacer, pasar a 1.6, pasar del mensaje previo
informando de que los agentes estan ocupados, o pasar un monton de
horas programando.....

Saludos y gracias de nuevo
> > - Mostrar texto de la cita -- Ocultar texto de la cita -

José Ferney Franco Baquero

unread,
Jul 26, 2010, 6:44:27 PM7/26/10
to aster...@googlegroups.com
2010/7/23 Ivan <ivan....@gmail.com>


QUEUE_WAITING_COUNT(cola) -> numero de llamadas sin atender esperando
en la cola
QUEUE_MEMBER_COUNT(cola) - > numero de agentes en la cola
 
Podrías usar la función QUEUE_MEMBER_LIST(<queuename>) para conocer la información de los miembros de la cola. Y luego usar la función DEVSTATE(device) para conocer el estado de cada uno de ellos. Usar el AMI para algo tan simple me parece un desperdicio.

Ivan

unread,
Jul 28, 2010, 3:12:08 AM7/28/10
to asterisk-es
Es en lo que estaba trabajando, comparto con todos la solucion,


exten => s,1,answer
exten => s,n,wait(0.3)
exten => s,n,playback(bienvenida)
exten => s,n,Set(AGENTES=${QUEUE_MEMBER_LIST(cola)})
exten => s,n,Set(NUMEROAGENTES=${FIELDQTY(AGENTES|\,)})
exten => s,n,Set(i=1)
exten => s,n,While($[${i} <= ${NUMEROAGENTES}])
exten => s,n,Set(AGENTE=${CUT(AGENTES,\,,${i})})
exten => s,n,Verbose(1,El estado del miembro ${AGENTE} es: ${DEVSTATE($
{AGENTE})})
exten => s,n,GotoIf($["${DEVSTATE(${AGENTE})}" = "NOT_INUSE"]?libre)
exten => s,n,Set(i=$[${i} + 1])
exten => s,n,EndWhile
exten => s,n,Playback(espera)
exten => s,n,Queue(cola)
exten => s,n,Hangup()
exten => s,n(libre),Queue(cola,r)
exten => s,n,hangup()




On 27 jul, 00:44, José Ferney Franco Baquero <fer...@gmail.com> wrote:
> 2010/7/23 Ivan <ivan.fde...@gmail.com>

thechicola

unread,
Jul 28, 2010, 8:19:21 AM7/28/10
to aster...@googlegroups.com
Dejame ver si entendí Ivan,

Con estos seteo de parametros, se puede hacer que si en una cola estan todos los agentes ocupado, lo mande para otra???


Porque mi problema va que hay veces que hay agentes libre y hay llamada en espera que duran al recedor de 15 segundos para llegar al agente.

hay que setear algun parametro en queue.conf y en agent.conf, porque tengo los usuario dinamico que lo agrego por AddQueueMember


Alguna sugerencia para mejorar eso??
o con tu configuracion se puede mejorar.



2010/7/28 Ivan <ivan....@gmail.com>
--
Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)

Entra ahora en el canal de irc de Asterisk-ES para charlar en directo sobre VoIP y
Asterisk: http://www.asterisk-es.org/

~~~~~ Normas de la lista Asterisk-ES: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Para anular la suscripción: asterisk-es...@googlegroups.com

Reply all
Reply to author
Forward
0 new messages