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 Pro edition 、Pro Plus edition or Enterprise edition.
This feature is available only in SDK enhanced edition v4.0.8 or later.
Conversation Group
Creating 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 groupV2TimValueCallback<List<V2TimConversationOperationResult>>createConversationGroupRes = await TencentImSDKPlugin.v2TIMManager.getConversationManager().createConversationGroup(groupName: "groupName",// Name of the created conversation groupconversationIDList: []);// List of conversation IDs to be added to the conversation group createdif (createConversationGroupRes.code == 0) {// Creation configured successfullycreateConversationGroupRes.data?.forEach((element) {element.conversationID; // ID of the conversation to be addedelement.resultCode; // Operation result error code of the conversationelement.resultInfo; // Operation result description of the conversation});}
Deleting a conversation group
Note:
If the target conversation group doesn't exist, the
51009
error will be reported.Sample code:
// Delete the conversation groupV2TimCallback deleteConversationGroupRes = await TencentImSDKPlugin.v2TIMManager.getConversationManager().deleteConversationGroup(groupName: "groupName");// Name of the conversation group to be deletedif (deleteConversationGroupRes.code == 0) {// Deleted successfully}
Renaming a conversation group
Sample code:
// Rename a conversation groupV2TimCallback renameConversationGroupRes = await TencentImSDKPlugin.v2TIMManager.getConversationManager().renameConversationGroup(oldName: "oldName",// Name of the conversation group to renamenewName: "newName");// New name of the conversation groupif (renameConversationGroupRes.code == 0) {// Renamed successfully}
Getting the list of conversation groups
Sample code:
// Get the list of conversation groupsV2TimValueCallback<List<String>> getConversationGroupListDataRes =await TencentImSDKPlugin.v2TIMManager.getConversationManager().getConversationGroupList();if (getConversationGroupListDataRes.code == 0) {// Queried successfullygetConversationGroupListDataRes.data?.forEach((element) {element;// Name of the conversation group});}
Sample code:
// Get the conversation listV2TimConversationListFilter filter = V2TimConversationListFilter(conversationType: 0, // Conversation typenextSeq: 0,// Pull cursorcount: 10,// Pull countmarkType: 0,// Conversation mark typegroupName: "groupName");// Name of the pulled group// Advanced API for getting the conversation listV2TimValueCallback<V2TimConversationResult> getConversationListByFilterRes =await TencentImSDKPlugin.v2TIMManager.getConversationManager().getConversationListByFilter(filter: filter);// Conversation list filterif (getConversationListByFilterRes.code == 0) {// Pulled successfullybool? isFinished =getConversationListByFilterRes.data?.isFinished; //Whether the list is fully pulledString? nextSeq =getConversationListByFilterRes.data?.nextSeq; // Cursor for the subsequent paged pullList<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 messageelement?.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 topelement?.lastMessage; // Last message in the conversationelement?.orderkey; // Field for sorting conversationselement?.recvOpt; // Message receiving optionelement?.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 groupV2TimValueCallback<List<V2TimConversationOperationResult>>addConversationsToGroupRes = await TencentImSDKPlugin.v2TIMManager.getConversationManager().addConversationsToGroup(groupName: "groupName",// Name of the conversation group to which the conversation is to be addedconversationIDList: []);// List of conversation IDs addedif (addConversationsToGroupRes.code == 0) {// Added successfullyaddConversationsToGroupRes.data?.forEach((element) {element.conversationID; // ID of the conversation addedelement.resultCode; // Operation result error code of the conversationelement.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 groupV2TimValueCallback<List<V2TimConversationOperationResult>>deleteConversationsFromGroupRes = await TencentImSDKPlugin.v2TIMManager.getConversationManager().deleteConversationsFromGroup(groupName: "groupName",conversationIDList: []);if (deleteConversationsFromGroupRes.code == 0) {// Deleted successfullydeleteConversationsFromGroupRes.data?.forEach((element) {element.conversationID; // ID of the conversation to be deletedelement.resultCode; // Operation result error code of the conversationelement.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 listenerV2TimConversationListener 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 listenerTencentImSDKPlugin.v2TIMManager.getConversationManager().addConversationListener(listener: listener);