【问题标题】:How to get all fields from ejabberd from MUC module?如何从 MUC 模块的 ejabberd 中获取所有字段?
【发布时间】:2015-10-23 22:25:53
【问题描述】:

我们希望从此链接 (http://xmpp.org/extensions/xep-0045.html#roomconfig) 获取此部分的所有字段

示例 165. 服务向所有者发送配置表单

在规范中它显示了所有字段,但我们没有从 ejabberd 中获取所有字段,例如:

<field label='Roles and Affiliations that May Retrieve Member List' type='list-multi' var='muc#roomconfig_getmemberlist'>

我们想获取muc#roomconfig_getmemberlist,但它不是从 ejabberd 获取的。

我们需要改变什么配置来获取上面链接的所有字段?

【问题讨论】:

    标签: ejabberd multiuserchat


    【解决方案1】:

    ejabberd 返回它支持的所有字段。目前 ejabberd 不支持更改允许检索成员列表的用户的隶属关系。假设 MUC 管理员、房间所有者和成员可以检索成员列表。

    也就是说,即使您在配置表单中没有该字段,ejabberd 也支持管理成员列表。 您可以从具有适当凭据的用户那里检索成员列表,发送以下查询:

    <iq type="get" to="room@conference.example.net" id="aac1a">
     <query xmlns="http://jabber.org/protocol/muc#admin">
      <item affiliation="member"/>
     </query>
    </iq>
    

    您将收到以下表格的回复:

    <iq from="room@conference.example.net" type="result" id="aae0a">
     <query xmlns="http://jabber.org/protocol/muc#admin">
      <item affiliation="member" jid="newmember@example.net"/>
     </query>
    </iq>
    

    【讨论】:

    • 我在以成员而非所有者或管理员的身份获取成员列表时遇到问题。我们使用与您在上面解释的相同的代码。当我尝试检索仅限成员的聊天室的成员列表时收到“禁止”错误,即使我是聊天室的成员。
    • 您应该创建另一个特定问题。我刚刚尝试在 ejabberd 15.07 上发送我显示的成员查询数据包(不是所有者也不是管理员),它按描述工作。你确定MUC房间是持久的吗?当然如果不是持久化的,成员列表会在最后一个用户离开时清空,因为房间在最后一个用户离开时被销毁。
    • 我并不是说您的问题将通过升级来解决。只是说它在我的测试中有效,所以你可能有另一个与你原来的问题完全无关的问题。也就是说,ejabberd 的下载页面包括二进制安装程序和软件包:process-one.net/en/ejabberd/downloads
    • 好吧,至少出于安全原因,您不应该使用三年前的版本。反正你可以自己打补丁,这里是实现的地方:github.com/processone/ejabberd/blob/master/src/…
    猜你喜欢
    • 2016-02-21
    • 2012-12-16
    • 2017-03-30
    • 1970-01-01
    • 2017-01-11
    • 2017-01-18
    • 1970-01-01
    • 2016-05-18
    • 2016-12-09
    相关资源
    最近更新 更多