8

作为居住者/成员,我需要使用 ejabberd-14.x 了解房间中的所有“成员”

我关注了 http://xmpp.org/extensions/xep-0045.html#getmemberlist

我因以下节而被禁止(401)-需要管理员权限

<iq from='crone1@shakespeare.lit/desktop'
    id='member3'
    to='coven@chat.shakespeare.lit'
    type='get'>
  <query xmlns='http://jabber.org/protocol/muc#admin'>
    <item affiliation='member'/>
  </query>
</iq>

如果我改变

<query xmlns='http://jabber.org/protocol/muc#admin'> 

从管理员到用户命名空间,然后我得到状态代码 501 - 功能未实现

你知道我怎样才能让房间的成员成为居住者或成员吗?

在这个用例中,我不是管理员/版主。

XEP-0045 确实说:

注意:服务还应该将成员列表返回给仅限会员的房间中的任何居住者;即,当房间中的成员请求成员列表时,它不应该产生错误。此功能可以帮助客户显示所有现有成员,即使其中一些成员不在房间内,例如帮助成员确定是否应该邀请另一个用户。服务还应该允许任何成员检索成员列表,即使还不是居住者。

4

1 回答 1

1

您至少需要自己成为会员才能访问从属关系列表。您当前是否是居住者(即在房间内)并不重要。

请注意,从属关系(例如“成员”)是需要明确提供给人员的持久设置,否则默认为“无”。在普通的无限制房间中,这个设置除了允许您检索成员列表之外没有任何其他效果。成员列表与占用者列表无关。

(如果您只想知道当前房间里的人,您应该发送一个带有命名空间的查询,http://jabber.org/protocol/disco#items而不是muc#admin.)

示例(刚刚在我的 ejabberd 服务器上尝试过)。尝试使用非关联帐户查询列表:

<iq from='crone1@shakespeare.lit/desktop'
    id='member3'
    to='coven@chat.shakespeare.lit'
    type='get'>
  <query xmlns='http://jabber.org/protocol/muc#admin'>
    <item affiliation='member'/>
  </query>
</iq>
<iq from='coven@chat.shakespeare.lit'
    to='crone1@shakespeare.lit/desktop'
    type='error'
    id='member3'>
  <query xmlns='http://jabber.org/protocol/muc#admin'>
    <item affiliation='member'/>
  </query>
  <error code='403' type='auth'>
    <forbidden/>
    <text>Administrator privileges required</text>
  </error>
</iq>

使用特权(房间所有者)帐户授予该第一个帐户成员特权:

<iq from='admin@shakespeare.lit/desktop'
    type='set'
    to='coven@chat.shakespeare.lit'
    id='member4'>
  <query xmlns='http://jabber.org/protocol/muc#admin'>
    <item jid='crone1@shakespeare.lit' affiliation='member'/>
  </query>
</iq>

<iq to='admin@shakespeare.lit/desktop'
    from='coven@chat.shakespeare.lit'
    type='result' id='member4'/>

再试一次:

<iq from='crone1@shakespeare.lit/desktop' 
    type='get'
    to='coven@chat.shakespeare.lit'
    id='member5'>
  <query xmlns='http://jabber.org/protocol/muc#admin'>
    <item affiliation='member'/>
  </query>
</iq>

<iq to='crone1@shakespeare.lit/desktop'
    from='coven@chat.shakespeare.lit'
    type='result'
    id='member5'>
  <query xmlns='http://jabber.org/protocol/muc#admin'>
    <item jid='crone1@shakespeare.lit' affiliation='member'/>
  </query>
</iq>
于 2017-06-20T08:14:43.150 回答