2012-07-30 77 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