Frage

Ich versuche, eine Welle Roboter zu schaffen, und ich habe die grundlegenden Dinge arbeiten. Ich versuche, eine neue Blip mit Hilfetext zu erstellen, wenn jemand Typen @help aber aus irgendeinem Grund es tut es schaffen. Ich erhalte keine Fehler in der Log-Konsole, und ich bin das Info log ‚in @Log‘

Sehen
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')
War es hilfreich?

Lösung 3

Aus irgendeinem Grund daran zu arbeiten begonnen. Ich denke, die Google Wave fleckige ist.

Andere Tipps

, wenn es gerade anfing zu arbeiten, ich habe zwei Vorschläge ...

-> Haben Sie die Roboter-Version im Konstruktor wurde die Aktualisierung? Sie sollen die Werte ändern, wie Sie Änderungen so aktualisieren, dass der Cache-Speicher aktualisiert werden kann.

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

-> Die Serververbindung zwischen Welle und AppSpot hat vor kurzem extrem variabel gewesen. Manchmal dauert es 10+ Minuten für den AppSpot Server meines Ereignis zu empfangen, othertimes ein paar Sekunden. Überprüfen Sie, ob die Ereignisse sind Empfangen Sie erwarten.

Edit: Der Code zur Verfügung gestellt Sie sieht gut aus, so würde ich nicht erwarten, dass Sie etwas falsch in dieser Hinsicht tun.

Haben Sie versucht, Append() anstelle von SetText()? Das ist, was ich in meinem C # API tun würde - ich habe nicht die Python-API verwendet, aber ich könnte mir vorstellen, es ist ähnlich. Hier ist ein Beispiel aus meinem Demo-Roboter:

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?");
    }
}

Das funktioniert gut.

EDIT: Hier ist die resultierende JSON aus dem obigen Code:

{
  "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?"
      }
    ]
  }
}

Wie funktioniert das mit dem JSON vergleichen, welche der Roboter kommt?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top