2012-07-30 76 views

回答

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

+2

事实上,在我问这里之前,我读了你的模块代码:)无论如何,我发现我必须授予我的机器人帐号管理员权限才能看到真正的JID,现在我可以通过使用此代码来获得它。谢谢您的帮助! – 2012-07-31 03:14:15

+0

嗯,OpenFire(它是6年前的前辈)必须允许'real_jid'在默认情况下适用于所有账户。这就是我实际测试过的代码。 – zostay 2012-07-31 13:35:58