tencent cloud

文档反馈

最后更新时间:2022-11-25 16:41:23

    功能描述

    在某些场景下,您可能需要对会话进行分组,例如分为 "产品体验"、"需求研发" 等,您可以调用以下接口实现。

    说明:

    • 该功能仅对旗舰版客户开放,购买 旗舰版 后可使用。
    • 该功能仅增强版 4.0.8 及以上版本支持。

    会话分组

    新建会话分组

    您可以调用 createConversationGroup (dart) 接口新建会话分组。

    说明:

    会话分组最大支持 20 个,超过后创建新的分组会报 51010 错误,不再使用的分组请及时删除。

    属性 含义 说明
    groupName 会话分组名 长度要大于 0,最大支持 32 bytes,超过后会报 51011 错误
    conversationIDList 会话 ID 列表 不能为空

    示例代码如下:

      //创建会话分组
      V2TimValueCallback<List<V2TimConversationOperationResult>>
          createConversationGroupRes = await TencentImSDKPlugin.v2TIMManager
              .getConversationManager()
              .createConversationGroup(
                  groupName: "groupName",// 创建的会话分组的名称
                  conversationIDList: []);// 需要放入创建的会话分组的会话id列表
      if (createConversationGroupRes.code == 0) {
        // 创建设置成功
        createConversationGroupRes.data?.forEach((element) {
          element.conversationID; // 被添加的会话id
          element.resultCode; // 此条会话的操作结果错误码
          element.resultInfo; // 此条会话的操作结果描述
        });
      }
    

    删除会话分组

    您可以调用 deleteConversationGroup (dart) 接口删除会话分组。

    说明:

    如果会话分组不存在,删除对应分组会报 51009 错误。

    示例代码如下:

      //删除会话分组
      V2TimCallback deleteConversationGroupRes = await TencentImSDKPlugin
          .v2TIMManager
          .getConversationManager()
          .deleteConversationGroup(groupName: "groupName");//需要删除的会话分组的名称
      if (deleteConversationGroupRes.code == 0) {
        // 删除成功
      }
    

    重命名会话分组

    您可以调用 renameConversationGroup (dart) 接口重命名会话分组。

    示例代码如下:

      //重命名会话分组
      V2TimCallback renameConversationGroupRes = await TencentImSDKPlugin
          .v2TIMManager
          .getConversationManager()
          .renameConversationGroup(
           oldName: "oldName",//需要重命名的会话分组的名称
           newName: "newName");//回话分组的新名称
      if (renameConversationGroupRes.code == 0) {
        // 重命名成功
      }
    

    获取会话分组列表

    您可以调用 getConversationGroupList (dart) 接口获取会话分组列表。

    示例代码如下:

      //获取会话分组列表
      V2TimValueCallback<List<String>> getConversationGroupListDataRes =
          await TencentImSDKPlugin.v2TIMManager
              .getConversationManager()
              .getConversationGroupList();
      if (getConversationGroupListDataRes.code == 0) {
        // 查询成功
        getConversationGroupListDataRes.data?.forEach((element) {
          element;//此条会话分组的名称
        });
      }
    

    如果需要获取分组下面的会话列表,可以调用 getConversationListByFilter (dart) 接口获取。

    示例代码如下:

      //获取会话列表
      V2TimConversationListFilter filter = V2TimConversationListFilter(
          conversationType: 0,//会话类型
          nextSeq: 0,//拉取游标
          count: 10,//拉取数量
          markType: 0,//会话标记类型
          groupName: "groupName");//拉取的群组名
      //获取会话列表的高级接口
      V2TimValueCallback<V2TimConversationResult> getConversationListByFilterRes =
          await TencentImSDKPlugin.v2TIMManager
              .getConversationManager()
              .getConversationListByFilter(filter: filter);//会话列表过滤器
      if (getConversationListByFilterRes.code == 0) {
        //拉取成功
        bool? isFinished =getConversationListByFilterRes.data?.isFinished; //是否拉取完
        String? nextSeq =getConversationListByFilterRes.data?.nextSeq; //后续分页拉取的游标
        List<V2TimConversation?>? conversationList =getConversationListByFilterRes.data?.conversationList; //此次拉取到的消息列表
        //如果没有拉取完,使用返回的nextSeq继续拉取直到isFinished为true
        if (!isFinished!) {
          V2TimConversationListFilter nextFilter = V2TimConversationListFilter(
              conversationType: 0,
              nextSeq: int.parse(nextSeq!),//使用返回的nextSeq继续拉取直到isFinished为true
              count: 10,
              markType: 0,
              groupName: "groupName");
          V2TimValueCallback<V2TimConversationResult> nextConversationListRes =
              await TencentImSDKPlugin.v2TIMManager
                  .getConversationManager()
                  .getConversationListByFilter(
                      filter: nextFilter); 
        }
         getConversationListByFilterRes.data?.conversationList?.forEach((element) {
          element
              ?.conversationID; //会话唯一 ID,如果是单聊,组成方式为 c2c_userID;如果是群聊,组成方式为 group_groupID。
          element?.draftText; //草稿信息
          element?.draftTimestamp; //草稿编辑时间,草稿设置的时候自动生成。
          element?.faceUrl; //会话展示头像,群聊头像:群头像;单聊头像:对方头像。
          element?.groupAtInfoList; //群会话 @ 信息列表,通常用于展示 “有人@我” 或 “@所有人” 这两种提醒状态。
          element?.groupID; //当前群聊 ID,如果会话类型为群聊,groupID 会存储当前群的群 ID,否则为 null。
          element?.groupType; //当前群聊类型,如果会话类型为群聊,groupType 为当前群类型,否则为 null。
          element?.isPinned; //会话是否置顶
          element?.lastMessage; //会话最后一条消息
          element?.orderkey; //会话排序字段
          element?.recvOpt; //消息接收选项
          element
              ?.showName; //会话展示名称,群聊会话名称优先级:群名称 > 群 ID;单聊会话名称优先级:对方好友备注 > 对方昵称 > 对方的 userID。
          element?.type; //会话类型,分为 C2C(单聊)和 Group(群聊)。
          element?.unreadCount; //会话未读消息数,直播群(AVChatRoom)不支持未读计数,默认为 0。
          element?.userID; //对方用户 ID,如果会话类型为单聊,userID 会存储对方的用户 ID,否则为 null。
        });
      }
    

    添加会话到一个分组

    当分组创建成功后,您可以调用 addConversationsToGroup (dart) 接口添加一个新会话到分组。

    示例代码如下:

      //添加会话到一个会话分组
      V2TimValueCallback<List<V2TimConversationOperationResult>>
          addConversationsToGroupRes = await TencentImSDKPlugin.v2TIMManager
              .getConversationManager()
              .addConversationsToGroup(
                  groupName: "groupName",//需要被添加会话的会话分组的名称
                  conversationIDList: []);//被添加的会话id列表
      if (addConversationsToGroupRes.code == 0) {
        // 添加成功
        addConversationsToGroupRes.data?.forEach((element) {
          element.conversationID; // 被添加的会话id
          element.resultCode; // 此条会话的操作结果错误码
          element.resultInfo; // 此条会话的操作结果描述
        });
      }
    

    从分组中删除某会话

    您可以调用 deleteConversationsFromGroup (dart) 从分组中删除某会话。

    示例代码如下:

      //从一个会话分组中删除会话
      V2TimValueCallback<List<V2TimConversationOperationResult>>
          deleteConversationsFromGroupRes = await TencentImSDKPlugin.v2TIMManager
              .getConversationManager()
              .deleteConversationsFromGroup(
                  groupName: "groupName",
                  conversationIDList: []);
      if (deleteConversationsFromGroupRes.code == 0) {
        // 删除成功
        deleteConversationsFromGroupRes.data?.forEach((element) {
          element.conversationID; // 被删除的会话id
          element.resultCode; // 此条会话的操作结果错误码
          element.resultInfo; // 此条会话的操作结果描述
        });
      }
    

    监听会话分组变更通知

    您可以调用 addConversationListener (dart) 接口监听会话分组变更通知。

    示例代码如下:

      //设置群组监听器
      V2TimConversationListener listener = V2TimConversationListener(
        onConversationGroupCreated:
            (String groupName, List<V2TimConversation> conversationList) => {
          //会话分组被创建
          //groupName 创建的会话分组名
          //conversationList 创建的会话分组中的初始化会话列表
        },
        onConversationGroupDeleted: (String groupName) => {
          //会话分组被删除
          //groupName 删除的会话分组名
        },
        onConversationGroupNameChanged: (String oldName, String newName) => {
          //会话分组名变更
          //oldName 被修改的会话分组名
          //newName 新的会话分组名
        },
        onConversationsAddedToGroup:
            (String groupName, List<V2TimConversation> conversationList) => {
          //会话分组新增会话
          //groupName 被新增的会话的分组名
          //conversationList 新增的会话列表
        },
        onConversationsDeletedFromGroup:
            (String groupName, List<V2TimConversation> conversationList) => {
          //会话分组删除会话
          //groupName 被删除的会话的分组名
          //conversationList 删除的会话列表
        },
      );
      //添加群组监听器
      TencentImSDKPlugin.v2TIMManager
          .getConversationManager()
          .addConversationListener(listener: listener);
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持