Waveロボット内でガジェットをURLパターンから取得する

Waveロボットの中でガジェットを取得するには普通は次のようにするわけですが

def OnBlipSubmitted(props, context):
  blip = context.GetBlipById(props['blipId'])
  gadget = blip.GetGadgetByUrl('http://example.com/your_gadget.xml')

残念なことに Blip#GetGadgetByUrl にはガジェット貼付け時に使ったURLそのまま渡してやる必要があります。つまりガジェットを動的に生成していてURLがhttp://example.com/dynamic_gadget.xml?key1=val1&key2=val2 だったりすると、そのガジェットを取り出すにはガジェットのパラメータ key1=val1&key2=val2 を先に知ってないといけないという、ニワトリとタマゴ状態になるわけです。
さすがに不便だったので適当な関数作りました。

def GetGadgetByBaseUrl(blip, url):
  for el in blip.elements.values():
    if (el.type == ELEMENT_TYPE.GADGET
         and getattr(el, 'url', None).startswith(url)):
      return el
  return None

これをロボットのソースファイルの最初に貼りつけておけば、GetGadgetByBaseUrl にURLの一部分を渡してやるだけでガジェットを取ってこれます。先の例で言えば GetGadgetByBaseUlr(blip, 'http://example.com/dynamic_gadget.xml')http://example.com/dynamic_gadget.xml?key1=val1&key2=val2 が取得可能です。
WaveのロボットAPIは9月からほとんど変わっていないんですが、そろそろバージョンアップしないんですかね。