diff --git a/404.html b/404.html new file mode 100644 index 0000000..531051e --- /dev/null +++ b/404.html @@ -0,0 +1,43 @@ + + +
+ + + + + +本接口用于将 App 自有账号导入即时通信 IM 账号系统,为该账号创建一个对应的内部 ID,使该账号能够使用即时通信 IM 服务。
说明
同一个账号重复导入仅会创建 1 个内部 ID。
使用示例:
AccountImportRequest request = AccountImportRequest.builder()
+ .userId("admin")
+ .faceUrl("https://avatars.githubusercontent.com/u/43716716?s=200&v=4")
+ .nick("doocs")
+ .build();
+
+AccountImportResult result = client.account.accountImport(request);
+
本接口用于批量将 App 自有账号导入即时通信 IM 账号系统,为该账号创建一个对应的内部 ID,使该账号能够使用即时通信 IM 服务。
`,8)),c("p",null,[n[1]||(n[1]=s("注意: 本接口单次最多支持导入 100 个账号,且不支持导入账号的昵称和头像信息。请使用 ")),l(t,{to:"/guide/profile.html#%E8%AE%BE%E7%BD%AE%E8%B5%84%E6%96%99"},{default:o(()=>n[0]||(n[0]=[s("资料管理-设置资料")])),_:1}),n[2]||(n[2]=s(" 设置其他信息。"))]),n[4]||(n[4]=a(`使用示例:
List<String> accounts = new ArrayList<>();
+accounts.add("user1");
+accounts.add("user2");
+MultiAccountImportRequest request = new MultiAccountImportRequest(accounts);
+
+MultiAccountImportResult result = client.account.multiAccountImport(request);
+
使用示例:
AccountDeleteItem item1 = AccountDeleteItem.builder().userId("user1").build();
+AccountDeleteItem item2 = AccountDeleteItem.builder().userId("user2").build();
+List<AccountDeleteItem> deleteItems = Arrays.asList(item1, item2);
+AccountDeleteRequest request = new AccountDeleteRequest(deleteItems);
+
+AccountDeleteResult result = client.account.accountDelete(request);
+
用于查询自有账号是否已导入即时通信 IM, 支持批量查询。
使用示例:
AccountCheckItem item1 = new AccountCheckItem("user1");
+AccountCheckItem item2 = new AccountCheckItem("user2");
+List<AccountCheckItem> checkItems = Arrays.asList(item1, item2);
+AccountCheckRequest request = new AccountCheckRequest(checkItems);
+
+AccountCheckResult result = client.account.accountCheck(request);
+
本接口适用于将 App 用户账号的登录状态(例如 UserSig)失效。
例如,开发者判断一个用户为恶意账号后,可以调用本接口将该用户当前的登录状态失效,这样用户使用历史 UserSig 登录即时通信 IM 会失败。
注意
支持一次失效一个账号,用户可以使用重新生成的 UserSig 登录即时通信 IM
使用示例:
KickRequest request = new KickRequest("user2");
+
+KickResult result = client.account.kick(request);
+
获取用户当前的登录状态。
使用示例:
List<String> toAccount = Arrays.asList("user1", "user2");
+QueryOnlineStatusRequest request = QueryOnlineStatusRequest.builder()
+ .toAccount(toAccount)
+ .isNeedDetail(IsNeedDetail.YES)
+ .build();
+
+QueryOnlineStatusResult result = client.account.queryOnlineStatus(request);
+
开启本地审核后,在 App 后台可以主动调用 REST API 接口,增删改查本地审核相关词库。
使用示例:
LocalAuditWord word = new LocalAuditWord();
+word.setFilterType(AuditFilterType.REPLACE);
+word.setWordType(AuditWordType.SENSITIVE_WORDS);
+word.setKeyword("caonima");
+word.setReplacedContent("****");
+AddLocalAuditKeywordsRequest request = AddLocalAuditKeywordsRequest.builder()
+ .sdkAppId(1400594307)
+ .localAuditWords(Collections.singletonList(word)).build();
+
+AddLocalAuditKeywordsResult result = client.audit.addLocalAuditKeywords(request);
+
开启本地审核后,在 App 后台可以主动调用 REST API 接口,增删改查本地审核相关词库。
使用示例:
DeleteLocalAuditKeywordsRequest request = new DeleteLocalAuditKeywordsRequest();
+request.setSdkAppId(1400594307);
+LocalAuditWord word = new LocalAuditWord();
+word.setId(1L);
+word.setReplacedContent("****");
+word.setKeyword("caonima");
+word.setWordType(AuditWordType.SENSITIVE_WORDS);
+word.setFilterType(AuditFilterType.REPLACE);
+request.setLocalAuditWords(Collections.singletonList(word));
+
+DeleteLocalAuditKeywordsResult result = client.audit.deleteLocalAuditKeywords(request);
+
开启本地审核后,在 App 后台可以主动调用 REST API 接口,增删改查本地审核相关词库。
使用示例:
GetLocalAuditKeywordsRequest request = GetLocalAuditKeywordsRequest.builder().keyword("caonima")
+ .filterType(AuditFilterType.REPLACE)
+ .limit(1).offset(0).sdkAppId(1400594307).build();
+
+GetLocalAuditKeywordsResult result = client.audit.getLocalAuditKeywords(request);
+
开启云端审核后,在 App 后台可以主动调用 REST API 接口,送审音视图文等相关内容,其中图文同步返回机审结果,音视频通过异步回调的形式返回机审结果。
使用示例:
ContentModerationRequest request = ContentModerationRequest.builder().content("122")
+ .contentType(AuditContentType.TEXT)
+ .auditName(AuditNameType.C2C)
+ .build();
+
+ContentModerationResult result = client.audit.contentModeration(request);
+
开启云端审核后,在 App 后台可以主动调用 REST API 接口,批量送审图文等相关内容,音视频审核请查看主动审核接口。
使用示例:
BatchContentModerationRequest request = new BatchContentModerationRequest();
+request.setAuditName(AuditNameType.GROUP);
+AuditContentItem item1 = new AuditContentItem();
+item1.setContent("f*ck uuu");
+item1.setContentId(323245334);
+item1.setContentType(AuditContentType.TEXT);
+AuditContentItem item2 = AuditContentItem.builder()
+ .contentId(435545)
+ .contentType(AuditContentType.TEXT)
+ .content("cnm").build();
+request.setContents(Arrays.asList(item1, item2));
+
+BatchContentModerationResult result = client.audit.batchContentModeration(request);
+
开启云端审核后,在 App 后台可以主动调用 REST API 接口,增删改查云端审核相关词库。
使用示例:
GetCloudAuditKeyWordsIdsRequest request = GetCloudAuditKeyWordsIdsRequest.builder()
+ .limit(1)
+ .offset(0)
+ .sdkAppId(1400594307)
+ .build();
+
+GetCloudAuditKeywordsIdsResult result = client.audit.getCloudAuditKeywordsIds(request);
+
开启云端审核后,在 App 后台可以主动调用 REST API 接口,增删改查云端审核相关词库。
使用示例:
GetCloudAuditKeyWordsRequest request = GetCloudAuditKeyWordsRequest.builder()
+ .libId("fd")
+ .limit(1)
+ .offset(0)
+ .sdkAppId(1400594307)
+ .build();
+
+GetCloudAuditKeywordsResult result = client.audit.getCloudAuditKeywords(request);
+
开启云端审核后,在 App 后台可以主动调用 RESTA PI 接口,增删改查云端审核相关词库。
使用示例:
UserKeyword userKeyword = new UserKeyword();
+userKeyword.setContent("caonima");
+userKeyword.setLabel(ContentModerationLabel.COMPOSITE);
+AddCloudAuditKeywordsRequest request = AddCloudAuditKeywordsRequest.builder()
+ .sdkAppId(1400594307)
+ .libId("fd")
+ .userKeywords(Collections.singletonList(userKeyword))
+ .build();
+
+AddCloudAuditKeywordsResult result = client.audit.addCloudAuditKeywords(request);
+
开启云端审核后,在 App 后台可以主动调用 REST API 接口,增删改查云端审核相关词库。
使用示例:
DeleteCloudAuditKeywordsRequest request = DeleteCloudAuditKeywordsRequest.builder()
+ .sdkAppId(1400594307)
+ .libId("fd")
+ .keywords(Arrays.asList("caonima", "wtf")).build();
+
+DeleteCloudAuditKeywordsResult result = client.audit.deleteCloudAuditKeywords(request);
+
App 管理员可以通过该接口获取 App 中所有群组的 ID。
说明
即时通信 IM 内置多种群组类型,详情请参见 群组系统。
使用示例:
GetAppIdGroupListRequest request = GetAppIdGroupListRequest.builder()
+ .limit(10)
+ .groupType(GroupType.PUBLIC)
+ .next(0)
+ .build();
+
+GetAppIdGroupListResult result = client.group.getAppIdGroupList(request);
+
App 管理员可以通过该接口创建群组。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 支持,用户(包括群主)使用 AVChatroom(直播群)时必须操作 SDK 主动申请进群 |
Community(社群) | 支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
CreateGroupRequest request = CreateGroupRequest.builder()
+ .type(GroupType.PUBLIC)
+ .name("TestGroup")
+ .ownerAccount("user1")
+ .groupId("MyFirstGroup")
+ .introduction("This is group Introduction")
+ .notification("This is group Notification")
+ .faceUrl("https://avatars.githubusercontent.com/u/43716716?s=200&v=4")
+ .maxMemberCount(500)
+ .applyJoinOption(ApplyJoinOption.FREE_ACCESS)
+ .inviteJoinOption(InviteJoinOption.DISABLE_INVITE)
+ .build();
+
+CreateGroupResult result = client.group.createGroup(request);
+
App 管理员可以根据群组 ID 获取群组的详细信息。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 支持 |
Community(社群) | 支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
List<String> groupIdList = Collections.singletonList("MyFirstGroup");
+GetGroupInfoRequest request = new GetGroupInfoRequest(groupIdList);
+
+GetGroupInfoResult result = client.group.getGroupInfo(request);
+
App 管理员可以根据群组 ID 获取群组成员的资料。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 不支持 |
Community(社群) | 支持,使用 Next 字段分批获取 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
因 Community(社群)人数较多,分页获取方式改用 Next 分批方法。
使用示例:
GetGroupMemberInfoRequest request = GetGroupMemberInfoRequest.builder()
+ .groupId("MyFirstGroup")
+ .limit(100)
+ .offset(0)
+ .build();
+
+GetGroupMemberInfoResult result = client.group.getGroupMemberInfo(request);
+
App 管理员可以通过该接口修改指定群组的基础信息。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 支持 |
Community(社群) | 支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
ModifyGroupBaseInfoRequest request = ModifyGroupBaseInfoRequest.builder()
+ .groupId("MyFirstGroup")
+ .name("groupName")
+ .introduction("my first group")
+ .notification("hello world!")
+ .faceUrl("https://avatars.githubusercontent.com/u/43716716?s=200&v=4")
+ .maxMemberNum(500)
+ .applyJoinOption(ApplyJoinOption.NEED_PERMISSION)
+ .muteAllMember(MuteAllMember.OFF)
+ .build();
+
+ModifyGroupBaseInfoResult result = client.group.modifyGroupBaseInfo(request);
+
App 管理员可以通过该接口向指定的群中添加新成员。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 不支持 |
Community(社群) | 支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
AVChatRoom(直播群)不支持增加群成员,对此类型群组进行操作时会返回 10007 错误。用户加入此类型群组的唯一方式是用户申请加群。
使用示例:
MemberRequestItem item = new MemberRequestItem("user2");
+List<MemberRequestItem> memberList = Collections.singletonList(item);
+AddGroupMemberRequest request = AddGroupMemberRequest.builder()
+ .groupId("MyFirstGroup")
+ .memberList(memberList)
+ .silence(1)
+ .build();
+
+AddGroupMemberResult result = client.group.addGroupMember(request);
+
App 管理员可以通过该接口删除群成员。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 不支持 |
Community(社群) | 支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
AVChatRoom(直播群)不支持删除群成员,对这种类型的群组进行操作时会返回 10004 错误。如果管理员希望达到删除群成员的效果,可以通过设置 批量禁言和取消禁言 的方式实现。
使用示例:
List<String> toDelAccount = Collections.singletonList("user2");
+DeleteGroupMemberRequest request = DeleteGroupMemberRequest.builder()
+ .groupId("MyFirstGroup")
+ .memberToDelAccount(toDelAccount)
+ .build();
+
+DeleteGroupMemberResult result = client.group.deleteGroupMember(request);
+
App 管理员可以通过该接口修改群成员资料。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 不支持 |
Community(社群) | 支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
AVChatRoom(直播群)不存储群成员资料,所以不能修改成员资料。只能修改管理员和群主的成员资料,修改普通成员资料时会返回 10007 错误。
使用示例:
ModifyGroupMemberInfoRequest request = ModifyGroupMemberInfoRequest.builder()
+ .groupId("MyFirstGroup")
+ .memberAccount("doocs")
+ .nameCard("hello World!")
+ .build();
+
+ModifyGroupMemberInfoResult result = client.group.modifyGroupMemberInfo(request);
+
App 管理员通过该接口解散群。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 支持 |
Community(社群) | 支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
DestroyGroupRequest request = new DestroyGroupRequest("MyFirstGroup");
+
+DestroyGroupResult result = client.group.destroyGroup(request);
+
App 管理员可以通过本接口获取某一用户加入的群信息。默认不获取用户已加入但未激活好友工作群(Work)以及直播群(AVChatRoom)群信息。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群),但默认不返回已加入但未激活的此类型群信息 |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 支持,但默认不返回此类型群信息。如果指定拉取 AVChatRoom 类型群信息,获得的群信息可能不完整,AVChatRoom 并不存储所有的群成员资料。 |
Community(社群) | 支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
GetJoinedGroupListRequest request = new GetJoinedGroupListRequest("doocs");
+
+GetJoinGroupListResult result = client.group.getJoinGroupList(request);
+
App 管理员可以通过该接口获取一批用户在群内的身份,即“成员角色”。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 不支持 |
Community(社群) | 支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
AVChatRoom(直播群)不支持该接口,对此类型群组进行操作将返回 10007 错误;但可以通过 获取群组成员详细资料 达到查询“成员角色”的效果。
使用示例:
List<String> userAccount = Collections.singletonList("doocs");
+GetRoleInGroupRequest request = GetRoleInGroupRequest.builder()
+ .groupId("MyFirstGroup")
+ .userAccount(userAccount)
+ .build();
+
+GetRoleInGroupResult result = client.group.getRoleInGroup(request);
+
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 不支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 支持 |
Community(社群) | 支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
Private(即新版本中的 Work,好友工作群)类型不支持禁言。
使用示例:
List<String> membersAccount = Collections.singletonList("doocs");
+ForbidSendMsgRequest request = ForbidSendMsgRequest.builder()
+ .groupId("MyFirstGroup")
+ .membersAccount(membersAccount)
+ .muteTime(200L)
+ .build();
+
+ForbidSendMsgResult result = client.group.forbidSendMsg(request);
+
App 管理员可以根据群组 ID 获取群组中被禁言的用户列表。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 支持 |
Community(社群) | 支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
GetGroupMutedAccountRequest request = new GetGroupMutedAccountRequest("MyFirstGroup");
+
+GetGroupMutedAccountResult result = client.group.getGroupMutedAccount(request);
+
App 管理员可以通过该接口在群组中发送普通消息。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 支持 |
Community(社群) | 支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
TIMTextMsgElement msg = new TIMTextMsgElement("red packet");
+List<TIMMsgElement> msgBody = Collections.singletonList(msg);
+SendGroupMsgRequest request = SendGroupMsgRequest.builder()
+ .groupId("MyFirstGroup")
+ .random(1314)
+ .msgBody(msgBody)
+ .onlineOnlyFlag(OnlineOnlyFlag.YES)
+ .build();
+
+SendGroupMsgResult result = client.group.sendGroupMsg(request);
+
App 管理员可以通过该接口在群组中发送系统通知。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 支持,仅支持面向全员 |
Community(社群) | 支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
List<String> toMembersAccount = Collections.singletonList("doocs");
+SendGroupSystemNotificationRequest request = SendGroupSystemNotificationRequest.builder()
+ .groupId("MyFirstGroup")
+ .content("hello world")
+ .toMembersAccount(toMembersAccount)
+ .build();
+
+SendGroupSystemNotificationResult result = client.group.sendGroupSystemNotification(request);
+
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 不支持(见说明) |
Community(社群) | 支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
AVChatRoom(直播群)不支持转让群主,对该类型的群组进行操作时会返回 10007 错误。
使用示例:
ChangeGroupOwnerRequest request = ChangeGroupOwnerRequest.builder()
+ .groupId("MyFirstGroup")
+ .newOwnerAccount("doocs")
+ .build();
+
+ChangeGroupOwnerResult result = client.group.changeGroupOwner(request);
+
App 管理员通过该接口撤回指定群组的消息,消息需要在漫游有效期以内。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 不支持 |
Community(社群) | 支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
List<MsgSeqItem> msgSeqList = Collections.singletonList(new MsgSeqItem(0L));
+GroupMsgRecallRequest request = GroupMsgRecallRequest.builder()
+ .groupId("MyFirstGroup")
+ .msgSeqList(msgSeqList)
+ .build();
+
+GroupMsgRecallResult result = client.group.groupMsgRecall(request);
+
App 管理员可以通过该接口导入群组,不会触发回调、不会下发通知; 当 App 需要从其他即时通信系统迁移到即时通信 IM 时,使用该协议导入存量群组数据。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 不支持 |
Community(社群) | 支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
AVChatRoom(直播群)不支持导入群基础资料,对此类型的群组进行操作时会返回 10007 错误;如果需要达到导入群组基础资料的效果,可以通过 创建群组 和 修改群基础资料 的方式实现。
使用示例:
ImportGroupRequest request = ImportGroupRequest.builder()
+ .type(GroupType.PUBLIC)
+ .name("groupName")
+ .build();
+
+ImportGroupResult result = client.group.importGroup(request);
+
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 不支持 |
Community(社群) | 支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
AVChatRoom(直播群)不支持导入群消息,对此类型的群组进行操作时会返回 10007 错误;因为此类型群组所适用的场景不支持查看入群前的历史消息,所以没有提供这一功能。
使用示例:
TIMTextMsgElement msg = new TIMTextMsgElement("hello world");
+List<TIMMsgElement> msgBody = Collections.singletonList(msg);
+GroupMsgItem item = GroupMsgItem.builder()
+ .fromAccount("doocs")
+ .sendTime(1628062005)
+ .msgBody(msgBody)
+ .build();
+List<GroupMsgItem> msgList = Collections.singletonList(item);
+ImportGroupMsgRequest request = ImportGroupMsgRequest.builder()
+ .groupId("newGroup")
+ .msgList(msgList)
+ .build();
+
+ImportGroupMsgResult result = client.group.importGroupMsg(request);
+
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 不支持 |
Community(社群) | 支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
AVChatRoom(直播群)所适用的场景一般不需要导入成员,因此不支持导入群成员功能,对此类型的群组进行操作时会返回 10007 错误。
使用示例:
MemberItem item = MemberItem.builder()
+ .memberAccount("doocs")
+ .joinTime(1628062005)
+ .role(MemberRole.ADMIN)
+ .unreadMsgNum(1)
+ .build();
+List<MemberItem> members = Collections.singletonList(item);
+ImportGroupMemberRequest request = ImportGroupMemberRequest.builder()
+ .groupId("groupName")
+ .memberList(members)
+ .build();
+
+ImportGroupMemberResult result = client.group.importGroupMember(request);
+
说明
该文档仅限迁移用户使用,线上用户不能使用。
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 不支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 不支持 |
Community(社群) | 支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
ChatRoom 和 AVChatroom(直播群)的客户端不支持未读消息计数,所以对这两种类型的群组成员设置未读消息计数是无效的(但是不会返回错误)。
使用示例:
SetUnreadMsgNumRequest result = SetUnreadMsgNumRequest.builder()
+ .groupId("MyFirstGroup")
+ .memberAccount("doocs")
+ .unreadMsgNum(1)
+ .build();
+
+SetUnreadMsgNumResult result = client.group.setUnreadMsgNum(request);
+
该 API 接口的作用是撤回最近 1000 条消息中指定用户发送的消息。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 不支持 |
Community(社群) | 支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
DeleteGroupMsgBySenderRequest request = DeleteGroupMsgBySenderRequest.builder()
+ .groupId("MyFirstGroup")
+ .senderAccount("doocs")
+ .build();
+
+DeleteGroupMsgBySenderResult result = client.group.deleteGroupMsgBySender(request);
+
App 管理员可以通过该接口拉取群组的历史消息。
背景说明:
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 不支持 |
Community(社群) | 支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
AVChatRoom(直播群) 不支持历史消息存储,所以不支持调用此接口。
使用示例:
GroupMsgGetSimpleRequest request = GroupMsgGetSimpleRequest.builder()
+ .groupId("MyFirstGroup")
+ .reqMsgNumber(1)
+ .reqMsgNumber(20)
+ .build();
+
+GroupMsgGetSimpleResult result = client.group.groupMsgGetSimple(request);
+
App 管理员可以根据群组 ID 获取直播群在线人数。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 不支持,同新版本中的 Work(好友工作群) |
Public | 不支持 |
ChatRoom | 不支持,同新版本中的 Meeting(临时会议群)) |
AVChatRoom | 支持 |
Community(社群) | 不支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
注意
使用示例:
GetOnlineMemberNumRequest request = new GetOnlineMemberNumRequest("MyFirstAVChatRoom");
+
+GetOnlineMemberNumResult result = client.group.getOnlineMemberNum(request);
+
App 管理员可以根据群组 ID 获取直播群在线列表。
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 不支持,同新版本中的 Work(好友工作群) |
Public | 不支持 |
ChatRoom | 不支持,同新版本中的 Meeting(临时会议群)) |
AVChatRoom | 支持 |
Community(社群) | 不支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。 :::
注意
使用示例:
GetMembersRequest request = GetMembersRequest.builder()
+ .groupId("MyFirstGroup")
+ .timestamp(0)
+ .build();
+
+GetMembersResult result = client.group.getMembers(request);
+
App 管理员和群主可以对直播群成员设置不同的标记以区分不同类型的群成员。该功能需旗舰版,并且在 IM 控制台“群功能配置”中开通“直播群在线成员列表”功能。其他套餐版本调用该 API 将返回失败。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 不支持,同新版本中的 Work(好友工作群) |
Public | 不支持 |
ChatRoom | 不支持,同新版本中的 Meeting(临时会议群)) |
AVChatRoom | 支持 |
Community(社群) | 不支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
ModifyGroupUserInfoRequest request = new ModifyGroupUserInfoRequest();
+request.setCommandType(1);
+GroupMemberItem item = new GroupMemberItem();
+item.setMarks(Arrays.asList(1001, 1002));
+item.setMemberAccount("test1");
+request.setMemberList(Collections.singletonList(item));
+request.setGroupId("MyFirstGroup");
+
+ModifyGroupUserInfoResult result = client.group.modifyGroupUserInfo(request);
+
App 管理员可以通过该接口获取群自定义属性。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群)) |
AVChatRoom | 支持 |
Community(社群) | 不支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
GetGroupAttrRequest request = new GetGroupAttrRequest("MyFirstGroup");
+
+GetGroupAttrResult result = client.group.getGroupAttr(request);
+
App 管理员可以通过该接口修改群自定义属性。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群)) |
AVChatRoom | 支持 |
Community(社群) | 不支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
GroupAttr groupAttr = new GroupAttr();
+groupAttr.setKey("isOpen");
+groupAttr.setValue("yes");
+List<GroupAttr> groupAttrs = Collections.singletonList(groupAttr);
+ModifyGroupAttrRequest request = ModifyGroupAttrRequest.builder()
+ .groupId("MyFirstGroup")
+ .groupAttrs(groupAttrs)
+ .build();
+
+ModifyGroupAttrResult result = client.group.modifyGroupAttr(request);
+
App 管理员可以通过该接口清空群自定义属性。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群)) |
AVChatRoom | 支持 |
Community | 不支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
ClearGroupAttrRequest request = new ClearGroupAttrRequest("MyFirstGroup");
+
+ClearGroupAttrResult result = client.group.clearGroupAttr(request);
+
App 管理员可以通过该接口重置群自定义属性。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持 |
Public | 支持 |
ChatRoom | 支持 |
AVChatRoom | 支持 |
Community(社群) | 不支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
SetGroupAttrRequest request = new SetGroupAttrRequest();
+request.setGroupId("MyFirstGroup");
+GroupAttr groupAttr = new GroupAttr();
+groupAttr.setKey("isOpen");
+groupAttr.setValue("yes");
+List<GroupAttr> groupAttrs = Collections.singletonList(groupAttr);
+request.setGroupAttrs(groupAttrs);
+
+SetGroupAttrResult result = client.group.setGroupAttr(request);
+
注意
使用该接口修改消息后,被修改的消息不能恢复,请谨慎调用该接口。
使用示例:
ModifyGroupMsgRequest request = new ModifyGroupMsgRequest();
+request.setGroupId("MyFirstGroup");
+request.setMsgSeq(123L);
+TIMTextMsgElement msg = new TIMTextMsgElement("hello world");
+List<TIMMsgElement> msgBody = Collections.singletonList(msg);
+request.setMsgBody(msgBody);
+request.setMsgBody(msgBody);
+
+ModifyGroupMsgResult result = client.group.modifyGroupMsg(request);
+
App 管理员可以通过该接口向所有直播群下发广播消息。
注意
直播群广播消息功能支持需要终端 SDK 6.5.2803 增强版及以上版本、Web SDK v2.21.0 及以上版本,需 购买旗舰版套餐包 并在 控制台>群功能配置>群功能配置>直播群广播消息 打开开关后方可使用。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 不支持,同新版本中的 Work(好友工作群) |
Public | 不支持 |
ChatRoom | 不支持,同新版本中的 Meeting(临时会议群)) |
AVChatRoom | 支持,发给所有直播群 |
Community(社群) | 不支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
SendBroadcastMsgRequest request = new SendBroadcastMsgRequest();
+request.setFromAccount("test1");
+TIMTextMsgElement msg = new TIMTextMsgElement("hello world");
+List<TIMMsgElement> msgBody = Collections.singletonList(msg);
+request.setMsgBody(msgBody);
+request.setRandom(1223L);
+
+SendBroadcastMsgResult result = client.group.sendBroadcastMsg(request);
+
App 管理员可以通过该接口拉取群消息已读回执信息。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群)) |
AVChatRoom | 不支持 |
Community(社群) | 不支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
GetGroupMsgReceiptRequest request = new GetGroupMsgReceiptRequest();
+request.setGroupId("MyFirstGroup");
+MsgSeqItem seqItem = new MsgSeqItem();
+seqItem.setMsgSeq(123L);
+request.setMsgSeqList(Collections.singletonList(seqItem));
+
+GetGroupMsgReceiptResult result = client.group.getGroupMsgReceipt(request);
+
App 管理员可以通过该接口拉取群消息已读或未读成员列表。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 支持,同新版本中的 Work(好友工作群) |
Public | 支持 |
ChatRoom | 支持,同新版本中的 Meeting(临时会议群)) |
AVChatRoom | 不支持 |
Community(社群) | 不支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
GetGroupMsgReceiptDetailRequest request = new GetGroupMsgReceiptDetailRequest();
+request.setGroupId("MyFirstGroup");
+request.setMsgSeq(123L);
+request.setNum(12);
+request.setCursor("");
+request.setFlag(12);
+
+GetGroupMsgReceiptDetailResult result = client.group.getGroupMsgReceiptDetail(request);
+
App 管理员可以通过该接口创建话题。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 不支持 |
Public | 不支持 |
ChatRoom | 不支持 |
AVChatRoom | 不支持 |
Community(社群) | 只有支持话题的社群才适用此 API |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
CreateGroupTopicRequest request = new CreateGroupTopicRequest();
+request.setGroupId("MyFirstGroup");
+request.setTopicName("test");
+request.setFaceUrl("");
+
+CreateGroupTopicResult result = client.group.createGroupTopic(request);
+
App 管理员可以通过该接口获取话题资料。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 不支持 |
Public | 不支持 |
ChatRoom | 不支持 |
AVChatRoom | 不支持 |
Community(社群) | 只有支持话题的社群才适用此 API |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
GetGroupTopicRequest request = new GetGroupTopicRequest();
+request.setGroupId("MyFirstGroup");
+request.setFromAccount("1400187352");
+
+GetGroupTopicResult result = client.group.getGroupTopic(request);
+
App 管理员可以通过该接口修改话题资料。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 不支持 |
Public | 不支持 |
ChatRoom | 不支持 |
AVChatRoom | 不支持 |
Community(社群) | 只有支持话题的社群才适用此 API |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
ModifyGroupTopicRequest request = new ModifyGroupTopicRequest();
+request.setGroupId("MyFirstGroup");
+request.setTopicName("test");
+request.setFaceUrl("");
+
+ModifyGroupTopicResult result = client.group.modifyGroupTopic(request);
+
App 管理员可以通过该接口导入话题,不会触发回调、不会下发通知;当 App 需要从其他即时通信系统迁移到即时通信 IM 时,使用该协议导入存量话题数据。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 不支持 |
Public | 不支持 |
ChatRoom | 不支持 |
AVChatRoom | 不支持 |
Community(社群) | 只有支持话题的社群才适用此 API |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
ImportGroupTopicRequest request = new ImportGroupTopicRequest();
+request.setGroupId("MyFirstGroup");
+request.setTopicName("test");
+request.setFromAccount("123");
+
+ImportGroupTopicResult result = client.group.importGroupTopic(request);
+
App 管理员可以通过该接口解散话题。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 不支持 |
Public | 不支持 |
ChatRoom | 不支持 |
AVChatRoom | 不支持 |
Community(社群) | 只有支持话题的社群才适用此 API |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
DestroyGroupTopicRequest request = new DestroyGroupTopicRequest();
+request.setGroupId("MyFirstGroup");
+
+DestroyGroupTopicResult result = client.group.destroyGroupTopic(request);
+
App 管理员可以通过该接口获取对应直播群的封禁成员列表。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 不支持,同新版本中的 Work(好友工作群) |
Public | 不支持 |
ChatRoom | 不支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 支持 |
Community(社群) | 不支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
GetGroupBanMemberRequest request = new GetGroupBanMemberRequest();
+request.setGroupId("MyFirstGroup");
+request.setLimit(10);
+request.setOffset(0);
+
+GetGroupBanMemberResult result = client.group.getGroupBanMember(request);
+
App 管理员可以通过该接口向直播群封禁成员,封禁后成员无法接收消息,并且封禁时间内无法再次进群。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 不支持,同新版本中的 Work(好友工作群) |
Public | 不支持 |
ChatRoom | 不支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 支持 |
Community(社群) | 不支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
BanGroupMemberRequest request = new BanGroupMemberRequest();
+request.setGroupId("MyFirstGroup");
+request.setDuration(1000L);
+request.setMembersAccount(Arrays.asList("test1", "bingo"));
+request.setDescription("test");
+
+BanGroupMemberResult result = client.group.banGroupMember(request);
+
App 管理员可以通过该接口向直播群解封成员,解封后,之前封禁的成员可重新进群获取消息。
说明
适用的群组类型
群组类型 ID | 是否支持此 REST API |
---|---|
Private | 不支持,同新版本中的 Work(好友工作群) |
Public | 不支持 |
ChatRoom | 不支持,同新版本中的 Meeting(临时会议群) |
AVChatRoom | 支持 |
Community(社群) | 不支持 |
即时通信 IM 内置上述群组类型,详情介绍请参见 群组系统。
使用示例:
UnbanGroupMemberRequest request = new UnbanGroupMemberRequest();
+request.setGroupId("MyFirstGroup");
+request.setMembersAccount(Arrays.asList("test1", "bingo"));
+
+UnbanGroupMemberResult result = client.group.unbanGroupMember(request);
+
App 管理员和群成员可以拉取消息扩展,消息扩展为一组自定义的键值对。
注意
使用示例:
GroupGetKeyValuesRequest request = GroupGetKeyValuesRequest.builder()
+ .groupId("MyFirstGroup")
+ .msgSeq(1L)
+ .build();
+
+GroupGetKeyValuesResult result = client.group.groupGetKeyValues(request);
+
App 管理员和群成员可以为群聊普通消息设置消息扩展,消息扩展为一组自定义的键值对。
注意
使用示例:
GroupSetKeyValuesRequest request = GroupSetKeyValuesRequest.builder()
+ .groupId("MyFirstGroup")
+ .msgSeq(1L)
+ .extensionList(Collections.singletonList(KeyValueSeq.builder()
+ .key("test")
+ .value("test")
+ .build()))
+ .build();
+
+GroupSetKeyValuesResult result = client.group.groupSetKeyValues(request);
+
App 管理员可以通过该接口获取群计数器。
注意
使用示例:
GetGroupCounterRequest request = GetGroupCounterRequest.builder()
+ .groupId("MyFirstGroup")
+ .build();
+
+GetGroupCounterResult result = client.group.getGroupCounter(request);
+
App 管理员可以通过该接口更新(设置、递增、递减)群计数器。
注意
使用示例:
List<GroupCounterItem> groupCounter = new ArrayList<>();
+GroupCounterItem item = new GroupCounterItem();
+item.setKey("x");
+item.setValue(1L);
+groupCounter.add(item);
+UpdateGroupCounterRequest request = UpdateGroupCounterRequest.builder()
+ .groupId("MyFirstGroup")
+ .groupCounter(groupCounter)
+ .mode(GroupCounterMode.SET)
+ .build();
+
+UpdateGroupCounterResult result = client.group.updateGroupCounter(request);
+
App 管理员可以通过该接口删除群计数器。
注意
使用示例:
DeleteGroupCounterRequest request = DeleteGroupCounterRequest.builder()
+ .groupId("MyFirstGroup")
+ .build();
+
+DeleteGroupCounterResult result = client.group.deleteGroupCounter(request);
+
App 管理员可以为直播群设置和取消管理员,当设置管理员时,被设置的账号可以不需要在直播群里,被设置为管理员之后,该账号即使离开直播群再重新进群也仍然是管理员。需要取消管理员身份时,需要调用本接口取消该用户的管理员身份。该功能需旗舰版,并且在 IM 控制台“群功能配置”中开通“直播群在线成员列表”功能。
使用示例:
ModifyAdminRequest request = ModifyAdminRequest.builder()
+ .groupId("MyFirstGroup")
+ .commandType(1)
+ .adminAccount(Arrays.asList("test1", "bingo"))
+ .build();
+
+ModifyAdminResult result = client.group.modifyAdmin(request);
+
App 管理员可以根据群组 ID 获取直播群管理员列表。该功能仅限旗舰版用户在 IM 控制台“群功能配置”中开启“直播群在线成员列表”后方可使用。
使用示例:
GetAdminListRequest request = GetAdminListRequest.builder()
+ .groupId("MyFirstGroup")
+ .build();
+
+GetAdminListResult result = client.group.getAdminList(request);
+
App 管理员可以根据群组 ID 查询一批用户是否在直播群内。该功能需旗舰版,并且在 IM 控制台“群功能配置”中开通“直播群在线成员列表”功能。
使用示例:
CheckMembersRequest request = CheckMembersRequest.builder()
+ .groupId("MyFirstGroup")
+ .memberAccount(Arrays.asList("test1", "bingo"))
+ .build();
+
+CheckMembersResult result = client.group.checkMembers(request);
+
已登录 即时通信 IM 控制台 并创建了应用。创建完成后,可以拿到 sdkAppId
以及 key
。
已创建 App 管理员账号 userId
,也即 identifier
。
说明
“App 管理员”是对 App 具有最高管理权限的角色,可调用 REST API 接口,进行创建/解散群组、发送全员推送消息等操作。每个应用最多支持配置 10 个管理员。
SDK 源码请参见 GitHub。
全员推送,用户运营利器,不仅支持全员发送特定内容,还可根据标签、属性,针对特定用户群体发送个性化内容,如会员活动、区域通知等,助力拉新、转化、促活等各个阶段运营工作的有效进行。
使用示例:
TIMTextMsgElement msg = new TIMTextMsgElement("hi, beauty");
+List<TIMMsgElement> msgBody = Collections.singletonList(msg);
+ImPushRequest request = ImPushRequest.builder()
+ .msgRandom(9312457L)
+ .msgBody(msgBody)
+ .fromAccount("admin")
+ .msgLifeTime(120)
+ .build();
+
+ImPushResult result = client.member.imPush(request);
+
每个应用可以设置自定义的用户属性,最多可以有 10 个。通过本接口可以设置每个属性的名称,设置完成后,即可用于按用户属性推送等。
使用示例:
Map<String, String> attrNames = new HashMap<>(3);
+attrNames.put("0", "sex");
+attrNames.put("1", "city");
+attrNames.put("2", "country");
+ImSetAttrNameRequest request = new ImSetAttrNameRequest(attrNames);
+
+ImSetAttrNameResult result = client.member.imSetAttrName(request);
+
管理员获取应用属性名称。使用前请先 设置应用属性名称 。
使用示例:
ImGetAttrNameRequest request = new ImGetAttrNameRequest();
+
+ImGetAttrNameResult result = client.member.imGetAttrName(request);
+
获取用户属性(必须以管理员账号调用);每次最多只能获取 100 个用户的属性。使用前请先 设置应用属性名称 。
使用示例:
List<String> toAccount = Arrays.asList("test1", "test2");
+ImGetAttrRequest request = new ImGetAttrRequest(toAccount);
+
+ImGetAttrResult result = client.member.imGetAttr(request);
+
管理员给用户设置属性。每次最多只能给 100 个用户设置属性。使用前请先 设置应用属性名称 。
使用示例:
Map<String, Object> attrs = new HashMap<>();
+attrs.put("sex", "attr1");
+attrs.put("city", "attr2");
+UserAttrItem item = new UserAttrItem("test1", attrs);
+List<UserAttrItem> userAttrs = Collections.singletonList(item);
+ImSetAttrRequest request = new ImSetAttrRequest(userAttrs);
+
+ImSetAttrResult result = client.member.imSetAttr(request);
+
管理员给用户删除属性。注意每次最多只能给 100 个用户删除属性。使用前请先 设置应用属性名称 。
使用示例:
Map<String, Object> attrs = new HashMap<>();
+attrs.put("sex", "attr1");
+attrs.put("city", "attr2");
+UserAttrItem item = UserAttrItem.builder()
+ .toAccount("test1")
+ .attrs(attrs)
+ .build();
+List<UserAttrItem> userAttrs = Collections.singletonList(item);
+ImRemoveAttrRequest request = new ImRemoveAttrRequest(userAttrs);
+
+ImRemoveAttrResult result = client.member.imRemoveAttr(request);
+
获取用户标签(必须以管理员账号调用)。每次最多只能获取 100 个用户的标签。
使用示例:
List<String> toAccount = Arrays.asList("test1", "test2");
+ImGetTagRequest request = new ImGetTagRequest(toAccount);
+
+ImGetTagResult result = client.member.imGetTag(request);
+
管理员给用户添加标签。
注意
使用示例:
List<String> tags = Arrays.asList("a", "b");
+UserTagItem item = UserTagItem.builder()
+ .toAccount("test1")
+ .tags(tags)
+ .build();
+List<UserTagItem> userTags = Collections.singletonList(item);
+ImAddTagRequest request = new ImAddTagRequest(userTags);
+
+ImAddTagResult result = client.member.imAddTag(request);
+
管理员给用户删除标签。注意每次最多只能给 100 个用户删除标签。
使用示例:
List<String> tags = Arrays.asList("a", "b");
+UserTagItem item = UserTagItem.builder()
+ .toAccount("test1")
+ .tags(tags)
+ .build();
+List<UserTagItem> userTags = Collections.singletonList(item);
+ImRemoveTagRequest request = new ImRemoveTagRequest(userTags);
+
+ImRemoveTagResult result = client.member.imRemoveTag(request);
+
管理员给用户删除所有标签。注意每次最多只能给 100 个用户删除所有标签。
使用示例:
List<String> toAccount = Arrays.asList("test1", "test2");
+ImRemoveAllTagsRequest request = new ImRemoveAllTagsRequest(toAccount);
+
+ImRemoveAllTagsResult result = client.member.imRemoveAllTags(request);
+
使用示例:
TIMTextMsgElement msg = new TIMTextMsgElement("hello world");
+List<TIMMsgElement> msgBody = Collections.singletonList(msg);
+SendMsgRequest request = SendMsgRequest.builder()
+ .fromAccount("test1")
+ .toAccount("test2")
+ .msgRandom(123L)
+ .msgBody(msgBody)
+ .syncOtherMachine(SyncOtherMachine.YES)
+ .msgTimeStamp(1631934058)
+ .msgLifeTime(604800)
+ .build();
+
+SendMsgResult result = client.message.sendMsg(request);
+
使用示例:
List<String> toAccount = Arrays.asList("test1", "test2");
+TIMTextMsgElement msg = new TIMTextMsgElement("hi bingo");
+List<TIMMsgElement> msgBody = Collections.singletonList(msg);
+BatchSendMsgRequest request = BatchSendMsgRequest
+ .builder()
+ .toAccount(toAccount)
+ .msgRandom(123L)
+ .msgBody(msgBody)
+ .syncOtherMachine(SyncOtherMachine.NO)
+ .msgSeq(28460L)
+ .build();
+
+BatchSendMsgResult result = client.message.batchSendMsg(request);
+
使用示例:
TIMTextMsgElement msg = new TIMTextMsgElement("hello bingo");
+List<TIMMsgElement> msgBody = Collections.singletonList(msg);
+ImportMsgRequest request = ImportMsgRequest.builder()
+ .fromAccount("bingo")
+ .toAccount("test1")
+ .msgRandom(122L)
+ .msgTimeStamp(1557387418)
+ .msgBody(msgBody)
+ .build();
+
+ImportMsgResult result = client.message.importMsg(request);
+
使用示例:
AdminGetRoamMsgRequest request = AdminGetRoamMsgRequest.builder()
+ .fromAccount("test1")
+ .toAccount("test2")
+ .maxCnt(123)
+ .minTime(1631934000)
+ .maxTime(1631934060)
+ .build();
+
+AdminRoamMsgResult result = client.message.getRoamMsg(request);
+
+List<MsgListItem> msgList = result.getMsgList();
+if (msgList != null && msgList.size() > 0) {
+ for (MsgListItem item : msgList) {
+ List<TIMMsgElement> msgBody = item.getMsgBody();
+ if (msgBody != null && msgList.size() > 0) {
+ for (TIMMsgElement msgElement : msgBody) {
+ // 根据 msgType 强转为对应的子类
+ if (Objects.equals(msgElement.getMsgType(), MsgType.TIM_CUSTOM_ELEM)) {
+ TIMCustomMsgElement t = (TIMCustomMsgElement) msgElement;
+ System.out.println(t.getMsgContent().getDesc());
+ } else if (Objects.equals(msgElement.getMsgType(), MsgType.TIM_TEXT_ELEM)) {
+ TIMTextMsgElement t = (TIMTextMsgElement) msgElement;
+ System.out.println(t.getMsgContent().getText());
+ }
+ }
+ }
+ }
+}
+
注意
使用该接口撤回单聊消息后,被撤回的消息不能恢复,请谨慎调用该接口。
使用示例:
AdminMsgWithdrawRequest request = AdminMsgWithdrawRequest.builder()
+ .fromAccount("test1")
+ .toAccount("bingo")
+ .msgKey("31906_833502_1572869830")
+ .build();
+
+AdminMsgWithdrawResult result = client.message.msgWithdraw(request);
+
使用示例:
AdminSetMsgReadRequest request = AdminSetMsgReadRequest.builder()
+ .reportAccount("test1")
+ .peerAccount("test2")
+ .build();
+
+AdminSetMsgReadResult result = client.message.setMsgRead(request);
+
App 后台可以通过该接口查询特定账号的单聊总未读数(包含所有的单聊会话)或者单个单聊会话的未读数。
使用示例:
GetC2cUnreadMsgRequest request = new GetC2cUnreadMsgRequest("test2");
+List<String> peerAccount = Arrays.asList("test1", "bingo");
+request.setPeerAccount(peerAccount);
+
+C2cUnreadMsgNumResult result = client.message.getC2cUnreadMsgNum(request);
+
注意
使用该接口修改消息后,被修改的消息不能恢复,请谨慎调用该接口。
使用示例:
TIMTextMsgElement msg = new TIMTextMsgElement("test modify c2c msg");
+List<TIMMsgElement> msgBody = Collections.singletonList(msg);
+ModifyC2cMsgRequest request = ModifyC2cMsgRequest.builder()
+ .fromAccount("test1")
+ .toAccount("test2")
+ .msgKey("1353691732_123_1653995506")
+ .msgBody(msgBody)
+ .build();
+
+ModifyC2cMsgResult result = client.message.modifyC2cMsg(request);
+
App 管理员和会话成员可以拉取消息扩展,消息扩展为一组自定义的键值对。
注意
使用示例:
GetKeyValuesRequest request = GetKeyValuesRequest.builder()
+ .fromAccount("test1")
+ .toAccount("bingo")
+ .msgKey("1353691732_123_1653995506")
+ .startSeq(1L)
+ .build();
+
+GetKeyValuesResult result = client.message.getKeyValues(request);
+
App 管理员和会话成员可以为单聊普通消息设置消息扩展,消息扩展为一组自定义的键值对。
注意
使用示例:
SetKeyValuesRequest request = SetKeyValuesRequest.builder()
+ .fromAccount("test1")
+ .toAccount("bingo")
+ .msgKey("1353691732_123_1653995506")
+ .build();
+
+SetKeyValuesResult result = client.message.setKeyValues(request);
+
使用示例:
DeleteC2cMsgRambleRequest request = DeleteC2cMsgRambleRequest.builder()
+ .operatorAccount("test1")
+ .peerAccount("test2")
+ .msgKeyList(Collections.singletonList("1353691732_123_1653995506"))
+ .build();
+
+DeleteC2cMsgRambleResult result = client.message.deleteC2cMsgRamble(request);
+
该 API 接口的作用是清空群聊中用户发送的历史消息。
此接口通过打标记实现 SDK 无法拉取的效果,并没有真的执行删除操作,Admin 用户仍然可以通过“拉取群聊历史消息”接口拉取已清空的历史消息。
使用示例:
ClearGroupMsgRequest request = ClearGroupMsgRequest.builder()
+ .groupId("test_group")
+ .msgSeq(123L)
+ .build();
+
+ClearGroupMsgResult result = client.message.clearGroupMsg(request);
+
App 管理员可以通过该接口创建公众号。
使用示例:
CreateOfficialAccountRequest request = new CreateOfficialAccountRequest();
+request.setOwnerAccount("test");
+request.setName("test_official_account");
+
+CreateOfficialAccountResult result = client.officialAccount.createOfficialAccount(request);
+
App 管理员可以通过该接口销毁公众号。
使用示例:
DestroyOfficialAccountRequest request = new DestroyOfficialAccountRequest();
+request.setOfficialAccount("test_official_account_user_id");
+
+DestroyOfficialAccountResult result = client.officialAccount.destroyOfficialAccount(request);
+
App 管理员可以通过该接口修改公众号的相关信息,如公众号的名称、头像、简介等
使用示例:
ModifyOfficialAccountBaseInfoRequest request = new ModifyOfficialAccountBaseInfoRequest();
+request.setOfficialAccount("test_official_account_user_id");
+request.setName("test_official_account2");
+
+ModifyOfficialAccountBaseInfoResult result = client.officialAccount.modifyOfficialAccountBaseInfo(request);
+
App 管理员可以通过该接口获取公众号的相关资料信息。
使用示例:
GetOfficialAccountInfoRequest request = new GetOfficialAccountInfoRequest();
+request.setOfficialAccountIdList(Collections.singletonList(new OfficialAccountItem("test_official_account_user_id")));
+
+GetOfficialAccountInfoResult result = client.officialAccount.getOfficialAccountInfo(request);
+
App 管理员可以通过该接口获取订阅某个公众号的所有用户信息.
使用示例:
GetSubscriberInfoRequest request = new GetSubscriberInfoRequest();
+request.setOfficialAccount("test_official_account_user_id");
+request.setLimit(10);
+request.setNext("");
+
+GetSubscriberInfoResult result = client.officialAccount.getSubscriberInfo(request);
+
App 管理员可以通过该接口使用户订阅某个公众号,成为公众号的订阅成员。
使用示例:
AddSubscriberRequest request = new AddSubscriberRequest();
+request.setOfficialAccount("test_official_account_user_id");
+request.setSubscriberList(Collections.singletonList(new OfficialAccountItem("test_subscriber_id")));
+
+AddSubscriberResult result = client.officialAccount.addSubscriber(request);
+
App 管理员可以通过该接口使用户取消订阅某个公众号,从公众号的订阅成员中移除。
使用示例:
DeleteSubscriberRequest request = new DeleteSubscriberRequest();
+request.setOfficialAccount("test_official_account_user_id");
+request.setSubscriberToDelAccount(Collections.singletonList("test_subscriber_id"));
+
+DeleteSubscriberResult result = client.officialAccount.deleteSubscriber(request);
+
App 管理员可以通过该接口修改订阅者的相关资料信息。
使用示例:
ModifySubscriberInfoRequest request = new ModifySubscriberInfoRequest();
+request.setOfficialAccount("test_official_account_user_id");
+request.setSubscriberAccount("test_subscriber_id");
+request.setCustomString("test_custom_string");
+
+ModifySubscriberInfoResult result = client.officialAccount.modifySubscriberInfo(request);
+
App 管理员可以通过该接口获取用户订阅的所有公众号列表信息。
使用示例:
GetSubscribedOfficialAccountListRequest request = new GetSubscribedOfficialAccountListRequest();
+request.setSubscriberAccount("test_subscriber_id");
+
+GetSubscribedOfficialAccountListResult result = client.officialAccount.getSubscribedOfficialAccountList(request);
+
使用示例:
TIMTextMsgElement msg = new TIMTextMsgElement("hello world");
+List<TIMMsgElement> msgBody = Collections.singletonList(msg);
+SendOfficialAccountMsgRequest request = SendOfficialAccountMsgRequest.builder()
+ .officialAccount("test_official_account_user_id")
+ .random(123)
+ .msgBody(msgBody)
+ .build();
+
+SendOfficialAccountMsgResult result = client.officialAccount.sendOfficialAccountMsg(request);
+
使用示例:
OfficialAccountMsgGetSimpleRequest request = new OfficialAccountMsgGetSimpleRequest();
+request.setOfficialAccount("test_official_account_user_id");
+request.setLastMsgKey("msg_key");
+request.setReqMsgNumber(10);
+request.setWithRecalledMsg(1);
+
+OfficialAccountMsgGetSimpleResult result = client.officialAccount.msgGetSimple(request);
+
使用示例:
OfficialAccountMsgRecallRequest request = new OfficialAccountMsgRecallRequest();
+request.setOfficialAccount("test_official_account_user_id");
+request.setMsgKeyList(Collections.singletonList("msg_key"));
+
+OfficialAccountMsgRecallResult result = client.officialAccount.msgRecall(request);
+
使用示例:
SetNoSpeakingRequest request = SetNoSpeakingRequest.builder()
+ .setAccount("test1")
+ .msgNoSpeakingTime(NoSpeakingTime.NEVER)
+ .groupMsgNoSpeakingTime(NoSpeakingTime.FOREVER)
+ .build();
+
+SetNoSpeakingResult result = client.operation.setNoSpeaking(request);
+
使用示例:
GetNoSpeakingRequest request = new GetNoSpeakingRequest("test1");
+
+GetNoSpeakingResult result = client.operation.getNoSpeaking(request);
+
App 管理员可以通过该接口拉取最近 30 天的运营数据,可拉取的字段见下文可拉取的运营字段。
使用示例:
GetAppInfoRequest request = new GetAppInfoRequest();
+List<String> requestFields = Arrays.asList("ChainIncrease", "ChainDecrease");
+request.setRequestField(requestFields);
+
+GetAppInfoResult result = client.operation.getAppInfo(request);
+
App 管理员可以通过该接口获取 App 中最近 7 天中某天某小时的所有单发或群组消息记录的下载地址。
注意
使用示例:
GetHistoryRequest request = GetHistoryRequest.builder()
+ .chatType(ChatType.C2C)
+ .msgTime("2015120121")
+ .build();
+
+GetHistoryResult result = client.operation.getHistory(request);
+
基于安全等考虑,您可能需要获知服务器的 IP 地址列表,以便进行相关限制。App 管理员可以通过该接口获得 SDK、第三方回调所使用到的服务器 IP 地址列表或 IP 网段信息。
注意
此接口仅支持获取中国大陆地区的所有 IM 接入方式的 IP 地址或 IP 网段信息。
使用示例:
GetIpListRequest request = new GetIpListRequest();
+
+GetIpListResult result = client.op~eration.getIpList(request);
+
本接口用于封禁聊天消息中的富媒体文件。
说明
仅针对富媒体消息中使用 IM SDK 上传的文件有效,为了确保功能正常使用,请将终端 SDK 更新至 4.9.x 版本及以上,Web SDK 更新至 v2.0.0 版本及以上。
使用示例:
ForbidIllegalObjectRequest request = ForbidIllegalObjectRequest.builder()
+ .rawUrl("https://cos.ap-shanghai.myqcloud.com/005f-shanghai-360-shared-01-1256635546/76aa-1400152839/2f3b-2273451635034382/699eb4ee5ffa9aeb70627958766f2927-142072.jpg")
+ .build();
+
+ForbidIllegalObjectResult result = client.operation.forbidIllegalObject(request);
+
本接口用于解封聊天消息中的富媒体文件。
说明
仅针对富媒体消息中使用 IM SDK 上传的文件有效,为了确保功能正常使用,请将终端 SDK 更新至 4.9.x 版本及以上,Web SDK 更新至 v2.0.0 版本及以上。
AllowBannedObjectRequest request = AllowBannedObjectRequest.builder()
+ .rawUrl("https://cos.ap-shanghai.myqcloud.com/005f-shanghai-360-shared-01-1256635546/76aa-1400152839/2f3b-2273451635034382/699eb4ee5ffa9aeb70627958766f2927-142072.jpg")
+ .build();
+
+AllowBannedObjectResult result = client.operation.allowBannedObject(request);
+
本接口用于获取聊天消息中的富媒体文件 FULL_CONTROL 权限的 URL 签名以及文件状态信息,默认有效期 15 分钟。一般 SDK 下发的文件 URL 为普通账号签名,违规封禁后,可以使用 FULL_CONTROL 权限的 URL 签名来查看封禁的资源。
说明
仅针对富媒体消息中使用 IM SDK 上传的文件有效,为了确保功能正常使用,请将终端 SDK 更新至 4.9.x 版本及以上,Web SDK 更新至 v2.0.0 版本及以上。
RawUrlItem item = new RawUrlItem();
+item.setRawUrl("https://cos.ap-shanghai.myqcloud.com/98ec-shanghai-007-privatev2-01-1256635546/0345-1400187352/0612-yyy/9a0f4c42d208ccfb5aa47c29284aefc6.png");
+item.setResourceId(1);
+List<RawUrlItem> rawUrls = Collections.singletonList(item);
+GetCosSigRequest request = GetCosSigRequest.builder()
+ .rawUrls(rawUrls)
+ .build();
+
+GetCosSigResult result = client.operation.getCosSig(request);
+
使用示例:
ProfileItem profileItem = ProfileItem.builder()
+ .tag(TagProfile.IM_NICK)
+ .value("MyNickName")
+ .build();
+List<ProfileItem> profiles = Collections.singletonList(profileItem);
+PortraitSetRequest request = PortraitSetRequest.builder()
+ .fromAccount("test1")
+ .profileItemList(profiles)
+ .build();
+
+PortraitSetResult result = client.profile.portraitSet(request);
+
使用示例:
List<String> tagList = Collections.singletonList(TagProfile.IM_NICK);
+List<String> toAccount = Collections.singletonList("test1");
+PortraitGetRequest request = PortraitGetRequest.builder()
+ .tagList(tagList)
+ .toAccount(toAccount)
+ .build();
+
+PortraitGetResult result = client.profile.portraitGet(request);
+
在项目的 pom.xml
的 dependencies 中引入以下依赖:
<dependency>
+ <groupId>io.github.doocs</groupId>
+ <artifactId>im-server-sdk-java</artifactId>
+ <version>0.4.09</version>
+</dependency>
+
implementation group: 'io.github.doocs', name: 'im-server-sdk-java', version: '0.4.09'
+
在使用腾讯云即时 IM 服务端 REST API 之前, 需要先通过 appId
, userId
, key
获取到一个 ImClient
实例:
// sdk appId
+long appId = 1400554812;
+
+// admin userId
+String userId = "test";
+
+// application key
+String key = "60c6c5925f3ae52c7325ac5a8ec78e44c056d1dd84d54e12ffa39911267a2a70";
+
+// create a default ImClient instance
+ImClient client = ImClient.getInstance(appId, userId, key);
+
+// create a default ImClient instance with custom domain
+ImClient client = ImClient.getInstance(appId, userId, key, Domain.SINGAPORE);
+
+// create a custom ImClient instance
+ClientConfiguration config = new ClientConfiguration();
+config.setExpireTime(7 * 24 * 60 * 60L);
+config.setAutoRenewSig(false);
+ImClient client = ImClient.getInstance(appId, userId, key, config);
+
ClientConfiguration
支持对以下参数进行自定义配置:
字段 | 类型 | 说明 | 默认值 |
---|---|---|---|
maxRetries | int | HTTP 最大重试次数 | 3 |
connectTimeout | long | HTTP 连接超时(毫秒) | 10_000 |
readTimeout | long | HTTP 读超时(毫秒) | 10_000 |
writeTimeout | long | HTTP 写超时(毫秒) | 10_000 |
callTimeout | long | 一个完整的 HTTP 调用的时间限制。这包括解析 DNS、连接、写入请求正文、服务器处理以及读取响应正文。(毫秒) | 30_000 |
expireTime | long | UserSig 签名有效时长(秒) | 86400 |
autoRenewSig | boolean | 是否自动进行 UserSig 签名续期 | true |
userAgent | string | User-Agent | |
connectionPool | object | HTTP 连接池 |
获取到 ImClient
实例后,就可以方便地进行 REST API 调用了。
AccountImportRequest request = AccountImportRequest.builder()
+ .identifier("admin")
+ .faceUrl("https://avatars.githubusercontent.com/u/43716716?s=200&v=4")
+ .nick("doocs")
+ .build();
+
+AccountImportResult result = client.account.accountImport(request);
+
支持分页拉取会话列表。
使用示例:
GetRecentContactListRequest request = GetRecentContactListRequest.builder()
+ .fromAccount("doocs")
+ .timestamp(0)
+ .startIndex(0)
+ .topTimestamp(0)
+ .topStartIndex(0)
+ .assistFlags(AssistFlags.BIT_0)
+ .build();
+
+GetRecentContactListResult result = client.recentContact.recentContactList(request);
+
删除指定会话,支持同步清理漫游消息。
使用示例:
DeleteRecentContactRequest request = DeleteRecentContactRequest.builder()
+ .fromAccount("doocs_1")
+ .type(RecentContactType.C2C)
+ .toAccount("doocs_2")
+ .clearRamble(ClearRamble.YES)
+ .build();
+
+DeleteRecentContactResult result = client.recentContact.deleteRecentContact(request);
+
会话分组标记数据独立于最近联系人,RestAPI 支持会话分组、会话标准标记、会话自定义标记等字段增删改查。会话分组标记最多支持 1000 个会话,而一个用户最多支持 20 个会话分组。本接口支持会话分组数据的创建,仅旗舰版支持会话分组数据操作。
使用示例:
List<GroupContactItem> items = new ArrayList<>();
+GroupContactItem item = new GroupContactItem();
+item.setGroupName("groupName");
+
+List<ContactItem> contactItems = new ArrayList<>();
+ContactItem contactItem = new ContactItem();
+contactItem.setToAccount("ccc");
+contactItem.setToGroupId("group1");
+contactItem.setType(1);
+contactItems.add(contactItem);
+item.setContactItem(contactItems);
+items.add(item);
+CreateContactGroupRequest request = CreateContactGroupRequest.builder()
+ .fromAccount("test1")
+ .groupContactItem(items).build();
+
+CreateContactGroupResult result = client.recentContact.createContactGroup(request);
+
会话分组标记数据独立于最近联系人,RestAPI 支持会话分组、会话标准标记、会话自定义标记等字段增删改查。会话分组标记数据最多支持 1000 个会话。本接口支持会话分组数据的更新,仅旗舰版支持会话分组数据操作。
使用示例:
UpdateGroup updateGroup = UpdateGroup.builder().updateGroupType(1)
+ .newGroupName("hh").oldGroupName("cc").build();
+UpdateContactGroupRequest request = UpdateContactGroupRequest.builder()
+ .updateType(1)
+ .fromAccount("test1")
+ .updateGroup(updateGroup)
+ .build();
+
+UpdateContactGroupResult result = client.recentContact.updateContactGroup(request);
+
本接口支持删除用户的会话分组数据,仅旗舰版支持会话分组数据操作。
使用示例:
List<String> groupName = new ArrayList<>();
+groupName.add("hh");
+DelContactGroupRequest request = DelContactGroupRequest.builder()
+ .groupName(groupName)
+ .fromAccount("test1")
+ .build();
+
+DelContactGroupResult result = client.recentContact.delContactGroup(request);
+
会话分组标记数据独立于最近联系人,RestAPI 支持会话分组、会话标准标记、会话自定义标记等字段增删改查。会话分组标记最多支持 1000 个会话。本接口支持会话标准标记以及会话自定义标记的创建或更新,仅旗舰版支持会话标准标记数据操作,自定义会话标记数据无限制。
使用示例:
List<MarkContactItem> items = new ArrayList<>();
+MarkContactItem item = new MarkContactItem();
+item.setClearMark(Collections.singletonList(1));
+item.setSetMark(Collections.singletonList(2));
+item.setOptType(1);
+items.add(item);
+MarkContactRequest request = MarkContactRequest.builder()
+ .fromAccount("test1")
+ .markItem(items)
+ .build();
+
+MarkContactResult result = client.recentContact.markContact(request);
+
本接口根据指定的会话来查询对应会话分组标记数据。
使用示例:
SearchContactGroupRequest request = new SearchContactGroupRequest();
+request.setFromAccount("test1");
+ContactItem contactItem = new ContactItem();
+contactItem.setType(1);
+contactItem.setToAccount("test2");
+contactItem.setToGroupId("123");
+request.setContactItem(Collections.singletonList(contactItem));
+
+SearchContactGroupResult result = client.recentContact.searchContactGroup(request);
+
本接口支持批量获取用户的会话分组标记数据。
使用示例:
GetContactGroupRequest request = new GetContactGroupRequest();
+request.setFromAccount("test1");
+request.setStartIndex(1);
+
+GetContactGroupResult result = client.recentContact.getContactGroup(request);
+
本接口用于创建一个机器人账号,机器人是一种特殊账号,userid 必须以 @RBT#
开头,创建机器人时可以指定设置昵称、头像和签名。
说明
使用示例:
CreateRobotRequest request = new CreateRobotRequest();
+request.setNick("bingo");
+request.setFaceUrl("https://avatars.githubusercontent.com/u/2784452?v=4");
+request.setSelfSignature("hah");
+request.setUserId("@RBT#1233232");
+
+CreateRobotResult result = client.robot.createRobot(request);
+
本接口用于将一个机器人账号设置为无效,机器人是一种特殊账号,userid 必须以 @RBT#
开头。
说明
使用示例:
DeleteRobotRequest request = DeleteRobotRequest.builder().robotAccount("@RBT#1233232").build();
+
+DeleteRobotResult result = client.robot.deleteRobot(request);
+
本接口用于拉取所有的机器人账号列表,机器人是一种特殊账号,userid 必须以 @RBT#
开头。
使用示例:
GetAllRobotsRequest request = new GetAllRobotsRequest();
+
+GetAllRobotsResult result = client.robot.getAllRobots(request);
+
添加好友,支持批量添加好友。
使用示例:
AddFriendItem addFriendItem = AddFriendItem.builder()
+ .toAccount("test2")
+ .addSource("AddSource_Type_XXXXXXXX")
+ .remark("Mr.A")
+ .groupName("schoolmate")
+ .addWording("Hi")
+ .build();
+List<AddFriendItem> addFriendItemList = Collections.singletonList(addFriendItem);
+FriendAddRequest request = FriendAddRequest.builder()
+ .fromAccount("test1")
+ .addFriendItemList(addFriendItemList)
+ .addType(AddType.BOTH)
+ .forceAddFlags(ForceAddFlags.FORCE)
+ .build();
+
+FriendAddResult result = client.sns.friendAdd(request);
+
使用示例:
ImportFriendItem importFriendItem = ImportFriendItem.builder()
+ .toAccount("test2")
+ .addSource("AddSource_Type_XXXXXXXX")
+ .build();
+List<ImportFriendItem> importFriendItems = Collections.singletonList(importFriendItem);
+FriendImportRequest request = FriendImportRequest.builder()
+ .fromAccount("test1")
+ .importFriendItemList(importFriendItems)
+ .build();
+
+FriendImportResult result = client.sns.friendImport(request);
+
使用示例:
SnsItem snsItem = SnsItem.builder()
+ .tag("Tag_SNS_Custom_testTag")
+ .value(TagSns.IM_ADD_WORDING)
+ .build();
+List<SnsItem> snsItems = Collections.singletonList(snsItem);
+UpdateItem updateItem = UpdateItem.builder()
+ .toAccount("test2")
+ .snsItemList(snsItems)
+ .build();
+List<UpdateItem> updateItems = Collections.singletonList(updateItem);
+FriendUpdateRequest request = FriendUpdateRequest.builder()
+ .fromAccount("test1")
+ .updateItemList(updateItems)
+ .build();
+
+FriendUpdateResult result = client.sns.friendUpdate(request);
+
删除好友,支持单向删除好友和双向删除好友。
使用示例:
List<String> toAccount = Collections.singletonList("test2");
+FriendDeleteRequest request = FriendDeleteRequest.builder()
+ .deleteType(DeleteType.BOTH)
+ .fromAccount("test1")
+ .toAccount(toAccount)
+ .build();
+
+FriendDeleteResult result = client.sns.friendDelete(request);
+
清除指定用户的标配好友数据和自定义好友数据。
使用示例:
FriendDeleteAllRequest request = FriendDeleteAllRequest.builder()
+ .deleteType(DeleteType.BOTH)
+ .fromAccount("test1")
+ .build();
+
+FriendDeleteAllResult result = client.sns.friendDeleteAll(request);
+
支持批量校验好友关系。
使用示例:
List<String> toAccount = Collections.singletonList("test2");
+FriendCheckRequest request = FriendCheckRequest.builder()
+ .fromAccount("test1")
+ .toAccount(toAccount)
+ .checkType(CheckResultType.BOTH)
+ .build();
+
+FriendCheckResult result = client.sns.friendCheck(request);
+
使用示例:
FriendGetRequest request = FriendGetRequest.builder()
+ .fromAccount("test1")
+ .startIndex(0)
+ .standardSequence(0)
+ .customSequence(0)
+ .build();
+
+FriendGetResult result = client.sns.friendGet(request);
+
使用示例:
List<String> toAccount = Collections.singletonList("test2");
+List<String> tagList = Arrays.asList(TagProfile.IM_ADMIN_FORBID_TYPE, TagProfile.IM_ALLOW_TYPE);
+FriendGetListRequest request = FriendGetListRequest.builder()
+ .fromAccount("test1")
+ .toAccount(toAccount)
+ .tagList(tagList)
+ .build();
+
+FriendGetListResult result = client.sns.friendGetList(request);
+
添加黑名单,支持批量添加黑名单。
注意
使用示例:
List<String> toAccount = Collections.singletonList("test2");
+BlackListAddRequest request = BlackListAddRequest.builder()
+ .fromAccount("test1")
+ .toAccount(toAccount)
+ .build();
+
+BlackListAddResult result = client.sns.blackListAdd(request);
+
删除指定黑名单。
使用示例:
List<String> toAccount = Collections.singletonList("test2");
+BlackListDeleteRequest request = BlackListDeleteRequest.builder()
+ .fromAccount("test1")
+ .toAccount(toAccount)
+ .build();
+
+BlackListDeleteResult result = client.sns.blackListDelete(request);
+
支持分页拉取所有黑名单。
使用示例:
BlackListGetRequest request = BlackListGetRequest.builder()
+ .fromAccount("test1")
+ .startIndex(0)
+ .maxLimited(10)
+ .lastSequence(0)
+ .build();
+
+BlackListGetResult result = client.sns.blackListGet(request);
+
支持批量校验黑名单。
使用示例:
List<String> toAccount = Collections.singletonList("test2");
+BlackListCheckRequest request = BlackListCheckRequest.builder()
+ .fromAccount("test1")
+ .toAccount(toAccount)
+ .checkType(BlackCheckResultType.BOTH)
+ .build();
+
+BlackListCheckResult result = client.sns.blackListCheck(request);
+
添加分组,支持批量添加分组,并将指定好友加入到新增分组中。
使用示例:
List<String> groupName = Collections.singletonList("classmate");
+List<String> toAccount = Collections.singletonList("test2");
+GroupAddRequest request = GroupAddRequest.builder()
+ .fromAccount("test1")
+ .groupName(groupName)
+ .toAccount(toAccount)
+ .build();
+
+GroupAddResult result = client.sns.groupAdd(request);
+
删除指定分组。
使用示例:
List<String> groupName = Collections.singletonList("classmate");
+GroupDeleteRequest request = GroupDeleteRequest.builder()
+ .fromAccount("test1")
+ .groupName(groupName)
+ .build();
+
+GroupDeleteResult result = client.sns.groupDelete(request);
+
拉取分组,支持指定分组以及拉取分组下的好友列表。
使用示例:
List<String> groupName = Collections.singletonList("classmate");
+GroupGetRequest request = GroupGetRequest.builder()
+ .fromAccount("test1")
+ .groupName(groupName)
+ .needFriend(NeedFriendType.YES)
+ .build();
+
+GroupGetResult result = client.sns.groupGet(request);
+