Google Devfest 2009 Argentina - Building Google Wave Robots

Preview:

Citation preview

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 (wikifier@appspot.com) •  CleanTXT (cleantxt@appspot.com) •  Polly the Pollster (polly-wave@appspot.com) •  Yelpful (yelpful@appspot.com) •  TwitUsernames (twitusernames@appspot.com) •  XMPP Lite (wave-xmpp@appspot.com) •  Madoqua Wave Bot (blog-bot@appspot.com) •  Emoticony (emoticonbot@appspot.com) •  Inbeddable (inbeddable@appspot.com) •  Easy Public (easypublic@appspot.com)

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 address+robot@appspot.com

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/