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.