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.

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()