WaveCalender 17: Read Onlie Robot

Google Wave is still on its early stages and we all know that there are still a lot of functions that are missing in the current release. One such feature which is really nice to have would be the read-only feature. As of now, it’s not yet possible but we are certainly looking forward to the day when we can set our blips or waves as read-only. But for those who cannot wait, you can use Read Onlie (readonliebot@appspot.com) robot. This robot allows the user to set their blips to read-only.

Currently, there are three keywords (case sensitive) that the user can use:

  • “OWNERONLY” – nobody can edit except the owner of the blip
  • “READONLY” – nobody can edit the blip including the owner
  • “RESTORE” – restores the parent blip data (still needs work)

How does this work?

Just include the keyword in the text and after the blip is submitted the robot will check if the keywords are present in the text.


Bookmark and Share

WaveCalender 15: Nimbb Gadget

As we all know we can already embed youtube videos into our waves, but what if we don’t want the hassle of uploading videos at youtube? Good thing we can use Nimbb gadget. This gadget allows us to add webcam video recordings into our wave.  With this gadget we can share video messages with our contacts.

During Recording

Video saved
Nimbb is easy to use but the gadget is only good for one recording. If you decided to send another recording, you need to add the gadget again to be able to record a new message. Another limitation of this gadget would be the maximum duration for a recording which is only 30 seconds. So for short video messages, Nimbb is for you.

Bookmark and Share

WaveCalender 7:HTML Gadget

HTML Gadget by Alex Tkachman lets you add HTML codes to wavelets. Its fairly easy to use. Anything from html tags, css to javascript functions are supported. For any webby like me who wants to spice up my wave a little, will  surely love this little gadget.



This gadget also allows the other participants to edit your code so this would be a nice tool for web developers. Although this gadget is very useful, it also has one big disadvantage. It’s a very unsafe plugin since it allows user generated  javascripts.  This gadget is prone to misuse from ill intentioned developers.

Bookmark and Share


When I was just starting to learn Google Wave Robots, I decided to create a robot that replaces the “at” phrase to “@” since Google does not allow Danish users to create an “@” in the current wave implementation. I’ll give you a walk-through on how I managed to create the “at-buddy.”

I started this robot using the wave robot tutorial which can be found here.

What we need to do is to replace the blip’s text while the user is typing so we need to register the event “DOCUMENT_CHANGED” in the capabilities.xml. For more information regarding capabilities.xml, you can refer to this post.

Once the capabilities are updated, we can now catch the event in our servlet. Let’s insert this in our “Process Events” method.

for (Event e : bundle.getEvents()) {
if (e.getType() == EventType.DOCUMENT_CHANGED) {


// get event blip
Blip blip = e.getBlip();
TextView textView = blip.getDocument();
// get blip text and replace (at) to @
String strBlip = e.getBlip().getDocument().getText().toLowerCase();

//check if text has an "(at)"

//get the index of the first "(at)"
int index = strBlip.indexOf("(at)");

//replace "(at)" to @
textView.replace(new Range(index, index+4), "@");


That’s it! now you can deploy your robot and try it out.

Bookmark and Share


As I was creating my first robot, I wasn’t surprised on how little the number of resources available in the internet were, specially about capabilities.xml. I didn’t find any documentation on its schema yet. So, I decided to write about what I’ve learned.

My robot only needs the “document_changed” and “wavelet_self_added” events but I wanted to know what possible tags  I can add up to the file for my robot settings. As of now I only know two properties that you can set in the file, the capabilities/events and the version of the file.

Here’s my capabilities.xml
Continue reading Capabilities.xml

Bookmark and Share