2
有一種方法可以根據文檔在聊天室中獲取用戶的nick([email protected]/nick),但是如何獲取用戶的真實jid([email protected]/resource_name)?根據XMPP協議有可能嗎?如何使用AnyEvent :: XMPP在聊天室中獲取用戶jabber ID?
有一種方法可以根據文檔在聊天室中獲取用戶的nick([email protected]/nick),但是如何獲取用戶的真實jid([email protected]/resource_name)?根據XMPP協議有可能嗎?如何使用AnyEvent :: XMPP在聊天室中獲取用戶jabber ID?
你可以,除非房間是匿名的。 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::User和AnyEvent::XMPP::Ext::MUC::Room。
事實上,在我問這裏之前,我讀了你的模塊代碼:)無論如何,我發現我必須授予我的機器人帳號管理員權限才能看到真正的JID,現在我可以通過使用此代碼來獲得它。謝謝您的幫助! – 2012-07-31 03:14:15
嗯,OpenFire(它是6年前的前輩)必須允許'real_jid'在默認情況下適用於所有賬戶。這就是我實際測試過的代碼。 – zostay 2012-07-31 13:35:58