SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
Getting Started With
  Google Wave Development




James E. Robinson, III     NC State University
james.robinson@extension.org      NETC 2010
Google Wave v/s Google wave


Wave - the Wave protocol

wave - The Google wave web app
Wave Anatomy
Wavelet Anatomy
Wavelet Anatomy (cont.)

 Blips
 Participants
 Tags
 Data Documents
 metadata
    creator
    creation_time
    last_modified_time
    robot
    title
Blip Anatomy
Blip Anatomy (cont.)

  Document
  Annotations
  Children
  Parent (if not already)
  metadata
    creator
    contributors
    last_modified
    version
Gadgets: n, dynamic web content that
can be placed on any page on the web.
Gadgets can be games, mini
applications, news feeds, maps or any
content.

See also: JavaScript on steroids.
<?xml version="1.0" encoding="UTF-8" ?>
<Module>
 <ModulePrefs title="Hello, World">
  <Require feature="wave" />
 </ModulePrefs>
 <Content type="html">
    Hello, World!
 </Content>
</Module>
Wave Gadget API

 setStateCallback
 getState
 setPrivateStateCallback
 getPrivateState
 submitDelta
 setParticipantCallback
Gadget API Example

<?xml version="1.0" encoding="UTF-8" ?>

<Module>

<ModulePrefs title="Counter/State Example"
           height="120">
 <Require feature="wave" />
</ModulePrefs>
<Content type="html">
<![CDATA[

<div id="content_div"
     style="height: 50px;"></div>

<input type=button value="Click Me!"
id="butCount" onClick="buttonClicked()"
>

<input type=button value="Reset" id="
butReset" onClick="resetCounter()">
<script type="text/javascript">

 var div = $('content_div');

 function init() {
   if (wave &&
       wave.isInWaveContainer()) {
    wave.setStateCallback(stateUpdated);
   }
 }

gadgets.util.registerOnLoadHandler(init);
function buttonClicked() {
  var val = wave.getState().get('count', '0');
  wave.getState().submitDelta(
                     {'count': val + 1});
}

function stateUpdated() {
  if (!wave.getState().get('count')) {
      div.innerHTML = "The count is 0."
  } else {
      div.innerHTML = "The count is " +
                wave.getState().get('count');
  }
}
// Reset value of "count" to 0
 function resetCounter(){
   wave.getState().submitDelta({'count': '0'});
 }

</script>

 ]]>
 </Content>
</Module>
Gadget Hosting?
What To Do?
if __name__ == '__main__':

 myRobot = robot.Robot('robot name',
image_url='http://path.to/icon.png')

 myRobot.register_handler(
   events.WaveletSelfAdded,
   OnSelfAdded)

 myRobot.Run()
Add us a Gadget...

def OnSelfAdded(event, wavelet):
 blip = event.blip
 gadget = element.Gadget(GADGET_URL)
 blip.append(gadget)
Wave Happenings

 wavelet_blip_created
 wavelet_blip_removed
 wavelet_participants_change
 wavelet_self_added
 wavelet_self_removed
 wavelet_title_changed
 wavelet_timestamp_changed
 wavelet_version_changed
Blip Happenings

 blip_contributors_changed
 blip_deleted
 blip_submitted - only fires once
 blip_timestamp_changed
 blip_version_changed
 document_changed - various intervals
 form_button_clicked
code.google.com/appengine/
downloads.html
Register your new application...
Complex mapping structure

AppName: jerobins-test

Application URL: jerobins-test.appspot.com

Wave Address: jerobins-test@appspot.com
Now What?

def OnBlipSubmitted(event, wavelet):
 blip = event.blip
 gadget = blip.first(element.Gadget, 
                     url=GADGET_URL)
 if gadget:
   count = gadget.get('count', '0')
   gadget.update_element({'count', '0'})
   blip.append("nCount before blip" + 
                " changed: " + count)
Danger, Will Robinson!

Your robot or gadget may not be
the only gadget or robot on the
wave.
Annotations
Robot Annotations

def OnWaveletSelfAdded(event, wavelet):
 blip = event.blip
 blip.Annotation("my-robot/tag")

def OnButtonClicked(event, wavelet):
 blip = event.blip
 annots = blip.annotations
 if annots.include("my-robot/tag"):
   """ do MY robot stuff """
Active Robot API

 Performing scheduled tasks (e.g. cron
 jobs) at specified intervals
 Creating new waves within Google Wave
 in response to actions within Google Wave
 itself
 Responding to outside events or services
 by updating waves or creating new ones
