Xmpp smack-邀请用户以版主身份访问muc room

Xmpp smack-邀请用户以版主身份访问muc room,xmpp,ejabberd,smack,Xmpp,Ejabberd,Smack,我有这个代码,但是muc.grantModerator(user.getJid())失败了,因为用户还不在房间里 有没有建议邀请用户作为版主访问muc room MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(connection); MultiUserChat muc = manager.getMultiUserChat(roomjid); for (User user : invitedUsers) {

我有这个代码,但是
muc.grantModerator(user.getJid())
失败了,因为用户还不在房间里

有没有建议邀请用户作为版主访问muc room

MultiUserChatManager manager = MultiUserChatManager.getInstanceFor(connection);
MultiUserChat muc = manager.getMultiUserChat(roomjid);


for (User user : invitedUsers) {
    muc.invite(user.getJid(), "");
    muc.grantModerator(user.getJid());
}

版主:这是连接用户的“临时”状态。您可以尝试邀请给定的用户并授予他“管理员”角色。然后,在receiver客户端上,您可以在每次加入后检查您是否是管理员,从而授予自己版主身份。如果你喜欢这种方式,我可以用一个片段来回答。我的目标是房间里的每个人都可以检查房间里谁订阅了邮件。如果作为管理员,用户可以查看订阅列表,那么对我来说没有问题!很抱歉,我不知道ejabber提供的伪订阅。它看起来像是自动书签订阅+SMACK中逐个声明的自动侦听器(MessageListener、DefaultParticipantStatusListener、SubjectUpdateListener等…)。为了得到你需要的输出,我想你必须实现一些定制的东西,我找不到任何官方的XEP,这可能是Ejabber的一个定制功能,允许1个IQ恢复到6个“原子”IQ。这是一个迟来的答案,但我面临着同样的问题。答案是,在向用户发送邀请之前,您需要创建一个仅限成员的房间,并向用户授予成员资格。稍后,您可以使用room.getOwners()和room.getMembers()来获取所需的列表