google devfest 2009 argentina - building google wave robots
TRANSCRIPT
Google Wave for Developers: Making Robots
Chris Schalk @cschalk Patrick Chanezon @chanezon
Con: Martin Sarsale
November 17, 2009
Why build on Google Wave?
• Real-time == Real-awesome o Self-explanatory
• Workflow o Focused on bridging communication and workflow.
• Leverage o New and exciting technology and foundation.
• Opportunity! o New business opportunities.
Extensions in Wave
• Gadgets o Embed them in a conversation o Built with HTML+Javascript o Interactive with the Wave and it’s participants o Ex: maps, slideshows, search results
• Robots 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
The most common ways to extend Wave are to use:
Wave Entities: Data Model
• Wave • Wavelets • Blips • Documents
“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
Robot Architecture Overview
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 • Events:
o "Robot added to Wave" - WAVELET_SELF_ADDED o ”New blip" - BLIP_SUBMITTED o "Blip edited" - BLIP_VERSION_CHANGED o "New participant"
- WAVELET_PARTICIPANTS_CHANGED • Responds to:
o Augmented or edited Wave content o Invites from other participants o Interaction with other systems outside of Wave
Robot Examples Smiley
"""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 blip.GetDocument().SetText(contents) if __name__ == '__main__': smiley = robot.Robot('Smiley') smiley.RegisterHandler( events.BLIP_SUBMITTED, OnBlipSubmitted) smiley.Run()
(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 protected]) • CleanTXT ([email protected]) • Polly the Pollster ([email protected]) • Yelpful ([email protected]) • TwitUsernames ([email protected]) • XMPP Lite ([email protected]) • Madoqua Wave Bot ([email protected]) • Emoticony ([email protected]) • Inbeddable ([email protected]) • Easy Public ([email protected])
Robot Lists
• http://wave-samples-gallery.appspot.com/ • http://completewaveguide.com/guide/Wave_Bots • http://www.waverobots.com/ • http://www.cloudave.com/link/the-top-11-google-wave-
robots-for-the-enterprise
Wave videos in a theater near you
• What is Google Wave email reinvented http://www.youtube.com/watch?v=rDu2A3WzQpo
• Google Wave Pulp Fiction creative use of robots (strong language:-) http://www.youtube.com/watch?v=xcxF9oz9Cu0
• Introducing SAP Gravity, a Business Process Modeling Tool for Google Wave Wave for business http://www.youtube.com/watch?v=FaNhXPSCQWo
Demo: Building Wave Robots
Robot Roadmap
• 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
servers. • Gateway support: Improve the current tweety type of
access to support outside addresses of the form [email protected]
Beyond Robots: Wave federation • Open Source protocol http://www.waveprotocol.org • Open Source Google Wave Federation Prototype Server
http://code.google.com/p/wave-protocol/
Beyond Robots: Wave federation
Wave Robot Development Experience in Argentina
Local Expert building Wave Robots!
Martin Sarsale
Summary – How to get started
• Familiarize yourself with the developer sandbox. http://wave.google.com/a/wavesandbox.com/
• Explore the docs. http://code.google.com/apis/wave
• Stay up-to-date on our blog updates. http://googlewavedev.blogspot.com/