Keep on Wavin' ...

Mais conteúdo relacionado

Mais procurados

Asynchronous Programming with JavaScript
Asynchronous Programming with JavaScriptAsynchronous Programming with JavaScript
Asynchronous Programming with JavaScript
WebF
 
Backbone intro
Backbone introBackbone intro
Backbone intro
Ian Yang
 
The Open Web and what it means
The Open Web and what it meansThe Open Web and what it means
The Open Web and what it means
Robert Nyman
 
BarCamp CR 2013 - Angularjs - Brian Salazar
BarCamp CR 2013 - Angularjs - Brian SalazarBarCamp CR 2013 - Angularjs - Brian Salazar
BarCamp CR 2013 - Angularjs - Brian Salazar
barcampcr
 

Mais procurados (13)

Asynchronous Programming with JavaScript
Asynchronous Programming with JavaScriptAsynchronous Programming with JavaScript
Asynchronous Programming with JavaScript
 
Backbone intro
Backbone introBackbone intro
Backbone intro
 
Javascript dom event
Javascript dom eventJavascript dom event
Javascript dom event
 
JavaScript - Chapter 11 - Events
 JavaScript - Chapter 11 - Events  JavaScript - Chapter 11 - Events
JavaScript - Chapter 11 - Events
 
Javascript event handler
Javascript event handlerJavascript event handler
Javascript event handler
 
Event In JavaScript
Event In JavaScriptEvent In JavaScript
Event In JavaScript
 
Client Web
Client WebClient Web
Client Web
 
The Open Web and what it means
The Open Web and what it meansThe Open Web and what it means
The Open Web and what it means
 
Introduction to modern front-end with Vue.js
Introduction to modern front-end with Vue.jsIntroduction to modern front-end with Vue.js
Introduction to modern front-end with Vue.js
 
Web apps without internet
Web apps without internetWeb apps without internet
Web apps without internet
 
Grails Launchpad - From Ground Zero to Orbit
Grails Launchpad - From Ground Zero to OrbitGrails Launchpad - From Ground Zero to Orbit
Grails Launchpad - From Ground Zero to Orbit
 
BarCamp CR 2013 - Angularjs - Brian Salazar
BarCamp CR 2013 - Angularjs - Brian SalazarBarCamp CR 2013 - Angularjs - Brian Salazar
BarCamp CR 2013 - Angularjs - Brian Salazar
 
The Null Object Pattern
The Null Object PatternThe Null Object Pattern
The Null Object Pattern
 

Destaque

Η ΠΡΑΓΑ ΤΗ ΝΥΧΤΑ
Η ΠΡΑΓΑ ΤΗ ΝΥΧΤΑΗ ΠΡΑΓΑ ΤΗ ΝΥΧΤΑ
Η ΠΡΑΓΑ ΤΗ ΝΥΧΤΑ
milonitsa
 

Destaque (6)

Η ΠΡΑΓΑ ΤΗ ΝΥΧΤΑ
Η ΠΡΑΓΑ ΤΗ ΝΥΧΤΑΗ ΠΡΑΓΑ ΤΗ ΝΥΧΤΑ
Η ΠΡΑΓΑ ΤΗ ΝΥΧΤΑ
 
I Can Haz Lite Box
I Can Haz Lite BoxI Can Haz Lite Box
I Can Haz Lite Box
 
FriendFeed
FriendFeedFriendFeed
FriendFeed
 
Essential things that should always be in your car
Essential things that should always be in your carEssential things that should always be in your car
Essential things that should always be in your car
 
Activism x Technology
Activism x TechnologyActivism x Technology
Activism x Technology
 
How to Battle Bad Reviews
How to Battle Bad ReviewsHow to Battle Bad Reviews
How to Battle Bad Reviews
 

Semelhante a Getting Started With Google Wave Developlement

After max+phonegap
After max+phonegapAfter max+phonegap
After max+phonegap
yangdj
 
混搭移动开发:PhoneGap+JQurey+Dreamweaver
混搭移动开发:PhoneGap+JQurey+Dreamweaver混搭移动开发:PhoneGap+JQurey+Dreamweaver
混搭移动开发:PhoneGap+JQurey+Dreamweaver
yangdj
 
