2009-10-18 7 views
1

J'essaie de créer un robot d'onde, et j'ai le travail de base. J'essaye de créer un nouveau blip avec du texte d'aide quand quelqu'un tape @help mais pour une raison quelconque il ne le crée pas. Je reçois aucune erreur dans la console de journal, et je vois l'info log « dans @log »google wave OnBlipSubmitted

def OnBlipSubmitted(properties, context): 
    # Get the blip that was just submitted. 
    blip = context.GetBlipById(properties['blipId']) 
    text = blip.GetDocument().GetText() 
    if text.startswith('@help') == True: 
    logging.info('in @help') 
    blip.CreateChild().GetDocument().SetText('help text') 
+0

J'ai essayé d'utiliser AppendText, mais rien ne s'est produit. Quand je regarde les journaux, il me montre la carte de sortie. Là, il apparaît comme "propriété": "quelque chose". Devrait-il y avoir du texte? Il peut-être créer un blip vierge et c'est pourquoi il ne se présente pas – user140736

+0

Hmm ... pas sûr. Je vais essayer plus tard et vider la sortie JSON en utilisant l'API C#. –

+0

consultez ce bogue ouvert: http://code.google.com/p/google-wave-resources/issues/detail?id=158 – Epaga

Répondre

0

Pour une raison quelconque, il a juste commencé à fonctionner. Je pense que la vague google est inégale.

0

Avez-vous essayé d'utiliser Append() au lieu de SetText()? C'est ce que je ferais dans mon API C# - je n'ai pas utilisé l'API Python, mais j'imagine que c'est similaire. Voici un exemple de mon robot de démonstration:

protected override void OnBlipSubmitted(IEvent e) 
{ 
    if (e.Blip.Document.Text.Contains("robot")) 
    { 
     IBlip blip = e.Blip.CreateChild(); 
     ITextView textView = blip.Document; 
     textView.Append("Are you talking to me?"); 
    } 
} 

Cela fonctionne très bien.

EDIT: Voici le JSON résultant du code ci-dessus:

{ 
    "javaClass": "com.google.wave.api.impl.OperationMessageBundle", 
    "version": "173784133", 
    "operations": { 
    "javaClass": "java.util.ArrayList", 
    "list": [ 
     { 
     "javaClass": "com.google.wave.api.impl.OperationImpl", 
     "type": "BLIP_CREATE_CHILD", 
     "waveId": "googlewave.com!w+PHAstGbKC", 
     "waveletId": "googlewave.com!conv+root", 
     "blipId": "b+Iw_Xw7FCC", 
     "index": -1, 
     "property": { 
      "javaClass": "com.google.wave.api.impl.BlipData", 
      "annotations": { 
      "javaClass": "java.util.ArrayList", 
      "list": [] 
      }, 
      "lastModifiedTime": -1, 
      "contributors": { 
      "javaClass": "java.util.ArrayList", 
      "list": [] 
      }, 
      "waveId": "googlewave.com!w+PHAstGbKC", 
      "waveletId": "googlewave.com!conv+root", 
      "version": -1, 
      "parentBlipId": null, 
      "creator": null, 
      "content": "\nAre you talking to me?", 
      "blipId": "410621dc-d7a1-4be5-876c-0a9d313858bb", 
      "elements": { 
      "map": {}, 
      "javaClass": "java.util.HashMap" 
      }, 
      "childBlipIds": { 
      "javaClass": "java.util.ArrayList", 
      "list": [] 
      } 
     } 
     }, 
     { 
     "javaClass": "com.google.wave.api.impl.OperationImpl", 
     "type": "DOCUMENT_APPEND", 
     "waveId": "googlewave.com!w+PHAstGbKC", 
     "waveletId": "googlewave.com!conv+root", 
     "blipId": "410621dc-d7a1-4be5-876c-0a9d313858bb", 
     "index": 0, 
     "property": "Are you talking to me?" 
     } 
    ] 
    } 
} 

Comment cela se compare avec le JSON qui sort de votre robot?

1

si juste commencé à travailler, j'ai deux suggestions ...

-> Avez-vous été mise à jour à la version robot dans le constructeur? Vous devez modifier les valeurs lorsque vous mettez à jour les modifications afin que les caches puissent être mis à jour.

if __name__ == '__main__':           
    myRobot = robot.Robot('waverobotdev', 
          image_url = baseurl + 'assets/wave_robot_icon.png', 
          version = '61', # <-------------HERE 
          profile_url = baseurl) 

-> La connexion serveur entre Wave et AppSpot a récemment été extrêmement variable. Parfois, le serveur AppSpot prend plus de 10 minutes pour recevoir mon événement, parfois quelques secondes. Vérifiez que vous recevez les événements attendus.

Éditer: Le code que vous avez fourni semble bon, donc je ne m'attendrais pas à ce que vous fassiez quelque chose de mal à cet égard.

+0

Il existe un bogue actuellement ouvert qui cause des problèmes d'écriture de texte aux robots (sauf pour utiliser l'appendicite) http://code.google.com/p/google-wave-resources/issues/detail?id=158 – Epaga

Questions connexes