【问题标题】:Discovering members of MUC room as occupant发现 MUC 房间的成员作为居住者
【发布时间】:2015-02-08 04:57:42
【问题描述】:

作为一个居住者/成员,我需要知道房间里所有的“成员”与 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 确实说:

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

【问题讨论】:

    标签: xmpp ejabberd xmppframework multiuserchat


    【解决方案1】:

    您至少需要自己成为会员才能访问从属关系列表。无论您当前是否是房客(即在房间内)都没有关系。

    请注意,从属关系(例如“成员”)是需要明确提供给人员的持久设置,否则默认为“无”。在一个普通的无限制房间里,this setting doesn't have any other effect than allowing you to retrieve the member list。成员列表与居住者列表无关。

    (如果您只想知道房间里当前有谁,您应该使用命名空间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>
    

    【讨论】:

      猜你喜欢
      • 2018-10-05
      • 2018-11-07
      • 2017-03-27
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      • 2021-01-04
      • 1970-01-01
      • 2015-06-23
      相关资源
      最近更新 更多