2

XMPP クライアントを作成します。その一部には、特定の検索用語に一致する名前を持つチャット ルームのディレクトリを照会することが含まれます。この検索語を SEARCH と呼びましょう。

次の XML (to/from が正しいもの) は、すべてのチャット ルームのリストを表示します。

<iq from='hag66@shakespeare.lit/pda' id='disco2' to='chat.shakespeare.lit' type='get'>
      <query xmlns='http://jabber.org/protocol/disco#items'/>
</iq>

結果の例:

<iq xmlns="jabber:client" type="result" id="disco2" from="chat.shakespeare.lit" to="hag66@shakespeare.lit/pda">
    <query xmlns="http://jabber.org/protocol/disco#items">
        <item jid="example@shakespeare.lit" name="Example"/>
    </query>
</iq>

ただし、特定の用語に一致するチャット ルームのみを照会する必要があります。XMPP XML 構文を見ると、次の XML クエリのいずれかが機能するはずです。

<iq type="get" from="hag66@shakespeare.lit/pda" to="chat.shakespeare.lit" id="disco2">
    <query xmlns="jabber:iq:search">
        <x xmlns="jabber:x:data" type="get">
            <field var="name">
                <value>*SEARCH*</value>
            </field>
        </x>
    </query>
</iq>

またはこれ:

<iq type="set" from="hag66@shakespeare.lit/pda" to="chat.shakespeare.lit" id="search2">
    <query xmlns="jabber:iq:search">
        <item name="*SEARCH*"/>
    </query>
</iq>

「get」を「set」に、またはその逆に切り替えてみました。また、ワイルドカードを削除して、存在することがわかっている部屋を文字通り検索してみました。

XMPP MUC サービスからの同じクエリで 1 つまたは複数の名前 (ワイルドカード) を検索するための正しい構文を知っている人はいますか?

編集: 私の XMPP サーバーは、グループ チャット サービスの次の機能をサポートしています。

<iq xmlns="jabber:client" type="result" from="chat.shakespeare.lit" to="hag66@shakespeare.lit/pda">
    <query xmlns="http://jabber.org/protocol/disco#info">
        <identity category="conference" name="Public Chatrooms" type="text"/>
        <identity category="directory" name="Public Chatroom Search" type="chatroom"/>
        <feature var="http://jabber.org/protocol/muc"/>
        <feature var="http://jabber.org/protocol/disco#info"/>
        <feature var="http://jabber.org/protocol/disco#items"/>
        <feature var="jabber:iq:search"/>
        <feature var="http://jabber.org/protocol/rsm"/>
    </query>
</iq>

何か案は?誰?自分が作成したチャット ルームのリストを取得する方法で解決できますか?

4

0 に答える 0