Chat Rooms
Engagement SDK allows you to create chat rooms . The SDK also provides certain features to manage the chat room and its member.
A guide for managing Chat Rooms
Creating a Chat Room
Users can create a chat room with an optional title, optional visibility and optional list of ChatRoomTokenGate object.
Parameters: Title(Optional) , Visibility(Optional,Default value: everyone), tokenGates(Optional,Default value: null)
Response: ChatRoomInfo Object, it contains the newly created chatroom Id and title
sdk.chat().createChatRoom(
title,
Visibility.everyone,
tokenGates,
object : LiveLikeCallback<ChatRoomInfo>() {
override fun onResponse(result: ChatRoomInfo?, error: String?) {
val response = when {
result != null -> "${result.title ?: "No Title"}(${result.id})"
else -> error
}
response?.let { it1 -> showToast(it1) }
}
})
sdk.chat().createChatRoom(
title,
Visibility.everyone,
new LiveLikeCallback<ChatRoomInfo>() {
@override
void onResponse(ChatRoomInfo result,String error){
// if result is null then error has some value to show
}
});
Update Chat Room
Users can update the chat room with title and visibility.
Parameters: Title(Optional) , Visibility(Optional)
Response: ChatRoomInfo Object, it contains the updated chatroom Id and title
sdk.chat().updateChatRoom(groupId,
title,
visibility,
object : LiveLikeCallback<ChatRoomInfo>() {
override fun onResponse(result: ChatRoomInfo?, error: String?) {
error?.let {
showToast(it)
}
}
})
sdk.chat().updateChatRoom(groupId,
title,
visibility,
new LiveLikeCallback<ChatRoomInfo>() {
@override
void onResponse(ChatRoomInfo result,String error){
// if result is null then error has some value to show
}
});
Join Chat Room
User can join the chat room by providing the chatroom Id
Parameters: chatRoom id
Response: ChatRoomMembership object which contains the membership id and user details
sdk.chat().addCurrentUserToChatRoom(id,
object : LiveLikeCallback<ChatRoomMembership>() {
override fun onResponse(result: ChatRoomMembership?, error: String?) {
result?.let {
showToast("User Added Successfully")
}
error?.let {
showToast(it)
}
}
})
sdk.chat().addCurrentUserToChatRoom(id,
new LiveLikeCallback<ChatRoomMembership>() {
@override
void onResponse(ChatRoomMembership result,String error){
// if result is null then error has some value to show
}
});
UnJoin Chat Room
User can unjoin the group by providing the chatroom Id
Parameters: chatRoom id
Response: Boolean response
sdk.chat().deleteCurrentUserFromChatRoom(id,
object : LiveLikeCallback<Boolean>() {
override fun onResponse(result: Boolean?, error: String?) {
result?.let {
showToast("Deleted ChatRoom")
}
}
})
sdk.chat().deleteCurrentUserFromChatRoom(id,
new LiveLikeCallback<boolean>() {
@override
void onResponse(boolean result,String error) {
}
});
Get List of Current User from Chat Room
User can get the list of chatrooms(currently joined)
Parameters: LiveLikePagination(enum) FIRST(default),PREVIOUS,NEXT
Response: List of ChatRoomInfo(chatRoom id ,title)
sdk.chat().getCurrentUserChatRoomList(
LiveLikePagination.FIRST,
object : LiveLikeCallback<List<ChatRoomInfo>>() {
override fun onResponse(result: List<ChatRoomInfo>?, error: String?) {
result?.let { it1 ->
chatRoomList.addAll(it1)
}
error?.let {
showToast(it)
}
}
})
sdk.chat().getCurrentUserChatRoomList(
LiveLikePagination.FIRST,
new LiveLikeCallback<List<ChatRoomInfo>>() {
@override
void onResponse(List<ChatRoomInfo> result,String error) {
}
});
Get List Of Members(Users) of Chat Room
User can view the members of the ChatRoom
Parameter: chatRoom Id and LiveLikePagination(enum) FIRST(default),PREVIOUS,NEXT
Response: List of User(LiveLikeUser)
sdk.chat().getMembersOfChatRoom(id,
LiveLikePagination.FIRST,
object : LiveLikeCallback<List<LiveLikeUser>>() {
override fun onResponse(result: List<LiveLikeUser>?, error: String?) {
result?.let { list ->
if (list.isNotEmpty()) {
AlertDialog.Builder(this@ChatOnlyActivity).apply {
setTitle("Room Members")
setItems(list.map { it.nickname }
.toTypedArray()) { _, which ->
// On change of theme we need to create the session in order to pass new attribute of theme to widgets and chat
}
create()
}.show()
}
}
}
})
//from SDK 2.81 onwards, supports filter of multiple profile ids
sdk.chat().getChatRoomMemberships(
ChatRoomRequestOptions(
chatRoomId = id,
profileIds = listOf(
"d40aca8a-d11d-4a1f-a036-b1dc0e6454e9",
"143571b2-5a30-4ba8-b956-6b5b73f85e69"
),
liveLikePagination = LiveLikePagination.FIRST
)
) { result, error ->
result?.let {
//get list of livelike profile
}
}
sdk.chat().getMembersOfChatRoom(id,
LiveLikePagination.FIRST,
new LiveLikeCallback<List<LiveLikeUser>>() {
@override
void onResponse(List<LiveLikeUser> result,String error) {
}
}
}
});
Chat Room User Mute
Using our producer suite website, a producer has the ability to mute a user. Muting a user disables their ability to send messages to the room they were muted in.
As an integrator you have the option to query our backend to find out whether a user is muted or not inside a chat room .
sdk.chat().getProfileMutedStatus(<chatroom id>,
object : LiveLikeCallback<ChatUserMuteStatus>() {
override fun onResponse(result: ChatUserMuteStatus?, error: String?) {
}
})
Listening to ChatRoom Update
Whether you decide to make the user aware of their status or not, the SDK will show an alert to a muted user once they try to send a message in a room. For more information about chat moderation please see the Chat Moderation page.
To subscribe to listen to updates/changes to the chatRoom, you can use the method setChatRoomListener, the interface ChatRoomListener contains the method onChatRoomUpdate
val chatRoomListener = object : ChatRoomListener {
override fun onChatRoomUpdate(chatRoom: ChatRoomInfo) {
// method will auto call when new changes cames from Produceer Side
}
}
chatsession.setChatRoomListener(chatRoomListener)
Add User to ChatRoom
In Order to add a user to chatRoom by the member of the chatRoom.
sdk.chat().addUserToChatRoom(chatRoomId,
userId,
object : LiveLikeCallback<ChatRoomMembership>() {
override fun onResponse(result: ChatRoomMembership?, error: String?) {
result?.let {
showToast("User Added Successfully")
}
error?.let {
showToast(it)
}
}
})
Get Profile ChatRoom Membership
In order to fetch chat room membership for a single profile, or to get the list of profiles sharing the common chat room membership
sdk.chat().getProfileChatRoomMemberships(
ProfileChatRoomMembershipRequestOption(
profileIds = listOf(
"d40aca8a-d11d-4a1f-a036-b1dc0e6454e9",
"143571b2-5a30-4ba8-b956-6b5b73f85e69"
), liveLikePagination = LiveLikePagination.FIRST
)
) { result, error ->
result?.let {
// list of chat room membership
}
}
Updated 2 months ago