【发布时间】:2015-01-07 17:12:40
【问题描述】:
我有一个用例,作为 ejabberd 中的管理员用户,我应该能够为所有其他用户编辑花名册。我正在使用 smack 库通过 TCP 连接连接到 ejabberd 服务器。
在这里阅读 ejabberd 14.07 的文档是它在 mod_roster 下所说的:
经理 可以使用远程名册管理 (XEP-0321) 管理用户名册的远程实体列表。实施的协议部分是: 4.2。远程实体请求当前用户的名册。 4.3.用户更新名册。 4.4.远程实体更新用户的名册。远程实体 cab 仅获取或修改与实体具有相同域的名册项目。默认值为:[]。 此示例配置启用具有当前 ID 存储的名册版本控制。 ICQ 和 MSN 传输可以为任何本地帐户获取 ICQ 和 MSN 联系人、添加或删除它们:
我在 ejabberd 中进行了配置更改并发送了以下数据包:
<iq id='PCe38-23' to='%2B918130143322@XXX.XXX.XXX/Smack' type='set'>
<query xmlns='jabber:iq:roster'>
<item jid='%2B918130143331@XXX.XXX.XXX/Smack'
name='Siddharth Banerjee'
subscription='both'>
</item>
</query>
</iq>
<iq id='PCe38-24' to='%2B918130143331@XXX.XXX.XXX/Smack' type='set'>
<query xmlns='jabber:iq:roster'>
<item jid='%2B918130143322@XXX.XXX.XXX/Smack'
name='deco'
subscription='both'>
</item>
</query>
</iq>
但我得到以下信息:
<iq from='%2B918130143322@XXX.XXX.XXX/Smack' to='admin1@XXX.XXX.XXX/75250b26-a52a-4e1d-a5fb-4b263cd2f451' type='error' id='PCe38-23'>
<query xmlns='jabber:iq:roster'>
<item jid='%2B918130143331@XXX.XXX.XXX/Smack' name='Siddharth Banerjee' subscription='both'>
</item>
</query>
<error code='503' type='cancel'><service-unavailable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq>
如何使用 smack 修改其他用户的名册?
请指教。
【问题讨论】: