Una de las ventajas de Asterisk es la diversidad de interconexión entre diferentes plataformas, así como diferente hardware que permite la gestión de las llamadas.

 

Con la llegada de las ofertas sumamente baratas, encontramos la letra pequeña de las mismas. Es decir, no te regalan nada. 

En mi caso, con mi compañía telefónica, Movistar, tengo fibra óptica, incluyendo teléfono fijo con llamadas ilimitadas (y aquí empieza lo divertido, solo a fijos), pero no solo eso, incluye dos lineas de móvil ademas de TV por un precio impresionante!! Y es entonces donde viene la trampa. Una de las lineas, "te regala" 2GB de datos, pero no incluye ninguna llamada, por tanto el establecimiento de la misma y la tarificación por minutos hará subir nuestra factura. La otra linea de móvil, incluye 200min de llamadas gratis!!, pero claro... no incluye datos, que tarifícan aparte. Como vemos es todo un marketing maravilloso por el que finalmente pagas mas ya que lo que una cosa no hace lo hace otra. Y si no a pasar por caja.

Pero no solo eso, llegamos a ser tan ruines que cobran la identificación de llamadas, 2€ por saber quien te esta llamando!!

Es aquí donde entra en juego nuestro Chan-dongle, que no es mas que una interface de hardware que conecta la tarjeta SIM móvil con nuestro Asterisk.
Las necesidades de cada uno son diversas, y yo en mi caso mi teléfono móvil lo tengo con otra compañía por lo que consigo lo siguiente:

- Cualquier llamada que realice desde casa, sera a 0€ (sin contar con los 902 o internacionales o otros de tarificación especial).

- Es Asterisk quien decide por donde sale cada llamada según el numero que este marcando.

- Ademas las llamadas perdidas o SMS que lleguen al número móvil, se reenvían a mi correo automáticamente.

Bien pues manos a la obra, después de elegir un stick compatible procedemos a instalar el modulo.

- Deberemos de seguirlo en su pagina oficial 

https://wiki.e1550.mobi/doku.php?id=main_page

- Y comprobaremos la compatibilidad del modulo que es fácil comprarlo por las diversas plataformas asiáticas.

https://github.com/bg111/asterisk-chan-dongle/wiki/Requirements-and-Limitations

He de indicar que la tarjeta SIM no debe de tener PIN activo. Además en el caso de reutilizar alguno que las diversas compañías nos dan como modem, deberemos habilitarlo como canal de voz y datos. En mi caso y debido a que el precio es asequible no me complique y el mío vino directamente libre y sin tener que habilitar nada.

Procedemos a instalar chan_dongle y a configurarlo:

  1. cd /home/asterisk/install
  2. yum install git
  3. git clone https://github.com/wdoekes/asterisk-chan-dongle.git
  4. cd asterisk-chan-dongle
  5. ./bootstrap
  6. ./configure --with-astversion=16.0.0 # En la numeracion pondremos la versión de Asterisk que estemos usando
  7. make
  8. sudo make install
  9. sudo cp dongle.conf /etc/asterisk/ 

 

Bien, pues una vez instalado, deberemos editar el archivo que previamente hemos copiado desde la carpeta temporal donde estamos:

# nano /etc/asterisk/dongle.conf

 

Ahora pondremos la configuración del mismo:

Previamente deberemos conocer algunos datos del modem USB. Con el comando dmesg conoceremos donde esta conectado nuestro modem, la estructura será algo como ttyUSB*

Posteriormente ejecutamos la instalación de minicom con apt-get install minicom y ejecutamos minicom -c on .D /dev/ttyUSB*

 

Y ahora si vamos con dongle.conf


[general]
interval=15

; ###########################################################
; ##############Interface Dongle movil casa #################

[dongle1]
audio=/dev/ttyUSB1 ; puerto tty para conexion de audio;
data=/dev/ttyUSB2 ; puerto tty para comandos AT;
[defaults]
group=0
rxgain=0
txgain=0
autodeletesms=yes
imei=123456789012345
imsi=123456789012345
context=dongle-incoming
dtmf_mode=auto

 

