Google Wave Robot in Java
Von Carsten
Heute ging’s mir wieder besser und ich hab mich an meine Google Wave gesetzt. (Noch jemand eine Einladung?) Google Wave ist ein Tool zur Online-Zusammenarbeit, mir kommt es im Moment wie ein Gruppenchat mit erweiterter Textverarbeitung vor. Man kann aber auch Gadgets hinzufügen, also Karten, Buchcover-Anzeigen, Youtube-Videos und anderes. Damit kann man wohl ziemlich viele der in der Zusammenarbeit anfallenden Arbeiten erledigen.
Ich wollte jetzt einen Robot schreiben, quasi ein Programm, das als Benutzer mit in der Wave sitzt und Fragen beantworten kann. Als erstes fiel mir da ein IMDB-Robot ein, der Filmtitel aus dem Text der Wave heraussucht und weitere Details anzeigt. Allerdings scheint die IMDB keine programmatische Abfrage zu unterstützen (und mir ist auch so, als hätte es da vor einigen Wochen Aufregung über die automatische Abfrage gegeben). Glücklicherweise gibt es noch Seiten wie diese, mit der man Abfragen stellen kann. Mein Plan ist also nicht ganz aus der Welt… 😉
Los ging’s aber erstmal mit einem einfachen Hello World-Robot. Google bietet ein sehr schönes Tutorial zur Wave API. Dort ist auch erklärt, wie man sein Eclipse zum Deployment in die Google AppEngine einrichtet – dort muss der Robot laufen. Die AppEngine ist ein Cloud-Service, in dem eigene Programme laufen können. Der Robot selbst ist quasi ein Servlet, das bestimmte Wave-Event erhält und darauf antwortet.
Nachdem das erste Hallo Welt in meiner Wave aufgetaucht war, habe ich den Robot noch ein wenig verändert. Im Moment antwortet er einfach auf Blips mit dem umgekehrten Text.
Der Robot hört bisher auf 2 Events, nämlich die Anmeldung neuer Benutzer (WAVELET_PARTICIPANTS_CHANGED
) und das Erzeugen eines Blips (BLIP_SUBMITTED
). Die beiden Events müssen in der capabilities.xml eingetragen sein.
Was mir noch nicht 100%ig klar ist, ist die Versionierung des Robots. Einmal gibt es die Version der AppEngine, dann die Version des Robots. Der Robot muss zwingend neu versioniert werden, wenn sich die Events verändern, auf die er hören soll. Bei der Versionierung der AppEngine geht es wohl eher um Releases, also veränderte Funktionalität. Vielleicht finde ich ja dazu noch ein paar schöne Tutorials oder Erklärungen. Bei meinem Testrobot werde ich wohl nicht weiter versionieren, nur bei Eventänderungen den Zähler hochsetzen. Ich müsste mal ausprobieren, ob ich den Robot auch in Groovy schreiben kann, denn damit wäre das Verarbeiten von JSON- oder XML-Antworten der Webservices sehr viel einfacher zu schreiben. Es gibt eine Anleitung für AppEngine Groovy, die werde ich mich als nächstes zu Gemüte führen.