Google Wave Robots v2 (Python)

Robots, Gadgets, Embed »
Pamela Fox

Robots
"events": [
        {
            "type": "WAVELET_SELF_ADDED",
            "modifiedBy": "pamela.fox@wavesandbox.com",
            "timestamp": 1269400482868,
            "properties": {
                "blipId": "b+FYYeTpCXJ"
            }
        }
    ],
    "wavelet": {
        "creationTime": 1269400451853,
        "lastModifiedTime": 1269400482868,
        "version": 14,
        "participants": [
            "pamela.fox@wavesandbox.com",
            "wave-skimmy@appspot.com"
        ],
        "creator": "pamela.fox@wavesandbox.com",
        "rootBlipId": "b+FYYeTpCXJ",
        "title": "Dear Diary,",
        "waveId": "wavesandbox.com!w+FYYeTpCXI",
        "waveletId": "wavesandbox.com!conv+root"
    },
  {"params": {
            "blipId": "b+FYYeTpCXJ",
            "waveletId": "wavesandbox.com!conv+root",
            "waveId": "wavesandbox.com!w+FYYeTpCXI",
            "modifyAction": {
                "modifyHow": "REPLACE",
                "elements": [
                    {
                        "type": "IMAGE",
                        "properties": {
                            "url": "http://wave-skimmy.appspot.com/smile.gif"
                        }
                    }
                ]
            },
            "modifyQuery": {
                "textMatch": ":)",
                "maxRes": -1
            }
        },
        "method": "document.modify",
        "id": "op2"
    }
Events
Operations
Robot
Wave
Wave
WAVELET_BLIP_CREATED
WAVELET_BLIP_REMOVED
WAVELET_PARTICIPANTS_CHANGED
WAVELET_SELF_ADDED
WAVELET_SELF_REMOVED
WAVELET_TITLE_CHANGED
BLIP_CONTRIBUTORS_CHANGED
BLIP_SUBMITTED
DOCUMENT_CHANGED
FORM_BUTTON_CLICKED
GADGET_STATE_CHANGED
ANNOTATED_TEXT_CHANGED

wavelet.appendBlip
wavelet.setTitle
wavelet.participant.add
wavelet.datadoc.set
wavelet.modifyTag
blip.createChild
blip.delete
document.appendMarkup
document.inlineBlip.insert
document.modify
robot.createWavelet
robot.fetchWave
robot.notifyCapabilitiesHash
Google Wave
import logging

from waveapi import appengine_robot_runner
from waveapi import element
from waveapi import events
from waveapi import ops
from waveapi import robot

anim_base = 'http://wave-skimmy.appspot.com'
anim_ext = '.gif'
emoticons = {
  ':)' : 'smile',
  ':(' : 'frown',
  '(heart)': 'heart'
  }

def ProcessBlip(event, wavelet):
  blip = event.blip
  for emoticon in emoticons:
    r = blip.all(emoticon)
    if r:
      r.replace(element.Image(anim_base + emoticons[emoticon] + anim_ext))
  pass

if __name__ == '__main__':
  skimmy = robot.Robot('Skimmy', 
    image_url='http://wave-skimmy.appspot.com/public/half.png', 
    profile_url='http://wave-skimmy.appspot.com/public/menu.htm')
  skimmy.register_handler(events.BlipSubmitted, ProcessBlip)
  skimmy.register_handler(events.WaveletSelfAdded, ProcessBlip)
  appengine_robot_runner.run(skimmy, debug=True)
Context
Filters
Events
Operations
Proxying-For
Active
robot.register_handler(
    event.BlipSubmitted, 
     onBlipSubmit,
     context = event.Context.ALL)  
ROOT
SELF
PARENT
CHILDREN

SIBLINGS
ALL
robot.register_handler(
    event.DocumentChanged, 
    onNewMatch,
    filter="\[\[.*\]\]") 
robot.setup_oauth(credentials.CONSUMER_KEY,
    credentials.CONSUMER_SECRET,
    server_rpc_base='http://sandbox.gmodules.com/api/rpc') 

wave = robot.new_wave(domain='wavesandbox.com',
    participants=['someguy@wavesandbox.com',]) 
wave.title = 'Some wave'
robot.submit(wave)


wave = self._sinky.fetch_wavelet(wave.wave_id, wave.wavelet_id)

wavelet.proxyFor('douwe').reply('\n').append('Hello');
robot.register_profile_handler(ProfileHandler)

def ProfileHandler(name):
  if name == 'douwe':
     return {'name': 'Douwe',
                   'imageUrl': 'http://twitter.com/douwe.gif',
                   'profileUrl': 'http://douweosinga.com'}
robot.register_handler(event.BlipCreated)
robot.register_handler(event.BlipRemoved)
robot.register_handler(event.WaveletParticipantsChanged)
robot.register_handler(event.WaveletSelfAdded)
robot.register_handler(event.WaveletSelfRemoved)
robot.register_handler(event.WaveletTitleChanged)
robot.register_handler(event.BlipContributorsChanged)
robot.register_handler(event.BlipSubmitted)
robot.register_handler(event.DocumentChanged)
robot.register_handler(event.FormButtonClicked)
robot.register_handler(event.GadgetStateChanged)
robot.register_handler(event.AnnotatedTextChanged)
http://wave-skimmy.appspot.com/_wave/robot/jsonrpc
wavelet.reply('Hi')
wavelet.title = 'Sad Story'
wavelet.participants.add('public@a.gwave.com')
wavelet.data_documents['MYDATA'] = 'yes'
wavelet.tags.append('emotions')
blip.reply('bai')
blip.delete()
blip.append_markup('<b>hi</b>')
blip.insert_inline_blip()
blip.at(5).insert('new info')
robot.new_wave(domain, participants)
robot.fetch_wave(waveid, waveletid)
Ferry
Poker
Tasky
Examples

Loading comments...

Please log in to add your comment.

Report abuse

More presentations by Pamela Fox

More prezis by author