top

Posts tagged with wave-robot

Min første Google Wave Robot

Når man først har fått tilgang til Google Wave som utvikler så måtte jeg jo nesten bare lage min egen lille Google Wave Robot ikke minst for å teste ut hva slags muligheter man har.

Når jeg fikk tilgang til Wave så opprettet jeg en Wave for å liste opp hvilke nordmenn som var å finne i Wave sandkassen alias "dev preview". Der plasserte jeg også Twitter-brukernavnet til høyre for navnet deres, men istedenfor å markere hver av dem og deretter trykke ctrl+l for å sette urlen til http://twitter.com/..username.. så tenkte jeg at det var en passende enkel oppgave for min første Wave Robot.

twitusernames.png

Dermed lagde jeg twitusernames@appspot.com, for å ta den i bruk er det bare å legge den adressen til som "participant" på en Wave så erstatter den alle @brukernavn med lenkeversjon.

Foreløpig er man tvunget til å skrive Wave Robot med Google App Engine, så da valgte jeg å skrive den i Python siden jeg antar at den versjonen er mest stabil, det finnes også klientbibliotek for Java om du skulle ønske å skrive Wave Robot med Java.

Det jeg strevde mest med i går var å få events.BLIP_SUBMITTED til å virke, tydeligvis har det vært en bug i Wave for i dag virket den som den skulle. Ikke alltid like greit å utvikle på en plattform som er under utvikling, men regner selvsagt ikke med at alt skal virke 100% på en "dev preview" heller.

Koden til min enkle lille Wave Robot:


#!/usr/bin/env python
# -*- coding: UTF-8 -*-

from waveapi import events
from waveapi import model
from waveapi import robot
from waveapi import document

import re

USERNAMES_RE = re.compile('\B@(\w+)')
TWITTER_URL = "http://twitter.com/"

def OnBlipSubmitted(properties, context):
    """Invoked when blip is submitted."""
    blip = context.GetBlipById(properties['blipId'])
    doc = blip.GetDocument()
    
    for m in USERNAMES_RE.finditer(doc.GetText()):
        doc.SetAnnotation(document.Range(m.start(), m.end()), "link/manual", TWITTER_URL + m.group(1))

if __name__ == '__main__':
    usernamesRobot = robot.Robot('twitusernames', 
    image_url='http://twitusernames.appspot.com/public/twitusernames.png',
    version='1',
    profile_url='http://twitusernames.appspot.com/')
    usernamesRobot.RegisterHandler(events.BLIP_SUBMITTED, OnBlipSubmitted)
    usernamesRobot.Run()
 1