XMPP IQであそんでみる

さっきでかい地震宮城県北部で発生しました.被害が大きくないといいけど.
XMPPベースのbotを作ろうとおもってます.普通にメッセージをユーザとやりとりするだけだとつまらないので,IQを使ってみようと思いました.IQというのは,言ってしまえばRPC用の基本メッセージのようなもので,GET/SET/RESULT/ERRORのタイプがあります.XEP-0049: Private XML Storageを見ると簡単だったので,PsiのXML Consoleを使って試してみたら動きました.まず,データをsetすると,

<iq type="set" to="hoge@mikaka.asia" id="1003">
  <query xmlns="jabber:iq:private">
    <exodus xmlns="exodus:prefs">
      <defaultnick>Macbeth</defaultnick>
    </exodus>
  </query>
</iq>

こんなメッセージが返ってきて,

<iq from="hoge@mikaka.asia" type="result" id="1003" to="fuga@mikaka.asia/mac" />

どうやら格納できたらしいことがわかります.次にgetしてみると

<iq type="get" to="hoge@mikaka.asia" id="1004">
  <query xmlns="jabber:iq:private">
    <exodus xmlns="exodus:prefs">
    </exodus>
  </query>
</iq>

こんなメッセージが返ってくるので,

<iq from="hoge@mikaka.asia" type="result" id="1004" to="fuga@mikaka.asia/mac" >
<query xmlns="jabber:iq:private">
    
  <exodus xmlns="exodus:prefs">
      <defaultnick>Macbeth</defaultnick>
    </exodus>
</query>
</iq>

ちゃんと取得もできているようです.不思議なのはXEP-0004をサポートしてるとDisco infoででてこないことです.例えばPsiだとサーバからのDisco#infoの問合せに関して

<iq type="result" to="mikaka.asia" id="416-987" >
<query xmlns="http://jabber.org/protocol/disco#info">
<identity category="client" type="pc" name="Psi" />
<feature var="http://jabber.org/protocol/bytestreams" />
<feature var="http://jabber.org/protocol/si" />
<feature var="http://jabber.org/protocol/si/profile/file-transfer" />
<feature var="http://jabber.org/protocol/disco#info" />
<feature var="http://jabber.org/protocol/commands" />
<feature var="http://jabber.org/protocol/rosterx" />
<feature var="http://jabber.org/protocol/muc" />
<feature var="jabber:x:data" />
<feature var="http://jabber.org/protocol/chatstates" />
<feature var="http://jabber.org/protocol/mood+notify" />
<feature var="http://jabber.org/protocol/tune+notify" />
<feature var="http://jabber.org/protocol/physloc+notify" />
<feature var="http://jabber.org/protocol/geoloc+notify" />
<feature var="http://www.xmpp.org/extensions/xep-0084.html#ns-metadata+notify" />
<feature var="http://jabber.org/protocol/xhtml-im" />
</query>
</iq>

こんな返事を返すんですが,XEP-0004に該当する項目が見当たりません.この記述間違い.jabber:x:dataが該当する名前空間です.次におもしろそうなのは,http://jabber.org/protocol/commandsという名前空間で,たぶんXEP-0050: Ad-Hoc Commandsで規定されているはずだから,これを利用すると色々遊べるんじゃないかと思っています.いや,これだめなんじゃないか?他のユーザの端末に勝手に情報書き込んだり読んだりしてじゃん.XEP-0004だと禁止してるのに.えっと,バグ?