Instalar, configurar y tips sobre Gammu para el envío masivo de SMS

- Andrés Cruz

In english
Instalar, configurar y tips sobre Gammu para el envío masivo de SMS

Ha inicios de este Blog hablamos un poco sobre Gammu y el Demonio Gammu; En esta entrada daremos unos tips que en general explican como instalar, configurar y emplear Gammu en una computadora con ambiente Linux, específicamente se empleó la distribución Fedora pero puede ser cualquier otra como Ubuntu; lo único que variaría son los pasos para instalarlo.

Gammu cuenta con una amplia cantidad de características que permiten controlar un teléfono desde el computador prácticamente en su totalidad pero la principal y la más útil es la de enviar/recibir SMS en el computador; específicamente Gammu guarda los SMS recibidos y enviados dentro de bases de datos que en esta entrada será MYSQL; pero aparte de MYSQL es posible emplear SQLite o PostgreSQL.

Obtener e Instalar Gammu

Puedes obtener e instalar Gammu de varias formas; desde la página oficial en la sección de descargas veremos un conjunto de ellas: Descargar Gammu.

En Fedora también podemos instalarlo desde los repositorios vía terminal:

yum install gammu

Una vez instalado; debemos crear una Base de Datos desde la cual Gammu controlará todo el proceso; o lo que es lo mismo, en donde Gammu controlará todos los mensajes enviados/recibidos; para correr el script SQL en la base de datos ejecutamos:

mysql kalkun -u root -h localhost -p < /usr/share/doc/gammu/examples/sql/mysql.sql 

La sentencia SQL anterior permite correr el script SQL ubicado en /usr/share/doc/gammu/examples/sql/mysql.sq en la Base de Datos llamada kalkun; por supuesto, también puedes emplear un Sistema Administrador de base de Datos como phpMyAdmin para importar el script.

Consideraciones sobre Gammu

Cómo se había comentado, Gammu permite controlar totalmente un dispositivo (entiendade módem o teléfono); para este entrada empleamos un ZTE MF190; puedes verificar la compatibilidad con la gran cantidad de teléfonos y modém en: Base de datos de teléfonos Gammu.

Módem ZTE MF190

Módem ZTE MF190

Una vez que tengamos nuestro dispositivo a la mano, debemos crear un archivo de configuración en donde el demonio Gammu tomará los distintos parámetros y podrá emplear el dispositivo; dicho archivo lo llamaremos smsdrc-phone0 debe estar ubicado en el directorio etc.

Conecta tu dispositivo en la computadora con Gammu vía USB espera unos escasos segundos y ejecuta:

gammu -c /etc/smsdrc-phone0 --identify

En donde smsdrc-phone0 es el nombre del archivo.

Y verás una información como la siguiente:

Dispositivo          : /dev/ttyUSB1
Fabricante           : ZTE CORPORATION
Modelo               : unknown (MF190)
Firmware             : BD_MF190V1.0.0B06
IMEI                 : 357534040956887
IMSI de la SIM       : 734061041118604

Que indica que tu dispositivo está listo para usar.

Enviando nuestro primer SMS con Gammu

Desde la línea de comando ejecuta:

gammu-smsd-inject TEXT 4161111111 -text "Hola Mundo"

En donde 4161111111 es el número de teléfono de recepción.

Si verificamos la Base de datos creada anteriormente, veremos una tabla llamada outbox que cuando ejecutamos el comando anterior veremos en pocos segundos el SMS encolado en esta tabla para luego unos segundos después el registro sea eliminado lo que significa que el SMS fue enviado.

Si el SMS no "sale" o no se envío (se mantiene en la tabla outbox) puede deberse a los 3 puertos que ocupa Linux por dispositivo conectado y para eso podemos crear tres archivos de la siguiente manera:

/etc/smsdrc-phone0

# Configuration file for Gammu SMS Daemon

# Gammu library configuration, see gammurc(5)
[gammu]
# Please configure this!
port = /dev/ttyUSB0
connection = at
# Debugging
#logformat = textall

## SMSD configuration, see gammu-smsdrc(5)
#[smsd]
#service = files
#logfile = syslog
##Increase for debugging information
#debuglevel = 0

[smsd]
Service = sql
Driver = native_mysql
#PIN = 1234
logfile = /var/log/gammu/smsdlog1
debuglevel = 2
#runonreceive = /var/www/html/kalkun/scripts/daemon.sh
commtimeout = 30
sendtimeout = 30
phoneid=movilnet0

user = root
password = 12345
pc = localhost
database = kalkun

# Paths where messages are stored
inboxpath = /var/spool/gammu/inbox/
outboxpath = /var/spool/gammu/outbox/
sentsmspath = /var/spool/gammu/sent/
errorsmspath = /var/spool/gammu/error/

/etc/smsdrc-phone1

# Configuration file for Gammu SMS Daemon

# Gammu library configuration, see gammurc(5)
[gammu]
# Please configure this!
port = /dev/ttyUSB1
connection = at
# Debugging
#logformat = textall

