CallerID contra whitelist via script
- Thread starterelastixmty
- Start date
- Joined
- Feb 7, 2013
- Messages
- 4
- Points
- 0
Un saludo cordial a toda la comunidad.
Ya tengo rato investigando en Internet como hacer lo que les voy a comentar pero yo tengo otra idea de como se pudiera hacer solo que no se como hacerlo o integrarlo en Elastix.
Espero me puedan ayudar y de antemano agradezco su tiempo.
Lo que quiero hacer es que cuando entre una llamada al Elastix, se tome el caller id y se compare contra un archivo que contendría números de tel que están en una especie de whitelist o de lista-de-conocidos.
Sabemos que con la ayuda de Linux y grep fácilmente podemos hacer un: grep <callid> archivocontelefonos.txt >/dev/null y nos regresará true o false si ese callid está o no en el archivo.
La idea es que cuando entra la llamada al PBX, se hace ese simple "chequeo" y si si está ahí entonces se va a un destino X (ivr, ringgroup, etc) y si no está en la lista se va a otro destino (igual otro destino X o voicemail, etc)
De esta forma creo yo es muy sencillo mantener o actualizar los números "amigos" en ese archivo simple de texto y no hay que meterse con MySQL ni nada por el estilo.
Espero haberme explicado bien Creo que implementar esto tendría muchos usos y evita el tener que dar de alta un Inbound Route para cada CID.. (si son 5 no hay problema pero si son 50?)
saludos a todos y buen día.
AL
Ya tengo rato investigando en Internet como hacer lo que les voy a comentar pero yo tengo otra idea de como se pudiera hacer solo que no se como hacerlo o integrarlo en Elastix.
Espero me puedan ayudar y de antemano agradezco su tiempo.
Lo que quiero hacer es que cuando entre una llamada al Elastix, se tome el caller id y se compare contra un archivo que contendría números de tel que están en una especie de whitelist o de lista-de-conocidos.
Sabemos que con la ayuda de Linux y grep fácilmente podemos hacer un: grep <callid> archivocontelefonos.txt >/dev/null y nos regresará true o false si ese callid está o no en el archivo.
La idea es que cuando entra la llamada al PBX, se hace ese simple "chequeo" y si si está ahí entonces se va a un destino X (ivr, ringgroup, etc) y si no está en la lista se va a otro destino (igual otro destino X o voicemail, etc)
De esta forma creo yo es muy sencillo mantener o actualizar los números "amigos" en ese archivo simple de texto y no hay que meterse con MySQL ni nada por el estilo.
Espero haberme explicado bien Creo que implementar esto tendría muchos usos y evita el tener que dar de alta un Inbound Route para cada CID.. (si son 5 no hay problema pero si son 50?)
saludos a todos y buen día.
AL
- Joined
- Feb 28, 2008
- Messages
- 5,737
- Points
- 0
Lo más fácil sería configurar las rutas entrantes, es decir, establecer el campo del caller ID con tus números de la lista blanca, de esa forma harías que ingresen a un destino en particular, y también crear una ruta entrante con el DID y Caller ID vacíos, de esa forma cualquier llamada que ingrese y no se encuentre definida, irá directamente a un destino común, tal y cual deseas.
- Joined
- Feb 7, 2013
- Messages
- 4
- Points
- 0
Hola.. De hecho creo que ya lo solucioné.. En un rato más lo comparto con la comunidad a ver que opiniones tienen.
Creo que me quedó bastante elegante solo que hay que editar a mano una sección del dialplan que luego se sobre-escribe si se hace cualquier cambio via GUI.. Y se pierde.. Pero en un rato les comento como le hice.. saludos
Creo que me quedó bastante elegante solo que hay que editar a mano una sección del dialplan que luego se sobre-escribe si se hace cualquier cambio via GUI.. Y se pierde.. Pero en un rato les comento como le hice.. saludos
- Joined
- Feb 7, 2013
- Messages
- 4
- Points
- 0
Estimado Jguitierrez.. Gracias por tu respuesta..
Como te comentaba en el otro post, creo que lo solucioné de una forma sencilla y funcional. A ver que opinas y espero poderme explicar bien.
Lo que comentas de las rutas de entrada con CID funciona muy bien cuando son pocas.. Pero si hablamos de 100, 200 o más resulta impráctico.. (bueno desde mucho menos ya resulta impráctico)
Lo que hice fue lo siguiente:
Hice el siguiente código para probar y utilizar el GREP de Linux como la herramienta que me dirá si el CID de la llamada entrante está o no en dicho archivo-whitelist:
exten => 123456,n,Set(estaono=0)
exten => 123456,n,Set(estaono=${SHELL(grep "${CALLERID(num)}" /var/lib/asterisk/bin/lista_whitelist.txt >/dev/null && echo -n 1)})
exten => 123456,n,NoOp(El valor de la variable estaono es ${estaono} y el CID es ${CALLERID(num)})
Puedes poner ese código en tu dialplan y marcar a la ext 123456 y si el num de tu ext está en archivo lista_whitelist.txt la variable estaono se pondrá en 1.. De lo contrario quedará en 0.
Ya con la variable estaono haces un TEST dentro de un GotoIf y mandas a un destino si es igual a 1 y a otro si es igual a 0.
Qué te parece? Espero haberme explicado.. Comenta.. saludos
Como te comentaba en el otro post, creo que lo solucioné de una forma sencilla y funcional. A ver que opinas y espero poderme explicar bien.
Lo que comentas de las rutas de entrada con CID funciona muy bien cuando son pocas.. Pero si hablamos de 100, 200 o más resulta impráctico.. (bueno desde mucho menos ya resulta impráctico)
Lo que hice fue lo siguiente:
Hice el siguiente código para probar y utilizar el GREP de Linux como la herramienta que me dirá si el CID de la llamada entrante está o no en dicho archivo-whitelist:
exten => 123456,n,Set(estaono=0)
exten => 123456,n,Set(estaono=${SHELL(grep "${CALLERID(num)}" /var/lib/asterisk/bin/lista_whitelist.txt >/dev/null && echo -n 1)})
exten => 123456,n,NoOp(El valor de la variable estaono es ${estaono} y el CID es ${CALLERID(num)})
Puedes poner ese código en tu dialplan y marcar a la ext 123456 y si el num de tu ext está en archivo lista_whitelist.txt la variable estaono se pondrá en 1.. De lo contrario quedará en 0.
Ya con la variable estaono haces un TEST dentro de un GotoIf y mandas a un destino si es igual a 1 y a otro si es igual a 0.
Qué te parece? Espero haberme explicado.. Comenta.. saludos