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