voicemail.conf
[contexto a usar]
1323 => 45754,Juan Perez
...
...
...
extensions.conf
exten => _8.,1,Playback(digiteusuario)
exten => _8.,2,Read(user,,6,2,10) ; aqui la función read, asigna el valor digitado a la variable user,el maximo de la palabra debe ser de 6 letras, se puede equivocar dos veces, y tendrá 10 segs de tiempo para digitarlo
exten => _8.,n,VMAuthenticate(${user}@default) ; aqui pide el password
exten => _8.,n,Set(NAME=${DB(${user}/name)} ; sacamos el callerid, esto se mostrará luego
exten => _8.,n,Set(CALLERID(all)=${NAME} <${user}>)
exten => _8.,n,NoOp(${CALLERID(all)})
exten => _8.,n,ChanIsAvail(Dahdi/2&Dahdi/6&Dahdi/7&Dahdi/8,j) ; verifico que los canales esten libres
exten => _8.,n,Dial(${AVAILORIGCHAN}/${EXTEN:${TRUNKMSD}},60,wWTt)
exten => _8.,n,Busy(3)
exten => _8.,102,Playback(lineasocupadas)
===============================================================================
Ahora mi idea que se me ocurrió fue sacar todos los callerids del sip.conf y del chan_dahdi.conf y guardalos en la BD de asterisk para utilizarlo cada vez que lo ocupe:
Para tomar los CallerIds
Explicación: realizamos un grep a los archivos, con sed eliminamos callerid=,<,> y el " y lo guardamos en callerids.txt
grep callerid sip.conf | sed "s/callerid=//g" | sed -e 's/<//g' | sed -e 's/>//g' | sed -e 's/"//g' >> callerids.txt
grep callerid chan_dahdi.conf | sed "s/callerid=//g" | sed -e 's/<//g' | sed -e 's/>//g' | sed -e 's/"//g' >> callerids.txt
Ahora editamos el archivo callerids.txt para eliminar las pocas lineas que no ocupo
Luego creamos el script para insertarlo en la bd, en este caso use la conexión AMI(Asterisk Manager Interface) vía BASH:
vim crearDBNames
#!/bin/sh
echo "#!/bin/sh" > addAsterisk_name.sh
echo "#" >> addAsterisk_name.sh
echo "echo \"open localhost 5038\"" >> addAsterisk_name.sh
echo "sleep 1" >> addAsterisk_name.sh
echo "echo \"Action: Login\"" >> addAsterisk_name.sh
#El usuario y password son los que ponemos en manager.conf
echo "echo \"UserName: usuario\"" >> addAsterisk_name.sh
echo "echo \"Secret: password\"" >> addAsterisk_name.sh
echo "echo" >> addAsterisk_name.sh
#creamos un bucle while que lee cada línea del archivo callerids.txt
while read calleridname
do
usuario=`echo $calleridname |awk '{print $1}'`
echo "echo \"Action: DBPut\"" >> addAsterisk_name.sh
echo "echo \"Family: $usuario\"" >> addAsterisk_name.sh
echo "echo \"Key: name\"" >> addAsterisk_name.sh
echo "echo \"Val: $calleridname\"" >> addAsterisk_name.sh
echo "echo" >> addAsterisk_name.sh
done < callerids.txt
#Le damos permisos de ejecución al script
chmod +x addAsterisk_name.sh
./addAsterisk_name.sh |telnet
#FIN ARCHIVO
Luego chmod +x crearDBNames
./crearDBNames
NOTA: No debemos dejar espacios en blanco, al terminar un DBPut y empezar otro se separa por un "echo"
Espero que les sirva, hasta la próxima
It looks like you are a true expert. Did ya study about the topic? *lol*
ResponderBorrar