Crear el siguiente script:
nano /var/lib/asterisk/agi-bin/bloqueo_in.sh
Agregar el siguiente codigo:
#!/bin/bash vacio="`ls -lrt /var/lib/asterisk/blacklist/ | wc -l`" if [ "$vacio" != "-1" ]; then if [ "$1" == "" ]; then VALUE=0; echo "numero vacio" >>/etc/asterisk/log_blacklist.txt else if [ "${1:0:3}" == "803" ]; then VALUE=0; echo "803 BLOQUEADO: " $1 >>/etc/asterisk/log_blacklist.txt else LastArchivo="`ls -t1 /var/lib/asterisk/blacklist/* `" IsBlackListed="`grep $1 $LastArchivo`" if [ "$IsBlackListed" != "" ]; then VALUE=0; echo "SI BLACKLIST: " $1 >>/etc/asterisk/log_blacklist.txt else VALUE=1; echo "NO BLACKLIST: " $1 >>/etc/asterisk/log_blacklist.txt fi fi fi else VALUE=1; echo "FICHERO VACIO" >>/etc/asterisk/log_blacklist.txt fi echo -e "SET VARIABLE answer $VALUE"
Asignarle permisos de ejecución al script creado:
chmod +x /var/lib/asterisk/agi-bin/bloqueo_in.sh
Crear el siguiente archivo y agregar en el, los teléfonos a bloquear (solo un teléfono por línea):
nano /var/lib/asterisk/blacklist/1
Podemos subir tantos archivos con numeros a bloquear como queramos, el script analiza todos los archivos del directorio.
Modificar el archivo de Dialplan:
nano /etc/asterisk/extensions.conf
Ejemplo para bloquear numeros entrantes:
exten => 9XXXXXXXX,1,Set(llamante=${CALLERID(num)}) same => 2,ANSWER(3) same => 3,agi(/var/lib/asterisk/agi-bin/bloqueo_in.sh,${CALLERID(num)}) same => 4,Gotoif($["${answer}"="0"]?corte) same => 5,Playback(/var/lib/asterisk/sounds/LOCBIENVENIDA) same => 6,GOTO(horarios,s,1) same => 7,Set(CALLERID(num)=0${llamante}) same => n,Dial(SIP/60,15,r) same => n,ExecIf($["${DIALSTATUS}"!="ANSWER"]?Dial(SIP/67,15)) same => n,ExecIf($["${DIALSTATUS}"!="ANSWER"]?Dial(SIP/41,15)) same => n,ExecIf($["${DIALSTATUS}"!="ANSWER"]?Playback(/var/lib/asterisk/sounds/LINEASOCUPADAS) same => n,VoiceMail(67) same => n(corte),Hangup()
Ejemplo para bloquear numeros salientes:
exten => _0X.,1,Set(CALLERID(num)=9xxxxxxxx) same => n,agi(/var/lib/asterisk/agi-bin/bloqueo_in.sh,${EXTEN}) same => n,Gotoif($["${answer}"="0"]?corte) same => n,Dial(SIP/SIPKAM/${EXTEN}) same => n(corte),Hangup()
Estas muy bien tu agi, me sirvio bastante, lo unico seria que creo que en el extensions hay que hacer un cambio, donde poner ejecutar el agi, no se encuentra en esa ruta, hay que ponerlo en donde fue creado
Buenas tardes,
muchas gracias por tu comentario, tienes toda la razón, la URL correcta es «/var/lib/asterisk/agi-bin/bloqueo_in.sh», lo he modificado. Muchas gracias.
Un saludo
Jesus
Hola nuevamente yo, fijate que estoy usando el agi, y me funciona muy bien, cambie la ruta del log, para ponerlo en /var/log/asterisk, y le di los permisos correspondientes, y todo muy bien, lo esta generando, sin embargo me envia casi siempre el siguiente error
utils.c: write() returned error: Broken pipe
aun y cuando si genera el log, no se porque sale este otro error
Disculpa la demora, parece que estes intando ejecutar alguna accion, una vez el script ha finalizado. Prueba a debuguear el AGI con el comando «agi set debug on» en la consola de Asterisk.
Saludos
Jesus