I am writing chat application using XMPP protocol and I use smack library for it.
I want to list all the rosterEntry groups and their subgroups.
the following code return only the main group.
rosterEntry.getGroups();
for e.g : if I use Facebook account it returns: "Facebook Friends" as name of the group, not close friend, family, ...
There is no such thing as XMPP Roster subgroups. This appears to be a Facebook specific concept.
Related
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.
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.
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.
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.
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.