2014-12-10 3 views
8

В качестве пассажира/члена, я должен знать все «элементы», в комнате с ejabberd-14.xОткрывают члены MUC комнаты пассажиров

я последовал за http://xmpp.org/extensions/xep-0045.html#getmemberlist

Я получил запрещен (401) для следующих Stanze - Администратор привилегии требуется

<iq from='[email protected]/desktop' 
    id='member3' 
    to='[email protected]' 
    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 действительно говорит:

Примечание: Служба также возвращает список пользователей к любому пассажиру в для членов только номер; то есть НЕ ДОЛЖНО генерировать ошибку , когда член в комнате запрашивает список участников. Эта функциональность может помочь клиентам отображать все существующие элементы, даже если некоторые из них не находятся в комнате, например. чтобы помочь члену определить, нужно ли приглашать другого пользователя . Служба ДОЛЖНА также разрешать любому члену извлекать список участников, даже если он еще не является оккупантом.

ответ

0

Вы должны быть не менее чем за себя, для того чтобы получить доступ к аффилированному списку. Неважно, действительно ли вы в настоящее время являетесь оккупантом (т. Е. В комнате).

Обратите внимание, что принадлежность (например, «член») является постоянной установкой, которая должна быть явно указана для людей, которые по умолчанию «нет» в противном случае. В нормальном неограниченном номере 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='[email protected]/desktop' 
    id='member3' 
    to='[email protected]' 
    type='get'> 
    <query xmlns='http://jabber.org/protocol/muc#admin'> 
    <item affiliation='member'/> 
    </query> 
</iq> 
<iq from='[email protected]' 
    to='[email protected]/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='[email protected]/desktop' 
    type='set' 
    to='[email protected]' 
    id='member4'> 
    <query xmlns='http://jabber.org/protocol/muc#admin'> 
    <item jid='[email protected]' affiliation='member'/> 
    </query> 
</iq> 

<iq to='[email protected]/desktop' 
    from='[email protected]' 
    type='result' id='member4'/> 

попробовать еще раз:

<iq from='[email protected]/desktop' 
    type='get' 
    to='[email protected]' 
    id='member5'> 
    <query xmlns='http://jabber.org/protocol/muc#admin'> 
    <item affiliation='member'/> 
    </query> 
</iq> 

<iq to='[email protected]/desktop' 
    from='[email protected]' 
    type='result' 
    id='member5'> 
    <query xmlns='http://jabber.org/protocol/muc#admin'> 
    <item jid='[email protected]' affiliation='member'/> 
    </query> 
</iq>