1

ウェーブ ロボットを作成しようとしていますが、基本的な作業は完了しています。誰かが @help と入力したときに、ヘルプ テキストを含む新しいメッセージを作成しようとしていますが、何らかの理由で作成されません。ログ コンソールにエラーは表示されず、「@log」に情報ログが表示されます

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')
4

3 に答える 3

1

それが機能し始めたばかりの場合、私は2つの提案があります...

->コンストラクターでロボットバージョンを更新しましたか?キャッシュを更新できるように、変更を更新するときに値を変更する必要があります。

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

-> WaveとAppSpot間のサーバー接続は、最近非常に変動しています。AppSpotサーバーがイベントを受信するのに10分以上かかる場合もあれば、数秒かかる場合もあります。期待するイベントを受信して​​いることを確認します。

編集:あなたが提供したコードは良さそうなので、その点であなたが何か悪いことをしているとは思わないでしょう。

于 2009-10-19T04:42:34.727 に答える
0

何らかの理由で、それは機能し始めました。グーグルの波はむらがあると思います。

于 2009-10-18T15:35:07.323 に答える
0

Append()の代わりに使用してみましたSetText()か? それが私の C# API で行うことです。Python API は使用したことがありませんが、似ていると思います。これが私のデモ ロボットのサンプルです。

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

それはうまくいきます。

編集: 上記のコードから得られた JSON は次のとおりです。

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

ロボットから出力される JSON と比べてどうですか?

于 2009-10-18T08:59:04.843 に答える