Omitir los comandos de cinta
Saltar al contenido principal
Desplazarse hacia arriba
Inicio de sesión

Botizeando - Como crear un bot para Twitter de forma sencilla con Botize

botize_bots_bigger.pngBotizeando
Este otoño (2010) me encontré con mi buen amigo, y admirado, JuanSa (@savermsx) en la primera RetroMallorca, y me enteré de sus últimos inventos, entre ellos el Botize, por el cual se llevó el primer premio en la Campus Party 2010.
 
 
¿Qué es Botize?
La web de botize anuncia que “Botize es la manera más fácil de crear tu propio bot en twitter”, y así es. Crear un bot para twitter en botize puede llevar minutos, incluso segundos.
Básicamente, botize se asocia a nuestra cuenta de twitter (normalmente una cuenta exclusiva para nuestro bot), leyendo todos los tweets que se le envían, permitiendo contestar a estos. También lleva un sistema de envío automático cada x minutos, y seguro que alguna que otra cosa más, que ignoro.
Si eres programador, y quieres crear una aplicación o juego para Twitter, lo que comúnmente se llama un bot, Botize te puede simplificar mucho la vida, ya que te puedes centrar en la programación de tu bot, olvidándote de los problemas de autenticación OAuth, y de las APIs.
Otra de las ventajas de Botize es la independencia de plataformas. Se puede programar en cualquier lenguaje web, ya que una de las formas de funcionar de botize, realiza una llamada a la página web que nosotros le indicamos, pasándonos como parámetros el tweet, el remitente y otros datos de interés.
 
BotiZuma
Veamos un ejemplo de cómo crear un Bot, muy simple, en ASP.Net, aunque también puede utilizarse PHP.
El diagrama inferior muestra el flujo del proceso del bot (el orden del flujo se indica con el número de las flechitas):
Botize_FlujoDeTrabajo.png
  1. Un usuario cualquiera envía un mensaje desde su cuenta @UnUsuario al usuario bot @BotiZuma con el texto “2+2”. (@BotiZuma 2+2)
  2. La cuenta @BotiZuma recibe el mensaje y no hace nada con él.
  3. Botize escanea las cuentas “Botizadas” cada x minutos.
  4. Si botize encuentra un mensaje nuevo, llama a la url que nosotros le hemos indicado, pasando como parámetros el mensaje y el remitente, además de otros datos.
  5. Nuestra aplicación procesa los parámetros recibidos y genera una respuesta que recibe Botize.
  6. Botize hace que @BotiZuma envíen la respuesta al usuario que envió el primer mensaje, en este caso @UnUsuario.
  7. El mensaje contiene el destinatario y la respuesta, en este caso (@UnUsuario 2+2=4)
  8. El usuario recibe el mensaje.
 
Paso 1. Crear y configurar el bot
  1. Crear una cuenta Twitter para nuestro bot.
  2. Visitar la web de botize www.botize.com
  3. Iniciamos la sesión desde el botón “Iniciar sesión en Twitter”.
    Botize_IniciarSesion.png
  4. En la pestaña “Configuración” marcamos “Bot activo” y desplazamos slider a la izquierda, lo que hará que se muestre el texto “El bot solo responde a usuarios”.
  5. Nos vamos a la pestaña “Respuestas” y marcamos el CheckBox “Usar la lista frases como respuestas”.
  6. En la misma pestaña, en el cuadro de texto, introducimos el siguiente texto: “url(‘http://www.myweb.com/BotiZuma.aspx’)”, que indica la página a la que Botize enviará los mensajes. Evidentemente, cambiamos la url del servidor y la página, según nos convenga.
  7. En la pestaña Play podemos probar el bot, cuando lo hayamos terminado.
  8. Guardamos la configuración pulsando sobre el disquete.
     

Paso 2: Crear nuestra aplicación web.

  1. Creamos un proyecto ASP.Net en Visual Studio.
  2. Creamos la página “BotiZuma.aspx”.
  3. Abrimos la página aspx en el editor de código y eliminamos todo el contenido, excepto la cabecera, quedando el código página con algo parecido a:
    1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="BotiZuma.aspx.cs" Inherits="Botizuma.Web.BotiZuma" %>

  4. Abrimos el fichero “BotiZuma.aspx.cs”, y dejamos el método Page_Load con algo parecido a esto (No he querido complicarlo, y lo he puesto todo en el mismo método. No recomiendo este tipo de estructura, lo expongo así para no complicar el ejemplo):

 protected void Page_Load(object sender, EventArgs e)

        {

            // Recoger los parámetros

            string tweet = Request.Form["tweet"];

           

            // Comprobamos si se ha mandado un mensaje

            if (tweet == null)

            {               

                Response.Write("¿Como dice?");

                return;

            }

 

            // Quitamos la cabecera @UnUsuario

            string texto = "";

            int ini = tweet.IndexOf(" ");

            if (ini >= 0)

            {

                texto = tweet.Substring(ini + 1);

            }

            else

            {

                texto = tweet;

            }

 

            // En teoria nos queda un mensaje del tipo 2+2, lo separamos

            string[] parametros = texto.Split('+');

            // Solo deben quedar dos elementos en el array

            if (parametros.Length != 2)

            {

                Response.Write("ERROR: Debe enviar un mensaje del tipo @BotiZuma 2+2");

            }

 

            // Convertimos el primer valor a int

            int primerValor = 0;

            if (!int.TryParse(parametros[0], out primerValor))

            {

                Response.Write("ERROR: Debe enviar un mensaje del tipo @BotiZuma 2+2");

            }

 

            // Convertimos el segundo valor a int

            int segundoValor = 0;

            if (!int.TryParse(parametros[1], out segundoValor))

            {

                Response.Write("ERROR: Debe enviar un mensaje del tipo @BotiZuma 2+2");

            }

 

            // Sumamos los dos valores

            int resultado = primerValor + segundoValor;

 

            // Enviamos la respuesta

            Response.Write(string.Format("{0}+{1}={2}", primerValor, segundoValor, resultado));

        }

 

Ahora solo queda compilarlo, subirlo a nuestro servidor y probarlo.

 

Para cualquier duda os podéis dirigir a duefectu@sd-a.com, estaré encantado de responder a todas las dudas y observaciones que me enviéis.

(c) 2011 Duefectu Corp.
Duefectu Corp es parte de SD Assessors, S.A.

www.sd-a.com