Google Wave risposta del robot in linea
-
21-09-2019 - |
Domanda
Ho lavorato sul mio primo robot per Google Wave di recente, una parte vitale di ciò che fa è quello di inserire in linea le risposte in un blip. Non posso per la vita di me a capire come fare questo!
La documentazione API hanno una funzione InsertInlineBlip che sembrava promettente, ma chiamando che non sembra di fare nulla!
EDIT :: Sembra che questo è un bug noto. Tuttavia, la questione si trova ancora qual è il modo corretto di inserire un blip in linea? Sto assumendo qualcosa di simile:
inline = blip.GetDocument().InsertInlineBlip(positionInText)
inline.GetDocument().SetText("some text")
Soluzione
Se si guarda al codice sorgente per OpBasedDocument.InsertInlineBlip()
si vedrà il seguente:
412 - def InsertInlineBlip(self, position):
413 """Inserts an inline blip into this blip at a specific position.
414
415 Args:
416 position: Position to insert the blip at.
417
418 Returns:
419 The JSON data of the blip that was created.
420 """
421 blip_data = self.__context.builder.DocumentInlineBlipInsert(
422 self._blip.waveId,
423 self._blip.waveletId,
424 self._blip.blipId,
425 position)
426 # TODO(davidbyttow): Add local blip element.
427 return self.__context.AddBlip(blip_data)
Credo che il commento TODO suggerisce questa funzionalità non è ancora attiva. Il metodo dovrebbe essere callable e restituire correttamente, però ho il sospetto che l'operazione documento non viene applicata al documento globale.
La sintassi hai incluso nel tuo post sembra corretto. Come potete vedere sopra, InsertInlineBlip()
restituisce il valore di AddBlip()
, che è ... dun, dun, dun ... un blip.
543 - def AddBlip(self, blip_data):
544 """Adds a transient blip based on the data supplied.
545
546 Args:
547 blip_data: JSON data describing this blip.
548
549 Returns:
550 An OpBasedBlip that may have operations applied to it.
551 """
552 blip = OpBasedBlip(blip_data, self)
553 self.blips[blip.GetId()] = blip
554 return blip
EDIT:
E 'interessante notare che la firma del metodo del metodo InsertInlineBlip(self, position)
Insert è significativamente diverso dal metodo InsertElement(self, position, element)
Inserisci. InsertInlineBlip()
non prende un parametro elemento da inserire. Sembra che la logica corrente InsertInlineBlip()
è più simile Blip.CreateChild()
, che restituisce una nuova blip bambino con cui lavorare. Da ciò si può sospettare che questa API cambierà come si aggiunge la funzionalità.
Altri suggerimenti
Questo sembra essere stato in precedenza un bug, tuttavia, un aggiornamento oggi è si spera risolto: http://code.google.com/p/google-wave- risorse / wiki / WaveAPIsChangeLog