Pergunta

Estou tentando criar um robô de onda e tenho as coisas básicas funcionando. Estou tentando criar um novo pontinho com o texto de ajuda quando alguém digita @help, mas por algum motivo isso não o cria. Não estou recebendo erros no console de log e estou vendo o log de informações '@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')
Foi útil?

Solução 3

Por alguma razão, começou a funcionar. Eu acho que a onda do Google é irregular.

Outras dicas

Se apenas começar a funcionar, tenho duas sugestões ...

-> Você tem atualizado a versão do robô no construtor? Você deve alterar os valores à medida que atualiza as alterações para que os caches possam ser atualizados.

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

-> A conexão do servidor entre Wave e AppSpot foi extremamente variável. Às vezes, são necessários mais de 10 minutos para o AppSpot Server receber meu evento, outras vezes alguns segundos. Verifique se você está recebendo os eventos que você espera.

EDIT: O código que você forneceu parece bom, então eu não esperaria que você esteja fazendo algo errado a esse respeito.

Você já tentou usar Append() ao invés de SetText()? É isso que eu faria na minha API C# - não usei a API do Python, mas imagino que seja semelhante. Aqui está uma amostra do meu robô de demonstração:

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

Isso funciona bem.

EDIT: Aqui está o JSON resultante do código acima:

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

Como isso se compara ao JSON que sai do seu robô?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top