ITCooky Recetas

Vamos a cocinar it cositas

¡Batimos las llamadas SPAM en un teléfono fijo con Asterisk, IVR, Grandstream ht813 en Raspberry Pi 4!

дата noviembre 13, 2022

Mientras vives, reinstala Asterisk – cada vez como si fuera la primera, resolviendo problemas durante medio día, ¡no sé porque pasa eso! Mientras la tarjeta de video está entrenando la red neuronal… Sí, y Orange PC Plus, por cierto, desde el primer artículo ¡Vencemos las llamadas spam en un teléfono fijo con Asterisk con IVR por Grandstream ht813 en OrangePi PC Plus! – murió eMMC, y el systema entero… Hace mucho que no hacia lago con Raspberry Pi, el PC más barato, ¡oh! ¿Y pues que está pasando, por qué en China la versión de 4Gb ahora cuesta $ 170, y en nuestro paísalrededor de 250 (ah yOrangePi PC Plus ya vale $ 40!!!)!!! Bueno, al menos los case para el RPi no han subido de precio, tomo el Argon One la version que ya no producen, todavía tengo muchos accesorios para el raspberry aca, esa es la version actual con dos HDMI grandotes Argon ONE V2 Case for Raspberry Pi 4 por solo $ 25, ¡eso es lo que solía costar RPi!

El case ese tiene un botón de on/off, un botón de reinicio, a través de un script instalado, una cubierta que permite el acceso a pines y ventiladores, mientras que la CPU y la memoria se enfrían pasivamente a través de las protuberancias, transfiriendo calor a la case.

Está claro por qué desapareció la primera versión (como la mía) de este case y apareció la segunda. Es necesario limar un poco para que la frambuesa encaje en él, el conector RJ45 no encaja.

EL case esta cañon

Instalamos Raspberry Pi OS Lite
El proceso es inquietantemente simple, descarga aquí www.raspberrypi.com/software/ Raspberry Pi Imager y lo hace todo él mismo: baja del internet ISO y lo escribe a la tarjeta SD. Elegí Raspberry Pi OS Lite 32-bit de 2022.09.22

Antes de grabar, debe establecer una contraseña y marcar la casilla SSH antes eso se hicia de manera diferente. Aquí tambien se puede configurar Wi-Fi, que conveniente!

Después del final de la grabación, la tarjeta se puede insertar en la frambuesa y ver cual recibió la IP, yo miré mi enrutador.

Instalación del script de case Argon One
curl http://download.argon40.com/argon1.sh | bash
Reboot

Y a personalizar
argonone-config

Esquema
Recibimos una llamada, Asterisk levanta el teléfono y reproduce un mensaje que dice: «si vos sos un humano, presione 7, si no 5 mientres deside escuche música. Si presiona 7, ¡entonces el teléfono en el apartamento comenzará a sonar!

Raspberry PI se encargará del menú de voz (IVR), mientras que el único teléfono SIP se conectará al HT813 y llamará a la ciudad directamente a través de él. Vincular el puerto FXO HT813 a Asterisk para que trabaje junto con IVR no funciono, aquí Obligar a Grandstream ht813 a llamar a través de PSTN ¡Asterisco!… con seguridad todo por 100500 tics en HT813!

Instalacion de Asterisk
sudo apt-get install asterisk
Hago start y veo el estado
sudo systemctl start asterisk
systemctl status asterisk

