Usuarios como miembros dinámicos de Asterisk

Una manera de usar miembros dinámicos utilizando nombres de usuario.

En este artículo veremos una manera de asignar a los miembros (también llamados agentes)* de las colas de Asterisk, un nombre de usuario, para hacer más sencillo su uso y su seguimiento.

Para visualizar mejor la configuración de Asterisk, he instalado FOP2 que nos muestra un panel de llamadas de las colas, Kaj Asternic para mostrar un ejemplo de estadísticas que se pueden recoger.

En Asterisk, el uso de miembros dinámicos suele hacerse por medio de números, que representan generalmente una extensión SIP. Esto lo hace poco cómodo para el usuario. Además, al usar nombres de usuario se puede hacer un seguimiento mejor en las estadísticas.

Cuando no usamos nombres de usuario, el aspecto de una cola de llamadas en el panel de FOP2 podría ser similar al siguiente, solo se verían los números de extensión:

Colas sin nombre de usuario
Los miembros de la cola identificados solo por números o etiquetas estáticas

*Nota: la expresiónAgentesse empleaba en las configuraciones antiguas de Asterisk, se considera obsoleto, pues se usaba un archivo llamado agents.cfg que ya no es necesario. Hoy en día, es peferible utilizar la expresiónMiembrospara evitar confusiones.

Para conseguir nuestro propósito vamos a uilizar un archivo de texto adjunto, en mi caso lo he denominado usuarios.txt, lo guardamos en el directorio de Asterisk o donde queramos, luego indicaremos su ruta.
Solo hay que hacer una configuración en el archivo /etc/asterisk/extensions.conf (tenemos presente que ya tenemos correctamente configuradas las colas en /etc/asterisk/queues.cfg, con miembros dinámicos no es necesario indicar éstos en ese archivo)

La configuración de ejemplo es esta:

exten => _*[a-z].,1,NoOp(-- Petición de login de miembros --)
same => n,Set(VAR=${SHELL(grep ${EXTEN:1} /etc/asterisk/archivos/usuarios.txt -w)}) ; en un archivo guardamos los nombres válidos.
same => n,GotoIf($["${VAR}" = ""]?cuelga) ; si en el archivo no aparece el nombre tecleado por el operario, lo expulsa.
same => n,AddQueueMember(clientes,Local/${EXTEN:1}@atencion_clientes)
same => n,Set(DB(atencion_clientes/${EXTEN:1})=${CALLERID(num)}) ; almacenamos esa correlación en la base de datos interna de Asterisk.
same => n,Playback(agent-loginok)
same => n(cuelga),Hangup()
; para desregistrarse usamos el carácter 0 en vez de * con el mismo código.
exten => _0[a-z].,1,NoOp(-- Petición de deslogueo de miembros--)
same => n,RemoveQueueMember(clientes,Local/${EXTEN:1}@atencion_clientes)
same => n,Set(borrar=${DB_DELETE(atencion_clientes/${EXTEN:1})}) ; aquí se elimina la correlación, usamos una variable (borrar en este caso)
same => n,Playback(agent-loggedoff)
same => n,Playback(goodbye)
same => n,Hangup()
[atencion_clientes] ; este es el contexto que determina la llamada al miembro desde la cola, si está ocupado no hace nada, manda un mensaje por consola.
exten => _[a-z].,1,NoOp(-Llamada al miembro -)
same => n,Set(MIEMBRO=${DB(atencion_clientes/${EXTEN})})
same => n,GotoIf($[${SIPPEER(${MIEMBRO},curcalls)} = 1]?ocupado)
same => n,Dial(SIP/${MIEMBRO})
same => n(ocupado),NoOp(Miembro ocupado, llamada en cola

Con esta configuración, el usuario solo tiene que teclear desde el terminal telefónico, un asterisco seguido de su nombre de usuario para quedar registrado, y ya puede recibir llamadas de esa cola.
Quedaría algo así:

Colas con nombre de usuario
Miembros con nombre de usuario

De esta manera se puede identificar bien cuando uno está en llamada:

Usuario respondiendo
Respondiendo una llamada el miembro de la cola

Por último, con la herramienta Asternic podemos comprobar cómo se pueden obtener estadísticas por usuario:

Nomres de usuario para los miembros dinámicos
Estadísticas de usuarios

Además de como os lo he presentado, podría hacerse de otras maneras, por ejemplo con una base de datos para los nombres de usuarios, lo puse con un archivo de texto por simplicidad.
Animaos a compartir vuestras propias soluciones o posibles mejoras que se os hayan ocurrido.

Postinstalación de Ubuntu senbrila

Kion fari post ol instali Ubuntu senbrila? Fojo sed alportas al vi script de postinstalaci?N, En ĉi tiu kazo por ubuntu senbrila 14.04 Kvankam ?i pod lin?Is provi en aliaj @versi?n kaj rakonti min se ?i funkcias. Mortigas estas forko gnome grafika medio 2 unu el la grafikaj medioj kiujn mi persone ŝatis pli en […]

?Qu? Estas Oauth? Konas #?i tiu protokolon kiun vi uzas tiel ofte.

La prop?Sito de #?i tiu artikas estas #malka?i OAuth tiel ke iu ajn persono povas ?in kompreni, Klarigas lin de la vidpunkto de uzanto, Konante ke maniero povas #tu?i al li #?i tiu tecnolog?Al. ?Qu? Estas OAuth? Estas malfermita protokolo, kiu permesas sekuran API rajtigo en simpla kaj norma reĝimo […]