HTML pour le web mobile, Firefox OS - Devfest Nantes - 2014-11-07
HTML pour le web mobile, Firefox OS - Devfest Nantes - 2014-11-07HTML pour le web mobile, Firefox OS - Devfest Nantes - 2014-11-07
HTML pour le web mobile, Firefox OS - Devfest Nantes - 2014-11-07
Frédéric Harper
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011
Chris Alfano
 
HTML5 & The Open Web - at Nackademin
HTML5 & The Open Web -  at NackademinHTML5 & The Open Web -  at Nackademin
HTML5 & The Open Web - at Nackademin
Robert Nyman
 
Mobile Software Engineering Crash Course - C06 WindowsPhone
Mobile Software Engineering Crash Course - C06 WindowsPhoneMobile Software Engineering Crash Course - C06 WindowsPhone
Mobile Software Engineering Crash Course - C06 WindowsPhone
Mohammad Shaker
 
Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development
Mahmoud Hamed Mahmoud
 
Firefox OS: HTML5 sur les stéroïdes - HTML5mtl - 2014-04-22
Firefox OS: HTML5 sur les stéroïdes - HTML5mtl - 2014-04-22Firefox OS: HTML5 sur les stéroïdes - HTML5mtl - 2014-04-22
Firefox OS: HTML5 sur les stéroïdes - HTML5mtl - 2014-04-22
Frédéric Harper
 
Big Data for each one of us
Big Data for each one of usBig Data for each one of us
Big Data for each one of us
OSCON Byrum
 

Semelhante a Getting Started With Google Wave Developlement (20)

Wave Workshop
Wave WorkshopWave Workshop
Wave Workshop
 
Programming For Google Wave
Programming For Google WaveProgramming For Google Wave
Programming For Google Wave
 
After max+phonegap
After max+phonegapAfter max+phonegap
After max+phonegap
 
混搭移动开发:PhoneGap+JQurey+Dreamweaver
混搭移动开发:PhoneGap+JQurey+Dreamweaver混搭移动开发:PhoneGap+JQurey+Dreamweaver
混搭移动开发:PhoneGap+JQurey+Dreamweaver
 
Google Wave API: Now and Beyond
Google Wave API: Now and BeyondGoogle Wave API: Now and Beyond
Google Wave API: Now and Beyond
 
Firefox OS, HTML5 to the next level - Python Montreal - 2014-05-12
Firefox OS, HTML5 to the next level - Python Montreal - 2014-05-12Firefox OS, HTML5 to the next level - Python Montreal - 2014-05-12
Firefox OS, HTML5 to the next level - Python Montreal - 2014-05-12
 
HTML pour le web mobile, Firefox OS - Devfest Nantes - 2014-11-07
HTML pour le web mobile, Firefox OS - Devfest Nantes - 2014-11-07HTML pour le web mobile, Firefox OS - Devfest Nantes - 2014-11-07
HTML pour le web mobile, Firefox OS - Devfest Nantes - 2014-11-07
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011
 
HTML5 & The Open Web - at Nackademin
HTML5 & The Open Web -  at NackademinHTML5 & The Open Web -  at Nackademin
HTML5 & The Open Web - at Nackademin
 
WordPress Realtime - WordCamp São Paulo 2015
WordPress Realtime - WordCamp São Paulo 2015WordPress Realtime - WordCamp São Paulo 2015
WordPress Realtime - WordCamp São Paulo 2015
 
Mobile Software Engineering Crash Course - C06 WindowsPhone
Mobile Software Engineering Crash Course - C06 WindowsPhoneMobile Software Engineering Crash Course - C06 WindowsPhone
Mobile Software Engineering Crash Course - C06 WindowsPhone
 
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web ToolkitJava Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
Java Web Programming on Google Cloud Platform [3/3] : Google Web Toolkit
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Building iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" DominoBuilding iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" Domino
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
 
Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development Windows Store app using XAML and C#: Enterprise Product Development
Windows Store app using XAML and C#: Enterprise Product Development
 
Tools and Projects Dec 2018 Edition
Tools and Projects Dec 2018 EditionTools and Projects Dec 2018 Edition
Tools and Projects Dec 2018 Edition
 
Firefox OS: HTML5 sur les stéroïdes - HTML5mtl - 2014-04-22
Firefox OS: HTML5 sur les stéroïdes - HTML5mtl - 2014-04-22Firefox OS: HTML5 sur les stéroïdes - HTML5mtl - 2014-04-22
Firefox OS: HTML5 sur les stéroïdes - HTML5mtl - 2014-04-22
 
Backbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVCBackbone.js — Introduction to client-side JavaScript MVC
Backbone.js — Introduction to client-side JavaScript MVC
 
Big Data for each one of us
Big Data for each one of usBig Data for each one of us
Big Data for each one of us
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 

Getting Started With Google Wave Developlement

  • 1. Getting Started With Google Wave Development James E. Robinson, III NC State University james.robinson@extension.org NETC 2010
  • 2. Google Wave v/s Google wave Wave - the Wave protocol wave - The Google wave web app
  • 5. Wavelet Anatomy (cont.) Blips Participants Tags Data Documents metadata creator creation_time last_modified_time robot title
  • 7. Blip Anatomy (cont.) Document Annotations Children Parent (if not already) metadata creator contributors last_modified version
  • 8.
  • 9. Gadgets: n, dynamic web content that can be placed on any page on the web. Gadgets can be games, mini applications, news feeds, maps or any content. See also: JavaScript on steroids.
  • 10. <?xml version="1.0" encoding="UTF-8" ?> <Module> <ModulePrefs title="Hello, World"> <Require feature="wave" /> </ModulePrefs> <Content type="html"> Hello, World! </Content> </Module>
  • 11. Wave Gadget API setStateCallback getState setPrivateStateCallback getPrivateState submitDelta setParticipantCallback
  • 12. Gadget API Example <?xml version="1.0" encoding="UTF-8" ?> <Module> <ModulePrefs title="Counter/State Example" height="120"> <Require feature="wave" /> </ModulePrefs>
  • 13. <Content type="html"> <![CDATA[ <div id="content_div" style="height: 50px;"></div> <input type=button value="Click Me!" id="butCount" onClick="buttonClicked()" > <input type=button value="Reset" id=" butReset" onClick="resetCounter()">
  • 14. <script type="text/javascript"> var div = $('content_div'); function init() { if (wave && wave.isInWaveContainer()) { wave.setStateCallback(stateUpdated); } } gadgets.util.registerOnLoadHandler(init);
  • 15. function buttonClicked() { var val = wave.getState().get('count', '0'); wave.getState().submitDelta( {'count': val + 1}); } function stateUpdated() { if (!wave.getState().get('count')) { div.innerHTML = "The count is 0." } else { div.innerHTML = "The count is " + wave.getState().get('count'); } }
  • 16. // Reset value of "count" to 0 function resetCounter(){ wave.getState().submitDelta({'count': '0'}); } </script> ]]> </Content> </Module>
  • 18.
  • 19. What To Do? if __name__ == '__main__': myRobot = robot.Robot('robot name', image_url='http://path.to/icon.png') myRobot.register_handler( events.WaveletSelfAdded, OnSelfAdded) myRobot.Run()
  • 20. Add us a Gadget... def OnSelfAdded(event, wavelet): blip = event.blip gadget = element.Gadget(GADGET_URL) blip.append(gadget)
  • 21. Wave Happenings wavelet_blip_created wavelet_blip_removed wavelet_participants_change wavelet_self_added wavelet_self_removed wavelet_title_changed wavelet_timestamp_changed wavelet_version_changed
  • 22. Blip Happenings blip_contributors_changed blip_deleted blip_submitted - only fires once blip_timestamp_changed blip_version_changed document_changed - various intervals form_button_clicked
  • 23.
  • 25. Register your new application...
  • 26.
  • 27. Complex mapping structure AppName: jerobins-test Application URL: jerobins-test.appspot.com Wave Address: jerobins-test@appspot.com
  • 28. Now What? def OnBlipSubmitted(event, wavelet): blip = event.blip gadget = blip.first(element.Gadget, url=GADGET_URL) if gadget: count = gadget.get('count', '0') gadget.update_element({'count', '0'}) blip.append("nCount before blip" + " changed: " + count)
  • 29. Danger, Will Robinson! Your robot or gadget may not be the only gadget or robot on the wave.
  • 31. Robot Annotations def OnWaveletSelfAdded(event, wavelet): blip = event.blip blip.Annotation("my-robot/tag") def OnButtonClicked(event, wavelet): blip = event.blip annots = blip.annotations if annots.include("my-robot/tag"): """ do MY robot stuff """
  • 32. Active Robot API Performing scheduled tasks (e.g. cron jobs) at specified intervals Creating new waves within Google Wave in response to actions within Google Wave itself Responding to outside events or services by updating waves or creating new ones