如何使用AnyEvent :: XMPP在聊天室中获取用户jabber ID?

时间:2012-07-30 13:19:24

标签: perl xmpp anyevent

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

1 个答案:

答案 0 :(得分: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

相关问题