Y con esto tendríamos funcionando nuestro chan_dongle. Ahora debemos implementarlo en nuestro dialplan. Allá vamos!!
extensions.conf

 

; ###########################################################
;
; ############# Llamadas entrantes Telefonica ###############
; ########### Movil - llamadas y SMS XXX XXX XXX  ############

[dongle-incoming]; Llamadas entrantes por Dongle XXX XXX XXX, luego grupo de timbrado. Tambien recibe SMS que se reenviaran al correo Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
; Llamadas
exten => s,1,NoOp(Llamada entrante Movil Movistar de ${CALLERID(num)} a las ${STRFTIME(${EPOCH},,%H:%M:%S)} del dia ${STRFTIME(${EPOCH},,%d-%m-%Y)})
same => n,System(echo '${STRFTIME(${EPOCH},,%H:%M:%S)} ${STRFTIME(${EPOCH},,%d-%m-%Y)} - ${CALLERID(num)}' >> /var/log/asterisk/llamadas_entrantes.txt)
same => n,Dial(Local/40000@extensiones,30,Tti)
same => n,Voicemail(40100@default)
same => n,Hangup();(Llamada entrante de ${CALLERID(num)} finalizada)

; SMS
exten => sms,1,Noop(SMS entrante de ${CALLERID(num)}: ${SMS})
same => n,System(echo '${STRFTIME(${EPOCH},,%H:%M:%S)} ${STRFTIME(${EPOCH},,%d-%m-%Y)} - ${DONGLENAME} - ${CALLERID(num)}: ${SMS}' >> /var/log/asterisk/sms.txt)
same => n,System(echo '${STRFTIME(${EPOCH},,%H:%M:%S)} ${STRFTIME(${EPOCH},,%d-%m-%Y)} - ${DONGLENAME} - ${CALLERID(num)}: ${SMS}' >> /var/log/asterisk/sms_temp.txt)
same => n,System(mail -s 'Asterisk SMS' Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. < /var/log/asterisk/sms_temp.txt)
same => n,Wait(10)
same => n,System(rm -f /var/log/asterisk/sms_temp.txt;)
same => n,Hangup()

; ###########################################################
; ###########################################################
 

Como podemos ver, recibimos tanto llamadas como SMS. en el caso de los SMS los recibimos, se ven en la consola y ademas de guardarlos en un archivo txt en la ruta indicada, procedemos a enviarlo mediante la aplicación ssmtp al correo. La configuración de la misma la veremos en otro momento.
En el caso de las llamadas salientes y atendiendo al dialplan que anteriormente en otros post habíamos comentado, modificamos las llamadas a móviles de la siguiente forma:


[moviles]; Llamadas a telefonos moviles a traves del Dongle con numero XXX XXX XXX.
exten => _[67]XXXXXXXX,1,NoOp(Llamada a movil ${EXTEN} a las ${STRFTIME(${EPOCH},,%H:%M:%S)} del dia ${STRFTIME(${EPOCH},,%d-%m-%Y)})
same => n,System(echo '${STRFTIME(${EPOCH},,%H:%M:%S)} del dia ${STRFTIME(${EPOCH},,%d-%m-%Y)} Llamada de ${CALLERID(num)} a ${EXTEN}' >> /var/log/asterisk/llamadas_salientes.txt)
same => n,Dial(Dongle/dongle1/${EXTEN},60)
same => n,hangup();(Llamada a movil finalizada a ${EXTEN})

También veremos en otro post como volcar el registro de llamadas con fecha y hora a un archivo txt.
Por ultimo en el archivo modules.conf deberemos cargar los siguientes módulos, que en muchas ocasiones nos rompen la cabeza en cuanto a porque falla.

load = app_system.so
load = app_sms.so
load = app_sendtext.so

load = chan_dongle.so