## SMSD configuration, see gammu-smsdrc(5)
#[smsd]
#service = files
#logfile = syslog
##Increase for debugging information
#debuglevel = 0

[smsd]
Service = sql
Driver = native_mysql
#PIN = 1234
logfile = /var/log/gammu/smsdlog1
debuglevel = 2
#runonreceive = /var/www/html/kalkun/scripts/daemon.sh
commtimeout = 30
sendtimeout = 30
phoneid=movilnet2

user = root
password = 12345
pc = localhost
database = kalkun

# Paths where messages are stored
inboxpath = /var/spool/gammu/inbox/
outboxpath = /var/spool/gammu/outbox/
sentsmspath = /var/spool/gammu/sent/
errorsmspath = /var/spool/gammu/error/

/etc/smsdrc-phone2

# Configuration file for Gammu SMS Daemon

# Gammu library configuration, see gammurc(5)
[gammu]
# Please configure this!
port = /dev/ttyUSB2
connection = at
# Debugging
#logformat = textall

smsdrc-phone1

## SMSD configuration, see gammu-smsdrc(5)
#[smsd]
#service = files
#logfile = syslog
##Increase for debugging information
#debuglevel = 0

[smsd]
Service = sql
Driver = native_mysql
#PIN = 1234
logfile = /var/log/gammu/smsdlog1
debuglevel = 2
#runonreceive = /var/www/html/kalkun/scripts/daemon.sh
commtimeout = 30
sendtimeout = 30
phoneid=movilnet1

user = root
password = 12345
pc = localhost
database = kalkun

# Paths where messages are stored
inboxpath = /var/spool/gammu/inbox/
outboxpath = /var/spool/gammu/outbox/
sentsmspath = /var/spool/gammu/sent/
errorsmspath = /var/spool/gammu/error/

Explicación de los archivos anteriores y Tips sobre Gammu

Entre varias configuraciones, se define el usuario (user) y contraseña (password) de la base de datos, así como el host (pc) y la base de datos (database); también se define un id del dispositivo (phoneid) único para cada dispositivo conectado, el sistema gestor de base de datos (Driver) y el puerto (port) que explicaremos en el siguiente párrafo.

Si te fijas bien, lo único que varía entre los tres archivos es el puerto; el porqué de crear tres archivos para un solo módem se debe a que Linux ocupa tres puertos por dispositivos conectados, y resulta un poco difícil saber por cual esta recibiendo y enviando SMS, puedes emplear un solo archivo y probar por cual enviar/recibir o simplemente definir tres archivos (uno para cada puerto).

En el caso de querer probar en cual puerto está conectado una vez que tengas definido los tres archivos, ejecuta de un comando por vez:

gammu -c /etc/smsdrc-phone0 --identify
gammu -c /etc/smsdrc-phone1 --identify
gammu -c /etc/smsdrc-phone2 --identify

El que no te de información significa que no está conectado a ese puerto.

Iniciamos el demonio para cada archivo:

gammu-smsd --daemon -c /etc/smsdrc-phone0
gammu-smsd --daemon -c /etc/smsdrc-phone1
gammu-smsd --daemon -c /etc/smsdrc-phone2

Además, si quiere probar la configuración de un dispositivo (en caso de tener más de un dispositivo conectado) en particular:

INSERT INTO outbox(DestinationNumber, Coding, TextDecoded,`SenderID`) VALUES ('04162147462','Default_No_Compression','Hola Mundo','movilnet0'); 

En donde movilnet0 es el identificador del módem.

para conectar más dispositivos para enviar/recibir SMS simplemente debes de crear tres archivos por dispositivos o verificar por cual puerto envía SMS.

Para verificar de cual archivo Gammu está tomando la configuración para el dispositivo, ejecutamos:

[root@linux03 linux03]#  gammu -c /etc/smsdrc-phone0 --identify
No se recibió respuesta en el tiempo especificado. Probablemente el teléfono no está conectado.
[root@linux03 linux03]#  gammu -c /etc/smsdrc-phone1 --identify
Dispositivo          : /dev/ttyUSB1
Fabricante           : ZTE CORPORATION
Modelo               : unknown (MF190)
Firmware             : BD_MF190V1.0.0B06
IMEI                 : 357534040956887
IMSI de la SIM       : 734061041118604
[root@linux03 linux03]#  gammu -c /etc/smsdrc-phone2 --identify
No se recibió respuesta en el tiempo especificado. Probablemente el teléfono no está conectado.

Como verás el único que da respuesta es el archivo cuyo puerto es el /dev/ttyUSB1.

Manejadores de SMS de Gammu

Hay varias opciones que permiten manejar el dispositivo a través de interfaces en vez de usar el terminal; de esta forma se logra crear una capa de abstracción para trabajar con distintos dispositivos, una de ellas es Kalkun que provee una interfaz web para manejar los distintos dispositivos; puedes ver todos los manejadores en el siguiente enlace: Aplicaciones de terceros utilizando Gammu.

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz en Udemy

Acepto recibir anuncios de interes sobre este Blog.