гугл волна

Я пытаюсь создать волнового робота, и у меня все работает. Я пытаюсь создать новую подсказку с текстом справки, когда кто-то набирает @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')

person user140736    schedule 18.10.2009    source источник
comment
Я пытался использовать AppendText, но ничего не произошло. Когда я смотрю на журналы, он показывает мне выходную карту. Там это проявляется как свойство: что-то. Должен ли быть текст? Возможно, это создает пустую вспышку, и поэтому она не отображается.   -  person user140736    schedule 18.10.2009
comment
Хм... не уверен. Я попробую позже и выгружу выходной JSON с помощью C# API.   -  person Jon Skeet    schedule 18.10.2009
comment
проверьте эту открытую ошибку: code.google.com/ p/google-wave-resources/issues/detail?id=158   -  person Epaga    schedule 23.11.2009


Ответы (3)


если это только начало работать, у меня есть два предложения...

--> Обновляли ли вы версию робота в конструкторе? Вы должны изменять значения при обновлении изменений, чтобы кэши могли обновляться.

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 минут, чтобы получить мое событие, а иногда – несколько секунд. Убедитесь, что вы получаете ожидаемые события.

Изменить: предоставленный вами код выглядит хорошо, поэтому я не ожидаю, что вы сделаете что-то неправильно в этом отношении.

person Willi Ballenthin    schedule 19.10.2009
comment
В настоящее время существует открытая ошибка, из-за которой у роботов возникают проблемы с записью текста (за исключением использования appendtext) code.google.com/p/google-wave-resources/issues/detail?id=158 - person Epaga; 23.11.2009

Вы пробовали использовать Append() вместо SetText()? Это то, что я сделал бы в своем API C# — я не использовал API Python, но я думаю, что он похож. Вот пример моего демонстрационного робота:

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, который исходит от вашего робота?

person Jon Skeet    schedule 18.10.2009

Почему-то он только начал работать. Я думаю, что волна Google пятнистая.

person user140736    schedule 18.10.2009