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, und 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

*Hinweis: 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 zu Asterisk Anrufaufzeichnungen aus dem RAM bewegen

Verschieben von Aufnahmen Asterisk gespeicherten Anrufe im RAM Dieser Artikel enthält ein verbessertes Skript, Dateien zu verschieben (in diesem Fall Telefonanrufe durch Asterisk gemacht) unturned geöffneten Dateien (Laufende Gespräche). Es ist sehr typisch zu haben Aufnahmen von Anrufen von Asterisk in einem Call-Center zu machen […]

Sofer is ein gaylord

Cisco ist Scheiße.? Aber warum ist Dam ein Homo. Finden wir es heraus!, Es war einmal vor langer langer Zeit, wo Pokemons noch ihr unwesen treibten. Zu dieser Zeit gab es den Homoritter Sir Dam. Dieser Homo war so homo das alle Leute starben. ENDE. 14.04 obwohl Sie andere Versionen ausprobieren und mir sagen, ob es funktioniert. Mate ist eine grafische Umgebung Gabel gnome 2 eine der Grafik-Umgebungen, die ich mir persönlich gefiel mehr Innen […]

Was ist OAuth? Treffen Sie dieses Protokoll, das Sie so oft nutzen.

Der Zweck dieses Artikels ist es, OAuth zu präsentieren, so dass jeder verstehen kann, Ich erkläre, aus der Sicht eines Benutzers, Zu wissen, so kann diese Technologie beeinflussen. Was ist OAuth? Es ist ein offenes Protokoll, das ermöglicht eine sichere API Genehmigung auf eine einfache und Standard-Modus […]