Usuarios como membros dinámicos de Asterisk

Un xeito de usar membros dinámicos mediante nome de usuario.

Neste artigo veremos un xeito de asignar membros (tamén chamados axentes)* as colas do asterisco, un nome de usuario, para facilitar o seu uso e seguimento.

Para ver mellor a configuración do asterisco, he instalado FOP2 que nos muestra un panel de llamadas de las colas, e 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.

Script para mover os rexistros de chamadas Asterisk de RAM

Mover gravacións de chamadas Asterisk gardados na memoria RAM Este artigo contén un guión mellorado para mover ficheiros (neste caso, as chamadas telefónicas feitas a través Asterisk) arquivos abertos sobre pedra (chama en marcha). É moi típico ter que facer gravacións de chamadas desde Asterisk nun call center […]

Postinstalación de Ubuntu compañeiro

Que facer despois de instalar Ubuntu matt? Unha vez eu traio un script de post, neste caso, a compañeira ubuntu 14.04 aínda pode tentar outras versións e me diga se funciona. Mate é un ambiente gráfico fork de GNOME 2 un dos ambientes gráficos que eu persoalmente me gustou máis […]

¿Que é OAuth? Coñeza ese protocolo que usa con tanta frecuencia.

O obxectivo deste artigo é presentar OAuth para que calquera persoa poida entender, I explicar desde o punto de vista dun usuario, Sabendo que xeito pode afectar esta tecnoloxía. ¿Que é OAuth? El é un protocolo aberto, que permite a autorización segura API nun modo sinxelo e estándar […]