Enviando mensajes SMS desde la línea de comandos

Enviar mensajes SMS desde una de nuestras aplicaciones o scripts siempre es una necesidad, la forma más fácil y obvia es sencillamente hacerlo a través de gateways de correo que algunos proveedores celulares ofrecen. Lo cual es común en USA y Europa, por ejemplo si alguien desea enviar un SMS a un celular de TMobile en USA sólo debe de poner como destinatario una dirección e-mail de esta forma 1234567890@tmomail.net donde 1234567890 es el número del celular al que deseamos enviar el mensaje.

Sin embargo esa opción no está disponible en todo el mundo, algunos carriers no la ofrecen y en su reemplazo solamente nos permiten enviar mensajes SMS a través de interfases web que requieren usualmente que resolvamos un captcha. Lo cual hace demasiado complicado automatizar ese proceso a través de un script con curl. Un ejemplo de ello es Claro del Perú.

Buscando una forma de resolver este problema es que encontré la librería pygooglevoice, dicha librería permite a cualquiera que tenga una cuenta de Google Voice el enviar/recibir mensajes SMS  de manera gratuita a cualquier parte del mundo. ¿Aplicaciones?, muchas, desde sistemas de monitoreo y alarma a sistemas interactivos de información usando mensajes SMS (podríamos por ejemplo crear nuestro propio clon de twitter).

Si desean darle una ojeada más extensa a la documentación antes de instalar la librería pueden hacerlo aquí.

La instalación es sencilla, aquí los pasos de cómo hacerla en un Ubuntu 8.04 (Hardy):

$ wget http://pygooglevoice.googlecode.com/files/pygooglevoice-0.5.tar.gz
$ sudo apt-get install python-simplejson
$ tar -zxvf pygooglevoice-0.5.tar.gz
$ cd pygooglevoice-0.5
$ sudo python setup.py install
$ cd

Listo con esos pasos tenemos instalada la librería y un utilitario llamado "gvoice" que nos permite administrar nuestra cuenta Google Voice desde la línea de comandos. Pero como nuestro objetivo es poder enviar mensajes SMS a números telefónicos de cualquier parte del mundo (bueno sólo carriers GMS están soportados), de manera automatizada, podemos usar un sencillo script en Python como este que viene de ejemplo:

from googlevoice import Voice
from googlevoice.util import input

voice = Voice()
voice.login()

phoneNumber = input(‘Number to send message to: ‘)
text = input(‘Message text: ‘)

voice.send_sms(phoneNumber, text)

Luego podremos ejecutarlo y el script nos preguntará nuestro e-mail en gmail que es usado como credencial en Google Voice, el password, el número telefónico al cual queremos enviarle un mensaje de texto y finalmente el mensaje de texto. Aunque este es un ejemplo bastante trivial las aplicaciones del mismo son enormes. Hay que tener presente que este escript no limita el tamaño del mensaje, así que si este excede los 140 caracteres será truncado.

5 comentarios en «Enviando mensajes SMS desde la línea de comandos»

  1. Si, se pueden enviar SMS a cualquier celular incluídos los peruanos, con dos restricciones. La primera es que el operador debe ser GSM y la segunda es incluir el número de país y área, así por ejemplo para enviar SMS a Perú debrías de poner como prefijo antes del número 1151 ya que (11) significa prefijo internacional y (51) es el código de Perú.

    Google Voice aún no es un servicio ampliamente disponible, sólo se puede acceder a él por invitación. Afortunadamente tengo una cuenta de Google Voice, ya que fui de los primeros en registrarme cuándo Google adquirió GrandCentral e inició el proyecto Google Voice.

    Este blog como todo en Internet está hecho para que pueda ser leído desde todo el planeta, no tengo una audiencia específica aunque a veces trato de darle una orientación a Perú, ya que mi familia y la mayoría de mis amigos vive alla.

  2. Te felicito. Muy bueno el articulo. Lo estoy probando con un motorola w5, el cual utiliza el ‘port: 1 -Dialup Networking Gateway’. Al ejecutar el envio del sms me sale todo OK, pero no se envia el mensaje. Tengo una linea de la compañia Movistar y soy de Tucuman-Argentina. Ya probe con varias alternativas en el campo de numero de telefono pero nada. Gracias por tu respuesta.

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.