如何获取多用户聊天昵称的 Jabber ID

Posted

技术标签:

【中文标题】如何获取多用户聊天昵称的 Jabber ID【英文标题】:How to get the Jabber ID for a Multi User Chat nick 【发布时间】:2010-03-21 12:18:31 【问题描述】:

我正在尝试在多用户聊天中获取昵称的 Jabber ID,但以下代码仅返回 null:

class JabberMUCMessageListenerAdapter implements PacketListener 

    private final MultiUserChat muc;

    public JabberMUCMessageListenerAdapter(MultiUserChat muc) 
         this.muc = muc;
    

    @Override
    public void processPacket(Packet p) 
        if (p instanceof Message) 

            final Message msg = (Message) p;

            String jid = muc.getOccupant(msg.getFrom()).getJid(); // returns null

            ...
        
    

有谁知道,我做错了什么?

【问题讨论】:

您想获得 real JabberID 还是“本地”(例如 room@muc.example.com/nick)? 我认为这是“真实”ID(什么是“本地”ID)?实际上,我发现自己做错了什么:会议室的配置是这样的,只有主持人才能看到真实的 ID。不知道这是否是“匿名”会议室的代名词。 【参考方案1】:

http://www.igniterealtime.org/builds/smack/docs/latest/javadoc/org/jivesoftware/smackx/muc/Occupant.html

完整的 JID 和昵称是可选的。

【讨论】:

“如果此信息是从存在中提取的并且房间是半匿名或完全匿名的,那么答案将为空。”第一部分是真的,但我不认为房间是匿名的(如果是的话,我怎么找到它?)使用 Pidgin 我可以访问 JID,所以也必须有一种使用 Smack 的方法,必须不是吗?

以上是关于如何获取多用户聊天昵称的 Jabber ID的主要内容,如果未能解决你的问题,请参考以下文章

jabber 服务器返回数据

Discord.js如何使用用户ID获取用户昵称

如何了解更多 XMPP/Jabber 命令

如何通过 Jabber/xmpp 创建聊天 [关闭]

如何使用 jabber-bot 连接聊天服务器

在 iPad App 中实现多用户聊天