allow members to search for chat rooms they belong in XMPP with Smack API - xmpp

I'm creating a chatroom website were each user can create a room and add his friends to that room and then start chatting!:D I'm using XMPP as the tool for this site with ejabberd server and smack API as client for room configuration! as you've already understood rooms are member only but I'm looking for a way to let each user see all rooms that she is a member of!
is it possible with xmpp protocol(to get all rooms that I'm member of)?how?
Does making the rooms public solve the problem? BTW how can I do it with smack API?
or better say, how can I choose to set a room public or hidden
thanks in advance

No, it is not possible in XMPP. This has been asked before, see: Is there a way to determine which Mulit User Conferences (MUC) a user has joined?
You could however keep track of these rooms yourself in a separate data store each time an user would enter (and/or leave) the room, but this is outside the scope of XMPP as mentioned earlier.

Related

Is there any way to add custom command processor to xmpp char rooms for voting?

I'm very new to xmpp and jabber services.
I try to add voting ability to jabber chat rooms. What is the best way to do it?
I know, there are some bots written for jabber.
I have openfire server. I think, bot can be added to every chat room, created on server, but what is the way to store voting results, for example.
Case:
Chat room is created
Users are added
Bot is added to room
Bot reads messages and when it gets
/voting firtree:'FirTree decoration' 1:'red balls' 2:'green balls'
Voting is created
User sends
'/vote firtree:1'
and his vote goes to 1st variant of firtree voting.

What is the difference between a Roster Group and Multi-User Chat Rooms in Smack (XMPP library)?

I'am new to XMPP protocol and I'am working on a chat application in android using smack library. I'am stuck in creating group chat. I want to create a group, add members to it and send message to all members of a group (like whatsApp group). When searching about group chat i got two things
Group
: creating group using createGroup(String name) method present in Roster class.
Multi User chat : creating a Multi-user chat using MultiUserChatManager .
I'am getting confused regarding what is Group and what is Multi-User chat? Can anyone explain the basic difference between them and which one should i use and also how to send message to everyone in group ?
Roster Group
created using createGroup(String name) method present in Roster class
It's merely a group for your contacts, mostly for visual purposes in an IM client. It's like creating groups in phone contacts.
Multi-User Chat Rooms
created using MultiUserChatManager
MultiUserChat is used for creating chat rooms and adding various users as member of chat room. This should be used for group(Chat room with some members) messaging. This has nothing to do with Roster Group.

Facebook Chat limitations

My company develop a product for customer support on Facebook and we want to give the representatives a way to contact the customer via Facebook Chat.
I have read the Chat API documentations and it is not clear whether users MUST be friends on Facebook in order to chat or is it just enough they both installed a Facebook app? more limitations?
any insight will be appreciated.
Thanks in advance for you answers,
Yaniv Hakim
Facebook provides an XMPP port to the outside world while internally it implements MQTT. As per XMPP specs, messaging works between two entities without they being in each other roster list (friend/contact list). However, Facebook seems to have this limitation as part of their own business requirement. I think even GoogleTalk disallows this if two federated entities try to send message to each other without being on the roster list.
In short, yes you can just send the message. You don't need a presence authorization from someone in order to send messages to them (in XMPP world). HOWEVER, some services has a policy of requiring this, despite the fact that this is not mandated by the XMPP specifications.

How to configure XMPP to allow all logged in user to see each other and chat with each other?

I am new to XMPP.
I am using Openfire server, and created a console client using Smack library.
My usecase:
All users anonymous, logged in (In future, website visitors) will be able to see other anonymous, logged-in users. And they can initiate a private chat (one-to-one) with any of them.
So, I am able to logged in as Anonymous user, but I am not able to see other Anon / Logged in users (using Roster), because they are not in anon user's roster.
So, What should be configuration OR custom=component/code to to achieve this usecase?
Do I need to create server component? Any hint? OR
It can be done using proper configuration?
Cheers
You should create Multi chat room MUC, and join users after login to this room.After user joins muc room they can get paricipiants list.

How can anonymous users exchange presence information with valid users on Jabber (Ejabberd)

I am working on a social network that should allow members to chat with visitors on the site. The concept is simple.
Users who have registered signup get their own account with rosters
When a visitor comes to the home page of the social network, he can see some of the online members of the community
Now he should be able to initiate a chat with them, by clicking on their name.
I have already got members to chat with their roster mates. My question is, how can I get an anonymous user to chat with a member and exchange presence info with him?
I have successfully managed to create anonymous accounts, members accounts and even send messages from an anonymous user to other members. But I cant get presence information from anonymous-user to member or vice versa?
BTW, the chat is JS based.
You're trying to break the XMPP model. Presence is an opt-in permission based system. You ask me if you can see my presence, I say yes. Generally my client will then automatically ask you if I can see your presence, and your client says yes. That's what the roster is -- yes's and no's to presence subscription requests.
You can make chat rooms (MUC, multi user chat) that are anonymous, as well as do presence in them. It's not a roster, though. It's the closest to what you're describing without going into crazy-land with pubsub, and I don't know if you could even bend that tool far enough to have anonymous roster entries.