Google Devfest 2009 Argentina - Building Google Wave Robots
Google Wave for Developers:
Chris Schalk @cschalk
Patrick Chanezon @chanezon
Con: Martin Sarsale
November 17, 2009
Why build on Google Wave?
• Real-time == Real-awesome
o Focused on bridging communication and workflow.
o New and exciting technology and foundation.
o New business opportunities.
Extensions in Wave
The most common ways to extend Wave are to use:
o Embed them in a conversation
o Interactive with the Wave and it’s participants
o Ex: maps, slideshows, search results
o Are actual participants of a Wave which can ‘do things’
Exactly the same as a Wave participant
o Ex: content update, integration with other systems
Wave Entities: Data Model
“Show me your flowchart and conceal your tables, and I shall continue to be mystified.
Show me your tables, and I won't usually need your flowchart; it'll be obvious.”
Fred Brooks, The Mythical Man-Month
Wave Robot Concepts
• Wave Robots...
o Live in the cloud.
o Are external (robotic) participants.
o Have full access to wave.
o Respond to events on a wave.
o Are currently available for Java and Python APIs on
Google App Engine.
Wave Robots Essentials
• APIs in Python and Java
• Runs in Google App Engine
o "Robot added to Wave" - WAVELET_SELF_ADDED
o ”New blip" - BLIP_SUBMITTED
o "Blip edited" - BLIP_VERSION_CHANGED
o "New participant"
• Responds to:
o Augmented or edited Wave content
o Invites from other participants
o Interaction with other systems outside of Wave
"""Smiley: Yet another smiley robot."""
from waveapi import events
from waveapi import robot
def OnBlipSubmitted(properties, context):
blip = context.GetBlipById(properties['blipId'])
contents = blip.GetDocument().GetText()
contents = contents.replace(':(', unichr(0x2639)) # happy
contents = contents.replace(':)', unichr(0x263A)) # sad
if __name__ == '__main__':
smiley = robot.Robot('Smiley')
(A complete and useful robot in a single slide... with
room to spare!)
Other Robot Examples
• Swedish Chef
• Monty + Syntaxy (a match made in robot heaven)
• Wikify (email@example.com)
• CleanTXT (firstname.lastname@example.org)
• Polly the Pollster (email@example.com)
• Yelpful (firstname.lastname@example.org)
• TwitUsernames (email@example.com)
• XMPP Lite (firstname.lastname@example.org)
• Madoqua Wave Bot (email@example.com)
• Emoticony (firstname.lastname@example.org)
• Inbeddable (email@example.com)
• Easy Public (firstname.lastname@example.org)
Wave videos in a theater near you
• What is Google Wave
• Google Wave Pulp Fiction
creative use of robots (strong language:-)
• Introducing SAP Gravity, a Business Process Modeling Tool
for Google Wave
Wave for business
• New Robots wire protocol (v0.2)
o Publish for community feedback
o Implement Java and Python API parity
• Internal speed improvements for AppEngine robots.
• Robot Gateway / OpenSocial REST Access
• Robot access to OAuth controlled resources
• Better multiple wave access
• Sunset robot cron in favor of direct access to Wave
• Gateway support: Improve the current tweety type of
access to support outside addresses of the form address
Beyond Robots: Wave federation
• Open Source protocol http://www.waveprotocol.org
• Open Source Google Wave Federation Prototype Server
Wave Robot Development
Experience in Argentina
Local Expert building Wave Robots!
Summary – How to get started
• Familiarize yourself with the developer sandbox.
• Explore the docs.
• Stay up-to-date on our blog updates.