Google Wave for Developers:
         Making Robots

        Patrick Chanezon, Google @chanezon

        Salvador Diaz, SFEIR, @salvadordiaz




      December 9, 2009

Wednesday, December 9, 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.




Wednesday, December 9, 2009
Extensions in Wave
           The most common ways to extend Wave are to use:


      • 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




Wednesday, December 9, 2009
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
   •    Wavelets
   •    Blips
   •    Documents




Wednesday, December 9, 2009
Robot Architecture Overview




Wednesday, December 9, 2009
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.




Wednesday, December 9, 2009
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




Wednesday, December 9, 2009
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!)

Wednesday, December 9, 2009
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)



Wednesday, December 9, 2009
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




Wednesday, December 9, 2009
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




Wednesday, December 9, 2009
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



Wednesday, December 9, 2009
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/




Wednesday, December 9, 2009
Beyond Robots: Wave federation




Wednesday, December 9, 2009
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/




Wednesday, December 9, 2009
Demo: Vacation Workflow Wave Extension




Wednesday, December 9, 2009

Leweb09 Building Wave Robots

  • 1.
    Google Wave forDevelopers: Making Robots Patrick Chanezon, Google @chanezon Salvador Diaz, SFEIR, @salvadordiaz December 9, 2009 Wednesday, December 9, 2009
  • 2.
    Why build onGoogle 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. Wednesday, December 9, 2009
  • 3.
    Extensions in Wave The most common ways to extend Wave are to use: • 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 Wednesday, December 9, 2009
  • 4.
    Wave Entities: DataModel “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 • Wavelets • Blips • Documents Wednesday, December 9, 2009
  • 5.
  • 6.
    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. Wednesday, December 9, 2009
  • 7.
    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 Wednesday, December 9, 2009
  • 8.
    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!) Wednesday, December 9, 2009
  • 9.
    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) Wednesday, December 9, 2009
  • 10.
    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 Wednesday, December 9, 2009
  • 11.
    Wave videos ina 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 Wednesday, December 9, 2009
  • 12.
    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 Wednesday, December 9, 2009
  • 13.
    Beyond Robots: Wavefederation • Open Source protocol http://www.waveprotocol.org • Open Source Google Wave Federation Prototype Server http://code.google.com/p/wave-protocol/ Wednesday, December 9, 2009
  • 14.
    Beyond Robots: Wavefederation Wednesday, December 9, 2009
  • 15.
    Summary – Howto 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/ Wednesday, December 9, 2009
  • 16.
    Demo: Vacation WorkflowWave Extension Wednesday, December 9, 2009