please select
  • UIKit
  • SDK
  • Server APIs
Chat/
SDK/
Flutter/
Conversation/
SDK
  • Install Chat SDK
    • Install
  • Initialize Chat SDK
    • Initialize
  • Login And Logout
    • Login and Logout
  • Message
    • Message Overview
    • Sending Message
    • Receiving Message
    • Historical Message
    • Forwarding Message
    • Modifying Message
    • Message Inserting
    • Deleting Message
    • Clearing Messages
    • Recalling Message
    • Online Message
    • Read Receipt
    • Querying Message
    • Group @ Message
    • Targeted Group Message
    • Notification Muting
    • Message Extension
  • Conversation
    • Conversation Overview
    • Conversation List
    • Getting Conversation
    • Conversation Unread Count
    • Pinning Conversation to the Top
    • Deleting Conversation
    • Conversation Draft
    • Conversation Group
  • Group
    • Group Overview
    • Group Management
    • Group Profile
    • Group Member Management
    • Group Member Profile
    • Custom Group Attribute
  • User
    • User Profile
    • Friend Management
    • Friend List
    • Blocklist
  • Offline Push
    • Offline Push
  • Signaling
    • Signaling Management
  • Local Search
    • Searching for Message
    • Searching for Friend
    • Searching Group
    • Searching for Group Member
  • API Reference
    • Client APIs
  • Guideline for Beginners
  • Console Guide
    • Creating and Upgrading an Application
    • Basic Configuration
    • Feature Configuration
    • Account Management
    • Group Management
    • Webhook Configuration
  • Product Introduction
    • Message Management
      • One-to-One Message
      • Message Storage
      • Offline Push
      • Group Message
      • Message Formats
    • Account System
      • Login Authentication
      • Online Status Management
    • Group Related
      • Group System
      • Group Management
    • User Profile and Relationship Chain
      • Profile Management
      • Relationship Chain Management
  • Purchase Guide
    • Billing Overview
    • Pricing
  • Error Codes

Conversation Group

Feature Description

In some cases, you may need to group conversations, for example, into a "Product experience" or "R&D" group, which can be implemented through the following API.
Note:
To use this feature, you need to purchase the Ultimate edition.
This feature is available only in SDK enhanced edition v4.0.8 or later.

Conversation Group

Creating a conversation group

Call the createConversationGroup (dart) API to create a conversation group.
Note:
Up to 20 conversation groups can be created. After this limit is exceeded, the 51010 error will be reported. Groups that are no longer used should be promptly deleted.
Attribute
Definition
Description
groupName
Conversation group name
It must be greater than 0 in length and can contain up to 32 bytes; otherwise, the 51011 error will be reported.
conversationIDList
List of conversation IDs
It cannot be empty.
Sample code:
// Create a conversation group
V2TimValueCallback<List<V2TimConversationOperationResult>>
createConversationGroupRes = await TencentImSDKPlugin.v2TIMManager
.getConversationManager()
.createConversationGroup(
groupName: "groupName",// Name of the created conversation group
conversationIDList: []);// List of conversation IDs to be added to the conversation group created
if (createConversationGroupRes.code == 0) {
// Creation configured successfully
createConversationGroupRes.data?.forEach((element) {
element.conversationID; // ID of the conversation to be added
element.resultCode; // Operation result error code of the conversation
element.resultInfo; // Operation result description of the conversation
});
}

Deleting a conversation group

Call the deleteConversationGroup (dart) API to delete a conversation group.
Note:
If the target conversation group doesn't exist, the 51009 error will be reported.
Sample code:
// Delete the conversation group
V2TimCallback deleteConversationGroupRes = await TencentImSDKPlugin
.v2TIMManager
.getConversationManager()
.deleteConversationGroup(groupName: "groupName");// Name of the conversation group to be deleted
if (deleteConversationGroupRes.code == 0) {
// Deleted successfully
}

Renaming a conversation group

Call the renameConversationGroup (dart) API to rename a conversation group.
Sample code:
// Rename a conversation group
V2TimCallback renameConversationGroupRes = await TencentImSDKPlugin
.v2TIMManager
.getConversationManager()
.renameConversationGroup(
oldName: "oldName",// Name of the conversation group to rename
newName: "newName");// New name of the conversation group
if (renameConversationGroupRes.code == 0) {
// Renamed successfully
}

Getting the list of conversation groups

Call the getConversationGroupList (dart) API to get the list of conversation groups.
Sample code:
// Get the list of conversation groups
V2TimValueCallback<List<String>> getConversationGroupListDataRes =
await TencentImSDKPlugin.v2TIMManager
.getConversationManager()
.getConversationGroupList();
if (getConversationGroupListDataRes.code == 0) {
// Queried successfully
getConversationGroupListDataRes.data?.forEach((element) {
element;// Name of the conversation group
});
}
Call the getConversationListByFilter (dart) API to get the list of conversations in the group.
Sample code:
// Get the conversation list
V2TimConversationListFilter filter = V2TimConversationListFilter(
conversationType: 0, // Conversation type
nextSeq: 0,// Pull cursor
count: 10,// Pull count
markType: 0,// Conversation mark type
groupName: "groupName");// Name of the pulled group
// Advanced API for getting the conversation list
V2TimValueCallback<V2TimConversationResult> getConversationListByFilterRes =
await TencentImSDKPlugin.v2TIMManager
.getConversationManager()
.getConversationListByFilter(filter: filter);// Conversation list filter
if (getConversationListByFilterRes.code == 0) {
// Pulled successfully
bool? isFinished =getConversationListByFilterRes.data?.isFinished; //Whether the list is fully pulled
String? nextSeq =getConversationListByFilterRes.data?.nextSeq; // Cursor for the subsequent paged pull
List<V2TimConversation?>? conversationList =getConversationListByFilterRes.data?.conversationList; // List of conversations pulled this time
// If more conversations need to be pulled, use the returned `nextSeq` to continue pulling until `isFinished` is `true`.
if (!isFinished!) {
V2TimConversationListFilter nextFilter = V2TimConversationListFilter(
conversationType: 0,
nextSeq: int.parse(nextSeq!),// Use the returned `nextSeq` to continue pulling until `isFinished` is `true`.
count: 10,
markType: 0,
groupName: "groupName");
V2TimValueCallback<V2TimConversationResult> nextConversationListRes =
await TencentImSDKPlugin.v2TIMManager
.getConversationManager()
.getConversationListByFilter(
filter: nextFilter);
}

getConversationListByFilterRes.data?.conversationList?.forEach((element) {
element
?.conversationID; // Unique conversation ID. It is in the format of `c2c_userID` for a one-to-one chat or `group_groupID` for a group chat.
element?.draftText; // Draft message
element?.draftTimestamp; // Draft editing time. It is automatically generated when a draft is set.
element?.faceUrl; // Displayed conversation profile photo. It is the group profile photo for a group chat or the profile photo of the message receiver for a one-to-one chat.
element?.groupAtInfoList; // List of @ information in the group conversation. Generally, it is used to display the notifications of "someone@me" and "@all".
element?.groupID; // ID of the current group. If the conversation type is group chat, `groupID` is the ID of the current group. Otherwise, it is `null`.
element?.groupType; // Type of the current group. If the conversation type is group chat, `groupType` is the type of the current group. Otherwise, it is `null`.
element?.isPinned; // Whether the conversation is pinned to the top
element?.lastMessage; // Last message in the conversation
element?.orderkey; // Field for sorting conversations
element?.recvOpt; // Message receiving option
element
?.showName; // Displayed conversation name. The name of a group chat is displayed in the following order of priority: group name > group ID. The name of a one-to-one chat is displayed in the following order of priority: friend remarks of the message receiver > nickname of the message receiver > `userID` of the message receiver.
element?.type; // Conversation type, which can be `C2C` (one-to-one chat) or `Group` (group chat).
element?.unreadCount; // Unread message count of the conversation. It is invalid and defaults to `0` for an audio-video group (AVChatRoom).
element?.userID; // User ID of the message receiver. If the conversation type is one-to-one chat, `userID` is the user ID of the message receiver. Otherwise, it is `null`.
});
}

Adding a conversation to a group

After creating a group, you can call the addConversationsToGroup (dart) API to add a conversation to the group.
Sample code:
// Add a conversation to a conversation group
V2TimValueCallback<List<V2TimConversationOperationResult>>
addConversationsToGroupRes = await TencentImSDKPlugin.v2TIMManager
.getConversationManager()
.addConversationsToGroup(
groupName: "groupName",// Name of the conversation group to which the conversation is to be added
conversationIDList: []);// List of conversation IDs added
if (addConversationsToGroupRes.code == 0) {
// Added successfully
addConversationsToGroupRes.data?.forEach((element) {
element.conversationID; // ID of the conversation added
element.resultCode; // Operation result error code of the conversation
element.resultInfo; // Operation result description of the conversation
});
}

Deleting a conversation from a group

Call the deleteConversationsFromGroup (dart) API to delete a conversation from a conversation group.
Sample code:
// Delete a conversation from a conversation group
V2TimValueCallback<List<V2TimConversationOperationResult>>
deleteConversationsFromGroupRes = await TencentImSDKPlugin.v2TIMManager
.getConversationManager()
.deleteConversationsFromGroup(
groupName: "groupName",
conversationIDList: []);
if (deleteConversationsFromGroupRes.code == 0) {
// Deleted successfully
deleteConversationsFromGroupRes.data?.forEach((element) {
element.conversationID; // ID of the conversation to be deleted
element.resultCode; // Operation result error code of the conversation
element.resultInfo; // Operation result description of the conversation
});
}

Listening for the notification of a conversation group change

Call the addConversationListener (dart) API to listen for the notification of a conversation group change.
Sample code:
// Set a group event listener
V2TimConversationListener listener = V2TimConversationListener(
onConversationGroupCreated:
(String groupName, List<V2TimConversation> conversationList) => {
// A conversation group is created
// `groupName`: Name of the conversation group created
// `conversationList`: List of initialized conversations in the created conversation group
},
onConversationGroupDeleted: (String groupName) => {
// A conversation group is deleted
// `groupName`: Name of the conversation group deleted
},
onConversationGroupNameChanged: (String oldName, String newName) => {
// The name of a conversation group is changed
// `oldName`: Old name of the conversation group
// `newName`: New name of the conversation group
},
onConversationsAddedToGroup:
(String groupName, List<V2TimConversation> conversationList) => {
// A conversation is added to a conversation group
// `groupName`: Name of the conversation group to which the conversation is added
// `conversationList`: List of the conversations added
},
onConversationsDeletedFromGroup:
(String groupName, List<V2TimConversation> conversationList) => {
// A conversation is deleted from a conversation group
// `groupName`: Name of the conversation group from which the conversation is deleted
// `conversationList`: List of the conversations deleted
},
);
// Add a group event listener
TencentImSDKPlugin.v2TIMManager
.getConversationManager()
.addConversationListener(listener: listener);