Tutorial basico de google wave bots

0
9622

TUTORIAL BÁSICO GOOGLE WAVE BOTS

A lo
largo de este tutorial crearemos un robot muy simple, que al
invitarlo a un Wave sustituye una tag por la fecha y hora actual.

Comenzaremos
creando un proyecto como se explicó en el tutorial anterior
“TUTORIAL BÁSICO GOOGLE APPLICATION ENGINE”.

Luego
añadiremos a la carpeta /war/WEB-INF/lib del proyecto los
ficheros: wave-robot-api.jar, json.jar y jsonrpc.jar que bajaremos de
http://code.google.com/p/wave-robot-java-client/downloads/list
y lo añadiremos a las libraries del proyecto mediante el menú
Project/properties…/Java Build Path/Libraries/Add jars…

En la carpeta /war crearemos una carpeta _wave para añadir dos ficheros:



y capabilities.xml


  
  
  
  1
  

donde
vemos que se informa este bot atenderá el evento
document_changed y cuestiones de profile (nombre, logo, descriptor).
Añadimos entonces la imagen y el index.html en el /war.

Vamos a
actualizar el web.xml como vemos a continuación:








Robiebot

com.robiebot.RobiebotServlet





Robiebot

/_wave/robot/jsonrpc





profile

com.robiebot.RobiebotProfileServlet





profile

/_wave/robot/profile





El
servlet principal será Robiebot que atenderá la ruta
estándar /_wave/robot/jsonrpc y el RobiebotProfileServlet
responderá con información de profile también en
una ruta estándar para los bots de Wave.

Veamos
los servlets:

  
package com.robiebot;


import com.google.wave.api.ProfileServlet;


/**

* Perfil del robot

*

* @author jantoniucci

*

*/

public class RobiebotProfileServlet extends ProfileServlet {


private static final long serialVersionUID = 2130048805501433709L;


@Override

public String getRobotAvatarUrl() {

return "http://robiebot.appspot.com/robiebot.png";

}


@Override

public String getRobotName() {

return "RobieBot (por ahora sólo una demo para un tutorial de Autentia)";

}


@Override

public String getRobotProfilePageUrl() {

return "http://robiebot.appspot.com/index.html";

}

}


Este
servlet es sencillo, sólo implementa una interfaz
ProfileServlet para resolver la info que el bot entregará a
Wave para que el usuario vea el logo, descripción, etc.

Y ahora
el servlet principal:

  
package com.robiebot;


import java.text.DateFormat;

import java.util.Date;


import com.google.wave.api.AbstractRobotServlet;

import com.google.wave.api.Blip;

import com.google.wave.api.Event;

import com.google.wave.api.EventType;

import com.google.wave.api.Range;

import com.google.wave.api.RobotMessageBundle;

import com.google.wave.api.TextView;


public class RobiebotServlet extends AbstractRobotServlet {


private static final long serialVersionUID = 2666513176199262614L;

private static final String TAG_NOW = "";


@Override

public void processEvents(RobotMessageBundle bundle) {


if (bundle.wasSelfAdded()) {

final Blip blip = bundle.getWavelet().appendBlip();

final TextView textView = blip.getDocument();

textView

.append("Hola amigosss!)");

} else {

for (Event event : bundle.getEvents()) {

if (event.getType() == EventType.DOCUMENT_CHANGED) {

TextView document = event.getBlip().getDocument();

if (document.getText().contains(TAG_NOW)) {

final int inicioTag = document.getText().indexOf(TAG_NOW);

document.replace(new Range(inicioTag, inicioTag

+ TAG_NOW.length()), DateFormat.getInstance()

.format(new Date()));

}

}

}

}

}


}

Vamos a
analizarlo: implementamos
AbstractRobotServlet
un que ya tiene un método para interceptar eventos, que vienen
informados en bundle. Con el
bundle.wasSelfAdded()
el Wave nos informa que se acaba de añadir a nuestro bot en un
Wave. Si no fuera el caso
buscamos que si se ha producido un
EventType.DOCUMENT_CHANGED
y el texto del documento contiene el tag
<rb:now/>
generamos un replace en el documento.

Sólo
nos queda publicarlo e invitarlo a un wave:


Y
entonces genera el blip con el saludo y si escribimos el tag lo
sustituye por la fecha/hora actual.

Con esto
sólo estamos viendo el primer milímetro del ovillo
waves.

¿por
dónde seguir?

Otros
links interesantes:

Que
aproveche!

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad