2

ドキュメントによると、チャットルームでユーザーのニックネーム (roomName@domain.com/nick) を取得する方法がありますが、ユーザーの実際の jid (name@domain.com/resource_name) を取得するにはどうすればよいですか? XMPPプロトコルに従って可能ですか?

4

1 に答える 1

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::UserおよびAnyEvent::XMPP::Ext::MUC::Roomを参照してください。

于 2012-07-30T18:15:03.210 に答える