● asterisk.service - Asterisk PBX
     Loaded: loaded (/lib/systemd/system/asterisk.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-11-04 06:38:03 MSK; 1min 5s ago
       Docs: man:asterisk(8)
   Main PID: 7985 (asterisk)
      Tasks: 68 (limit: 4915)
        CPU: 2.568s
     CGroup: /system.slice/asterisk.service
             ├─7985 /usr/sbin/asterisk -g -f -p -U asterisk
             └─7997 astcanary /var/run/asterisk/alt.asterisk.canary.tweet.tweet.tweet 7985

ноя 04 06:38:03 rpiserver asterisk[7985]: [Nov  4 06:38:03] ERROR[7985]: loader.c:2396 load_modules: cel_radius declined to loa>
ноя 04 06:38:03 rpiserver asterisk[7985]: [Nov  4 06:38:03] ERROR[7985]: loader.c:2396 load_modules: cdr_pgsql declined to load.
ноя 04 06:38:03 rpiserver asterisk[7985]: [Nov  4 06:38:03] ERROR[7985]: loader.c:2396 load_modules: cel_tds declined to load.
ноя 04 06:38:03 rpiserver asterisk[7985]: [Nov  4 06:38:03] ERROR[7985]: loader.c:2396 load_modules: pbx_dundi declined to load.
ноя 04 06:38:03 rpiserver asterisk[7985]: [Nov  4 06:38:03] ERROR[7985]: loader.c:2396 load_modules: res_hep_rtcp declined to l>
ноя 04 06:38:03 rpiserver asterisk[7985]: [Nov  4 06:38:03] ERROR[7985]: loader.c:2396 load_modules: chan_unistim declined to l>
ноя 04 06:38:03 rpiserver asterisk[7985]: [Nov  4 06:38:03] ERROR[7985]: loader.c:2396 load_modules: res_hep_pjsip declined to >
ноя 04 06:38:03 rpiserver asterisk[7985]: Asterisk Ready.
ноя 04 06:38:03 rpiserver systemd[1]: Started Asterisk PBX.
ноя 04 06:38:21 rpiserver asterisk[7985]: [Nov  4 06:38:21] NOTICE[8043]: chan_sip.c:29041 handle_request_register: Registratio>

Funciona!

Y para ejecutarдщ en el arranque de la PC
sudo systemctl enable asterisk

A ver que escucha los ports que necesita
sudo netstat -tulpn | grep asterisk

tcp        0      0 127.0.0.1:5038          0.0.0.0:*               LISTEN      2491/asterisk       
udp        0      0 0.0.0.0:39348           0.0.0.0:*                           2491/asterisk       
udp        0      0 0.0.0.0:5060            0.0.0.0:*                           2491/asterisk       
udp        0      0 0.0.0.0:4569            0.0.0.0:*                           2491/asterisk       
udp6       0      0 :::47426                :::*                                2491/asterisk

Entramos al Asterisk
sudo asterisk -rvvvvv

Asterisk 16.16.1~dfsg-1+deb11u1, Copyright (C) 1999 - 2018, Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type 'core show license' for details.
=========================================================================
Connected to Asterisk 16.16.1~dfsg-1+deb11u1 currently running on rpiserver (pid = 7985)

En extensions.conf al final agrega
vi /etc/asterisk/extensions.conf

[users]
exten => 6666,1,Goto(spam_ivr,s,1)
exten => 6001,1,Dial(SIP/6001)
exten => 6002,1,Dial(SIP/6002)
 
[spam_ivr]
exten => s,1,Answer(500)
;exten => s,2,Monitor(wav,,m)
same => n(loop),Background(/var/lib/asterisk/sounds/custom/ivr)
exten => 5,1,Dial(SIP/6001)
exten => 7,1,Dial(SIP/6002)

aquí 6002 será nuestro teléfono real al que queremos llamar cuando un humano está en la llamada. Y el 6001 cuyo teléfono no está allí simplemente colgará.

La segunda línea en [spam_ivr] está comentada, graba conversaciones.

En users.conf al final agrega
vi /etc/asterisk/users.conf

[6001]
fullname = Test Android
secret = 1234
hassip = yes
context = users
host = dynamic
 
[6002]
fullname = Home phone
secret = 1234
hassip = yes
context = users
host = dynamic

Estas son acaunts de nuestros teléfonos

En la carpeta /var/lib/asterisk/sounds/custom/ pon el archivo wav preparado en tu editor de audio favorito, con las palabras «si eres humano presiona 7» etc!Hay que prepararlo para Asterisk.
sox ivr.wav --rate 8000 --channels 1 --type ul ivr.ulaw lowpass 3400 highpass 300
era ivr.wav ahora es ivr.ulaw

Aquí está el archivo terminado, en ruso ivr.ulaw
Julia_antyspam_ivr

Reiniciaremos Asterisk
sudo service asterisk restart

Configuración de Grandstream ht813
Эхх…
cfgHT813G

¡Estas son mis configuraciones, para mi red y teléfono!

¡Para empezar, es necesario que las llamadas de una línea telefónica de la ciudad suenen en un asterisco!
Vamos a Grandstream ht813 en la pestaña BASIC SETTINGS en la parte inferior escribe a Unconditional Call Forward to VOIP:

Esta configuración arroja: ¡todas las llamadas que llegan al puerto FXO se envían al número 6666 en la dirección IP de mi asterisco en el puerto!
Para aplicar los cambios clic Apply

Luego en FXO PORT hay que poner…

Aquí nos montamos por dentro, una cosa curiosa!!! La puerta de enlace VoIP no puede colgar por sí sola, simplemente no entiende que se ha colgado en el otro extremo. Para hacer esto, debe decirle qué pitidos intermitentes debe escuchar: aquí, para el terminal de suscriptor GPON RV6699, son como los míos.

Aca cambio Enable Current Disconnect y Enable PSTN Disconnect Tone Detection y STN Disconnect Tone y AC Termination Model y PSTN Ring Thru FXS

Cómo buscar parámetros para su línea, lo diré a continuación.

También en el depósito FXO debe estar habilitado Account Active
Hay que indicar el IP 192.168.1.209 de Asterisk!
Y SIP User ID con Authenticate Password hay que indicar la cuenta, debe ser una cuenta especificada en Asterisk en users.conf, aunque no será visible como registrada ni en Asterisk ni en HT813, ¡pero IVR no funcionará sin ella! No importa el number, esta cuenta puede estar en 6666 o en otro número 6789 … ¡aquí hay una extraña rareza aquí, incomprensible incomprensibilidad!

Para aplicar los cambios clics Apply

Y el puerto FSX será un teléfono regular con el número 6002 al que voy FXS PORT

Aqui cambio Primary SIP Server y IP User ID y Authenticate Password
Para aplicar los cambios clics Apply

Para llamar directamente a la ciudad desde un dispositivo físico a través de HT813 (sin pasar por Asterisk) simplemente en Dial Plan en FXS PORT ponemos

{ L:x+ }

Todo lo que se escribe en un teléfono fijo cae en la línea telefónica. Los pitidos, por cierto, no aparecen inmediatamente, ¡tienen que esperar!

Para aplicar los cambios clics Apply, Reboot

¿Cómo elegir el tono de desconexión PSTN para su línea telefónica?
Me llamé desde mi teléfono móvil a mi casa, esperé por IVR, presioné el número 7, luego corte la llamada, pero el timbre continuo sonando, Grandstream continúa llamando a pesar de que la llamada se detuvo, toda esa llamada fue gravada po Asterisk ¡todos los sonidos!

Recojo el archivo de audio y lo abro en el programa Free, open source, cross-platform audio software Audacity. Selecciono un pitido de una serie de pitidos finales y veo su espectrogramaAnalyze > Plot Spectrum…

Llevo el crucero a la cima, e inmediatamente salta a la cima, miro abajo Peak 425Hz 20.1Db

Mido la duración del pitido y el silencio entre ellos

Esta en la parte inferior, solo selecciona Length and End of Selection tengo 359 milisegundos redondeado sera 350

Y todo, entonces solo sustituye en la fórmula

Syntax: f1=freq@vol, f2=freq@vol, c=on1/off1-on2/off2-on3/off3;
Allowed Range: freq = 0 to 4000Hz; vol = -40 to -24dBm
Default: Busy Tone: f1=480@-32,f2=620@-32,c=500/500;

Para mi línea telefónica MGTS a través del GPON RV6699, necesito insertar

f1=425@-21,f2=425@-21,c=350/350;

El pico es uno, pero puede haber más por lo tanto f1 y f2, para un pico todos lo describen dos veces, luego c es la duracion del pitido y del silencio!

De una forma u otra, ¡ahora todo funciona!


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *