Ответ 1
events.BLIP_SUMBITTED
должен быть events.BLIP_SUBMITTED
Я хотел добавить три функции к роботу из учебника здесь: http://code.google.com/apis/wave/extensions/robots/python-tutorial.html
Прежде чем добавлять все эти функции, мой робот работает по назначению. Теперь нечетные функции все еще появляются (с "v2" на bck содержимого blip), но ни одна из новых функций не появляется! Я уже пробовал разные способы, но не работает. Ниже приведен код, который я считаю более логичным. Может кто-нибудь сказать мне, почему никто не работает? Благодарю.
Feature 1 - хотел попробовать AppendText
Функция 2 - хотел, чтобы робот обнаружил, что сообщение отправлено
Функция 3 - хотела, чтобы робот добавил сообщение об ошибке с удаленным содержимым старого объекта.
from waveapi import events
from waveapi import model
from waveapi import robot
def OnParticipantsChanged(properties, context):
"""Invoked when any participants have been added/removed."""
added = properties['participantsAdded']
for p in added:
Notify(context)
def OnRobotAdded(properties, context):
"""Invoked when the robot has been added."""
root_wavelet = context.GetRootWavelet()
"""feature 1"""
root_wavelet.CreateBlip().GetDocument().SetText("I'm alive! v2").GetDocument().AppendText("xxx")
def Notify(context):
root_wavelet = context.GetRootWavelet()
root_wavelet.CreateBlip().GetDocument().SetText("Hi everybody! v2")
"""feature 2"""
def OnBlipSubmitted(properties, context):
blip = context.GetBlipById(properties['blipId'])
blip.GetDocument().AppendText("xxx")
"""feature 3"""
def OnBlipDeleted(properties, context):
blip = context.GetBlipById(properties['blipId'])
contents = blip.GetDocument().GetText()
root_wavelet = context.GetRootWavelet()
root_wavelet.CreateBlip().GetDocument().SetText(contents)
if __name__ == '__main__':
myRobot = robot.Robot('appName',
image_url='http://appName.appspot.com/icon.png',
version='1',
profile_url='http://appName.appspot.com/')
myRobot.RegisterHandler(events.WAVELET_PARTICIPANTS_CHANGED, OnParticipantsChanged)
myRobot.RegisterHandler(events.WAVELET_SELF_ADDED, OnRobotAdded)
"""myRobot.RegisterHandler(events.BLIP_SUMBITTED, OnBlipSubmitted)
myRobot.RegisterHandler(events.BLIP_DELETED, OnBlipDeleted)"""
myRobot.Run()
Я просто заметил, что, похоже, для разных режимов работы в режиме "песочница" в обычном режиме. В нормальном режиме я вижу оба "Я жив! V2" и "Привет всем! V2", но в режиме песочницы я вижу только 1-й. Странно... ни в одном случае я не вижу прилагаемый текст.
Причина, по которой я прокомментировал эту часть "" myRobot.RegisterHandler(events.BLIP_SUMBITTED, OnBlipSubmitted) myRobot.RegisterHandler(events.BLIP_DELETED, OnBlipDeleted) "" ", потому что, не комментируя это, робот ничего не делает!
events.BLIP_SUMBITTED
должен быть events.BLIP_SUBMITTED