创建 XMPP 客户端,其中一部分涉及在目录中查询名称与特定搜索词匹配的聊天室。让我们将此搜索词称为 SEARCH。
以下 XML(带有正确的收件人/收件人)为我提供了所有聊天室的列表。
<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 服务的同一查询中搜索一个或多个名称(通配符)的正确语法是什么?
编辑:我的 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>
有任何想法吗?任何人?我会满足于获取我创建的聊天室列表的方法吗?