【问题标题】:Get members nickname of MUC Room获取MUC Room的会员昵称
【发布时间】:2013-06-13 07:28:13
【问题描述】:

有没有办法通过 ejabberd 服务器获取 MUC Room 的所有昵称?

我正在尝试:

<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>

但我只获得没有昵称的jid:

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

【问题讨论】:

  • 我有一个“仅限会员”的房间。当会员离线时,我也会发现昵称。

标签: xmpp ejabberd multiuserchat


【解决方案1】:

在您发送时从XEP 0045 开启6.5 Querying for Room Items

<iq from='$user-name@$user-server/$user-resorce'
    id='someid'
    to='$chat-room-to-query@$chatserver'
    type='get'>
  <query xmlns='http://jabber.org/protocol/disco#items'/>
</iq> 

你有以下描述

如果该信息公开,则实现可能返回现有居住者的列表,或者如果此信息保密,则根本不返回列表。(强调我的)

如果房间是公开的,你会得到

<iq from='$chat-room-to-query@$chatserver'
    id='someid'
    to='$user-name@$user-server/$user-resorce'
    type='result'>
  <query xmlns='http://jabber.org/protocol/disco#items'>
    <item jid='$chat-room-to-query@$chatserver/$firstnick'/>
    <item jid='$chat-room-to-query@$chatserver/$secondnick'/>
    <...>
  </query>
</iq>

据我所知,ejabberd 正确地实现了这一点。

【讨论】:

  • 谢谢,但我的问题是是否有办法获取成员昵称而不是居住者昵称。我有一个“仅限会员”的房间,它的会员可以离线。
  • 嘿,你找到解决办法了吗?
猜你喜欢
  • 2016-05-23
  • 1970-01-01
  • 2016-04-01
  • 2017-04-01
  • 1970-01-01
  • 2017-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多