martes, 14 de junio de 2011

Queuerules en Asterisk 1.8

Aunque la funcionalidad de queuerules se aplicó en la versión de asterisk 1.6, como tantos otros, nosotros hemos empezado a utilizar las nuevas posibilidades que nos encontramos al migrar desde asterisk 1.4 (en nuestro caso 1.4-rsp) a la nueva versión 1.8.



Hoy en día cuando configuramos colas, estas están compuestas por miembros que las atienden. En las colas estos miembros están ordenados para atender llamadas y asterisk decide a quien debe de enviarle la llamada. Esta decisión la toma en base a unos parámetros como la estrategia, o la prioridad de los miembros en la cola. Para el caso que nos atañe, lo que nos interesa es la prioridad o penalty.


Gracias a la prioridad, podemos priorizar quien atenderá las llamadas. La forma común de comportarse una cola sería la siguiente:


Primero atenderán la llamada loa miembros que estén con prioridad “1”, si no hay nadie disponible con esta prioridad, atendrán la llamada los miembros con prioridad “2”, si no los de prioridad “3”, y así sucesivamente.



El problema está en colas con muchas llamadas. En este caso casi siempre los miembros con prioridad 1 están ocupados con lo que saltan a los miembros con prioridad 2. Si queremos que no les entre la llamada a los miembros con prioridad 2 hasta pasados X segundos, solo podíamos dirigirlos hacia otras colas con otros miembros con distinta prioridad, pero esto hace que la persona que ha entrado en la cola pierda su puesto en ella, ya que le mandamos a otra cola.


Pero ahora con podemos hacer que esa prioridad máxima y mínima de atención en la cola varíe en el transcurso de la llamada. Para esto tenemos las reglas de cambio de prioridad definidas en “queuerules.conf” y las variables de canal QUEUE_MIN_PENALTY QUEUE_MAX_PENALTY. Las variables definen la prioridad máxima y mínima de los agentes que atenderán la llamada y esta regla se puede aplicar de dos formas, en la opción “rule” de la aplicación Queue o bien en la opción de cola “defaultrule”.



Queuerules.conf


En este archivo de configuración podemos crear reglas para modificar las prioridades máxima y mínima que atenderán en la cola. Solo los miembros que estén entre estas prioridades máxima y mínima podrán recibir llamadas de la cola. Estas reglas se definen de la siguiente manera en queuerules.conf


; sintaxis

; penaltychange => ,[,cambio absoluto o relativo de QUEUE_MIN_PENALTY]

[myrule]

penaltychange => 30,+1 ; después de 30 segundos, incrementa QUEUE_MAX_PENALTY en 1 y deja QUEUE_MIN_PENALTY igual .

penaltychange => 45,5,2; después de 45 segundos, pone QUEUE_MAX_PENALTY a 5 y QUEUE_MIN_PENALTY lo pone a 2.

penaltychange => 75,,1; después de 30 segundos, deja QUEUE_MAX_PENALTY como estaba y QUEUE_MIN_PENALTY lo pone a 1.



Un ejemplo lógico sería:


Creamos una cola


[COLA1]

musicclass=default

strategy=rrmemory

joinempty=no

leavewhenempty=yes

ringinuse=no

defaultrule=miembros-prio


member => SIP/0000FFFF0001,0,Miembro 1 ; Prioridad 1

member => SIP/0000FFFF0002,1,Miembro 2 ; Prioridad 2

member => SIP/0000FFFF0003,2,Miembro 3 ; Prioridad 3


Tenemos como regla de prioridades en queuerules.conf lo siguiente:


[miembros-prio]

penaltychange => 30,+1

penaltychange => 60,+1


En el dialpan tendríamos esto:


[entrantes]

exten => X.,1,NoOp(Llamada entrante de ${CALLERID(num)})

exten => X.,n,Set(QUEUE_MIN_PENALTY=1)

exten => X.,n,Set(QUEUE_MAX_PENALTY=1)

;Queue(queuename[,options[,URL[,announceoverride[,timeout[,AGI[,macro[,gosub[,rule[,position]]]]]]]]]) con lo que se podría aplicarse la “rule” miembros-prio en esta aplicación ejem: exten => X.,n,Queue(COLA1,,,,,,,,miembros-prio). Como en queues.conf ya la hemos definido como regla por defecto, no hace falta.

exten => X.,n,Queue(COLA1)



Esto hará que primero busque a los miembros con prioridad 1, si están ocupados no busca a miembros con mayor prioridad hasta que pase 30 segundos que es cuando la regla que hemos definido aumenta el QUEUE_MAX_PENALTY a 2. En este momento buscará miembros con prioridad 2 y si están también ocupados no buscará los de más prioridad hasta pasados otros 30 segundos como está definido en la regla miembros-prio.



Fuente: Blog Voz-IP

No hay comentarios.:

Publicar un comentario