Twitter es un servicio relativamente nuevo y, al menos para un servidor, realmente incomprensible. Seguro que muchos ya lo conocen ya que tuvo bastante bombo su lanzamiento, para quien no lo conozca les diré que algo así como un blog reducido a su mínima expresión y que se podría resumir contestando a la pregunta ¿Que estás haciendo?.

En twitter los usuarios publican e intercambian mensajes breves, muy breves, acerca de su actividad, intereses, pensamientos, etc.. Para la publicación de dichos mensajes, el usuario dispone de multiples herramientas que le permitan enviar el breve mensaje y que este aparezca publicado, ya sea en un «tablón de acceso público«, en un recuadro destacado en su blog, etc.. Como en muchas otras aplicaciones web, se crean comunidades, grupos de amigos, etc… para los cuales Twitter brinda una herramienta muy «golosa»: la posibilidad de avisar via sms a tu lista de contactos cada vez que publiques algo.

El resto de twitter me resulta perfectamente prescindible, pero esta parte es realmente tentadora. Via Twitter y aprovechando su API podemos facilmente crear una aplicación para enviar hasta 250 sms/semana sin coste ninguno. Condición: ambos, remitente y destinatario, deben ser usuarios registrados.

A partir de ahora, cuando reciba ese email que estaba esperando, cuando la webcam detecte actividad, cuando la descarga de la película haya terminado, etc.. aviso via sms. Lo he estado probando y funciona realmente bien y rápido, pero no conviene volverse loco: 250 sms a la semana son suficientes para hartarse.

Registro de usuarios

Vamos a registrar dos usuarios, por ejemplo: user_receptor y user_emisor.

user_receptor: Abre la página de alta, ingresa tus datos y pulsa «Aceptar». No solicita confirmación via email, el alta es inmediata. En la configuración de tu perfil, sección «Phone & IM» introduce tu número de móvil con el prefijo de España (+34). De inmediato la página te ofrece un código alfabético y un número de teléfono. Envia ese código al número teléfono indicado para confirmar y activar tu teléfono. Recibirás un sms de respuesta. Recarga tu página de configuración en Twitter para comprobar que el número de teléfono está activo.

user_emisor: Idénticos pasos al anterior excepto en los referentes a la activación del teléfono. Evidentemente los nombres de usuario y email deben ser diferentes.

A continuación ambos usuarios user_receptor y user_emisor se deben «encontrar» y apuntarse como amigos uno del otro (evidentemente, solo puedes enviar sms a quien tengas registrado como amigo y a su vez él te tenga «autorizado»).

Una vez completado este proceso, el usuario user_emisor ya dispone de la posibilidad de enviar sms a user_receptor (a la inversa no puesto que solo uno de ellos tiene un número telefónico activo).

API Twitter

Viendo la página de documentación del API de Twitter podemos ver que:

new

Sends a new direct message to the specified user from the authenticating user. Requires both the user and text parameters below. Request must be a POST. Returns the sent message in the requested format when successful.

URL: http://twitter.com/direct_messages/new.format

Formats: xml, json

Parameters:

* user. Required. The ID or screen name of the recipient user.
* text. Required. The text of your direct message. Be sure to URL encode as necessary, and keep it under 140 characters.

Es decir, haciendo una llamada HTTP autentificada a la dirección http://twitter.com/direct_messages/new.xml podemos enviar mediante método POST las variables user y text, que compondrán el mensaje sms. Twitter responde mediante un XML el resultado de la operación.

Abre una consola y escribe:curl -u user@midominio.com:contraseña http://twitter.com/direct_messages/new.xml -d "user=destinatario&text=mensaje del sms"

Donde user@midominio.com es la direccion de email de user_emisor y contraseña su contraseña ! :)

El email llega de forma casi inmediata y en consola te devuelve el XML resultado de la operación. Ahora vamos a automatizar la tarea.

Script para enviar SMS

Crea un nuevo documento en blanco en KATE y escribe:#!/bin/bash
texto=`kdialog --inputbox "Introduce el texto del SMS para user_receptor
Recuerda: maximo 140 caracteres:"`
if [ "$texto"!=""] || ["$texto"!=" " ]; then
autentificacion="user_emisor@dominio.com:123456"
destinatario="user_receptor"
resultado=`curl -u $autentificacion http://twitter.com/direct_messages/new.xml -d "user=$destinatario&text=$texto" -o salida.xml`
else
kdialog --msgbox "Mensaje vacio\nAnulado"
fi

Guardalo en tu carpeta ~/bin como enviarsms.sh y hazlo ejecutable (chmod +x enviarsms.sh)
abre Konqueror en tu carpeta ~/bin y arrastra el icono del script recien creado sobre la barra de tareas. Rellena los campos del icono y listo.

Podeis modificar el script según lo que necesiteis. Para ejecutarlo via consola o desde alguna tubería, podriais hacer un simple:#!/bin/bash
curl -s -u user_emisor@dominio.com:123456 http://twitter.com/direct_messages/new.xml -d "user=$destinatario&text=$*" >/dev/null &