2

有一种方法可以根据文档在聊天室中获取用户的昵称(roomName@domain.com/nick),但是如何获取用户的真实jid(name@domain.com/resource_name)?是否可以根据 XMPP 协议?

4

1 回答 1

2

你可以,除非房间是匿名的。Jabber 协议使聊天室中的人可能是匿名的成为可能,因此您无法返回他们真实的 JID。这也是它在房间内提供私人消息聊天的原因,因此您仍然可以向这样做的人发送私人消息。

我在Bot::Backbone::Service::JabberChat中有一些代码:

# Figure out who sent this message
my $from_user = $room->get_user($xmpp_message->from_nick);

# Prefer the real JID as the username
my $from_username = $from_user->real_jid // $from_user->in_room_jid;
my $from_nickname = $from_user->nick;

有关详细信息,请参阅AnyEvent::XMPP::Ext::MUC::UserAnyEvent::XMPP::Ext::MUC::Room

于 2012-07-30T18:15:03.210 回答