Имам случай на използване, при който като администраторски потребител в ejabberd трябва да мога да редактирам списъци за всички други потребители. Използвам smack библиотека, за да се свържа със сървъра ejabberd чрез TCP връзка.
Четейки документацията на ejabberd 14.07, ето какво пише под mod_roster:
мениджъри Списък на отдалечени обекти, които могат да управляват потребителски списъци с помощта на Remote Roster Management (XEP-0321). Внедрените раздели на протокола са: 4.2. Отдалеченият обект изисква списък на текущия потребител. 4.3. Потребителят актуализира списъка. 4.4. Отдалеченият обект актуализира списъка на потребителя. Кабинетът на отдалечен обект получава или променя само елементи от списък, които имат същия домейн като обекта. Стойността по подразбиране е: []. Тази примерна конфигурация позволява Roster Versioning със съхранение на текущия идентификатор. ICQ и MSN транспортите могат да получават ICQ и MSN контакти, да ги добавят или премахват за всеки локален акаунт:
Направих промените в конфигурацията в ejabberd и изпратих следните пакети:
<iq id='PCe38-23' to='%[email protected]/Smack' type='set'>
<query xmlns='jabber:iq:roster'>
<item jid='%[email protected]/Smack'
name='Siddharth Banerjee'
subscription='both'>
</item>
</query>
</iq>
<iq id='PCe38-24' to='%[email protected]/Smack' type='set'>
<query xmlns='jabber:iq:roster'>
<item jid='%[email protected]/Smack'
name='deco'
subscription='both'>
</item>
</query>
</iq>
Но получавам следното:
<iq from='%[email protected]/Smack' to='[email protected]/75250b26-a52a-4e1d-a5fb-4b263cd2f451' type='error' id='PCe38-23'>
<query xmlns='jabber:iq:roster'>
<item jid='%[email protected]/Smack' name='Siddharth Banerjee' subscription='both'>
</item>
</query>
<error code='503' type='cancel'><service-unavailable xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq>
Как да променя списъка на друг потребител с помощта на smack?
Моля за съвет.