Enviado por admin el
En muchas empresas se presenta a menudo el problema de como controlar las llamadas hechas por lo empleados, sobretodo las internacionales.
En este articulo veremos como autenticar el empleado con la aplicación Authenticate.
Podemos conocer las sintaxis del comando con:
asterisk –rvvvvvvvvvvvvvv
CLI> core show application authenticate
[Syntax]
Authenticate(password[,options[,maxdigits[,prompt]]])
[Arguments]
password
Password the user should know
options
a: Set the channels' account code to the password that is entered
d: Interpret the given path as database key, not a literal file
m: Interpret the given path as a file which contains a list of account
codes and password hashes delimited with ':', listed one per line in the
file. When one of the passwords is matched, the channel will have its
account code set to the corresponding account code in the file.
r: Remove the database key upon successful entry (valid with 'd'
only)
maxdigits
maximum acceptable number of digits. Stops reading after maxdigits
have been entered (without requiring the user to press the '#' key).
Defaults to 0 - no limit - wait for the user press the '#' key.
prompt
Override the agent-pass prompt file.
Como se puede notar la opción password puede contener un valor o referirse a un archivo de texto que contenga una lista de nombres con las respectivas contraseñas separada por el carácter :
Bien. Suponiendo que tenemos que crear los PIN para tres empleados:
Nombre |
PIN |
Fulano | 1234 |
Zutano | 1235 |
Mengano | 1236 |
Ahora ciframos las contraseñas:
echo -n "1234" | md5sum
el resultado será:
81dc9bdb52d04dc20036dbd8313ed055
Seguimos con las dos que quedan:
echo -n "1235" | md5sum
9996535e07258a7bbfd8b132435c5962
echo -n "1236" | md5sum
7bccfde7714a1ebadf06c5f4cea752c1
Creamos el archivo de texto con los nombre de los empleados y las respectivas contraseñas cifradas:
nano /tmp/pin.txt
pegamos las siguientes líneas:
Fulano:81dc9bdb52d04dc20036dbd8313ed055
Zutano:9996535e07258a7bbfd8b132435c5962
Mengano:7bccfde7714a1ebadf06c5f4cea752c1
Guardamos los cambios.
Ahora podemos modificar el dialplan para crear un bloque dedicado a la autenticación para las llamadas internacionales. Suponiendo que el contexto que se utiliza para las llamadas internacionales es “internac”, ponemos:
nano /etc/asterisk/extensions.conf
[internac]
exten => _00.,1,NoOP
same => n,Authenticate(/tmp/pin.txt,am,4)
same => n,Dial(SIP/proveedor/${FILTER(0-9,${EXTEN})})
same => n,Hangup
- El primer parámetro define la carpeta y el nombre del archivo que contiene las contraseñas.
- La Opción a define que en el registro de las llamadas el campo Accountcode contendrá el nombre del empleado (de esta forma podemos controlar todas las llamadas hechas por cada empleado) independientemente de la extensión que haya utilizado.
- La opción m define que el archivo de texto contendrá las contraseñas cifradas con MD5.
- El ultimo parámetro indica que los dígitos del PIN son 4 evitando de tener que utilizar la tecla numero para terminar el envío de los dígitos.
Si la contraseña digitada está en el archivo de texto creado, el dialplan pasará a la línea que sigue donde se iniciará la llamada (suponiendo que para las llamadas internaciones utilizamos las sintaxis: 00 + código país + numero).
Se guardan los cambios y se recarga el dialplan:
asterisk –rvvvvvvvvvv
CLI> dialplan reload
Ahora marcamos un numero internacional y utilizamos el PIN de Fulano. Terminada la llamada en el CDR (registro de las llamadas) veremos:
En accountcode aparecerá el nombre del empleado Fulano.
En un próximo articulo ilustraremos como autenticar los empleados para las llamadas internacionales a través de una base de datos y la función func_odbc con la posibilidad de poder cambiar el Pin en cualquier momento.
Comentarios recientes