Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add new api #174

Merged
merged 13 commits into from
Jan 10, 2024
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ If you're using Maven, just add the following dependency in `pom.xml`.
<dependency>
<groupId>io.github.doocs</groupId>
<artifactId>im-server-sdk-java</artifactId>
<version>0.3.48</version>
<version>0.4.0</version>
</dependency>
```

Expand Down
2 changes: 1 addition & 1 deletion README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<dependency>
<groupId>io.github.doocs</groupId>
<artifactId>im-server-sdk-java</artifactId>
<version>0.3.48</version>
<version>0.4.0</version>
</dependency>
```

Expand Down
1 change: 1 addition & 0 deletions docs/.vuepress/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ module.exports = {
'/guide/operation_2.md',
'/guide/robot.md',
'/guide/audit.md',
'/guide/official_account.md'
],
},
],
Expand Down
2 changes: 2 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,7 @@ features:
details: 创建、删除、拉取机器人等
- title: 内容审核
details: 本地审核、云端审核等
- title: 公众号管理
details: 创建、销毁、修改公众号等
footer: Apache-2.0 Licensed | Copyright © 2021-present Doocs
---
2 changes: 1 addition & 1 deletion docs/guide/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# 介绍

本文档基于腾讯云 IM Server SDK Java <Badge type="tip" text="v0.3.48" vertical="top" /> 编写。
本文档基于腾讯云 IM Server SDK Java <Badge type="tip" text="v0.4.0" vertical="top" /> 编写。

## 前提条件

Expand Down
48 changes: 48 additions & 0 deletions docs/guide/group.md
Original file line number Diff line number Diff line change
Expand Up @@ -1370,6 +1370,7 @@ App 管理员可以通过该接口获取群计数器。
::: warning

- 该功能仅对旗舰版客户开放,需 [购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17182)。
:::

使用示例:

Expand All @@ -1388,6 +1389,7 @@ App 管理员可以通过该接口更新(设置、递增、递减)群计数
::: warning

- 该功能仅对旗舰版客户开放,需 [购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17182)。
:::

使用示例:

Expand All @@ -1413,6 +1415,7 @@ App 管理员可以通过该接口删除群计数器。
::: warning

- 该功能仅对旗舰版客户开放,需 [购买旗舰版套餐包](https://buy.cloud.tencent.com/avc?from=17182)。
:::

使用示例:

Expand All @@ -1423,3 +1426,48 @@ DeleteGroupCounterRequest request = DeleteGroupCounterRequest.builder()

DeleteGroupCounterResult result = client.group.deleteGroupCounter(request);
```

## 设置/取消直播群管理员

App 管理员可以为直播群设置和取消管理员,当设置管理员时,被设置的账号可以不需要在直播群里,被设置为管理员之后,该账号即使离开直播群再重新进群也仍然是管理员。需要取消管理员身份时,需要调用本接口取消该用户的管理员身份。该功能需旗舰版,并且在 IM 控制台“群功能配置”中开通“直播群在线成员列表”功能。

使用示例:

```java
ModifyAdminRequest request = ModifyAdminRequest.builder()
.groupId("MyFirstGroup")
.commandType(1)
.adminAccount(Arrays.asList("test1", "bingo"))
.build();

ModifyAdminResult result = client.group.modifyAdmin(request);
```

## 获取直播群管理员列表

App 管理员可以根据群组 ID 获取直播群管理员列表。该功能仅限旗舰版用户在 IM 控制台“群功能配置”中开启“直播群在线成员列表”后方可使用。

使用示例:

```java
GetAdminListRequest request = GetAdminListRequest.builder()
.groupId("MyFirstGroup")
.build();

GetAdminListResult result = client.group.getAdminList(request);
```

## 查询用户是否在直播群内

App 管理员可以根据群组 ID 查询一批用户是否在直播群内。该功能需旗舰版,并且在 IM 控制台“群功能配置”中开通“直播群在线成员列表”功能。

使用示例:

```java
CheckMembersRequest request = CheckMembersRequest.builder()
.groupId("MyFirstGroup")
.memberAccount(Arrays.asList("test1", "bingo"))
.build();

CheckMembersResult result = client.group.checkMembers(request);
```
35 changes: 35 additions & 0 deletions docs/guide/message.md
Original file line number Diff line number Diff line change
Expand Up @@ -255,3 +255,38 @@ SetKeyValuesRequest request = SetKeyValuesRequest.builder()

SetKeyValuesResult result = client.message.setKeyValues(request);
```

## 单向删除单聊历史消息

- App 管理员调用该接口单向删除一个单聊会话的多条消息。
- 只能以消息的发送方或接收方的身份去删除单聊会话的历史消息。
- 只能单向删除(以会话其中一方的身份去删除某条消息后,自己看不到这条消息,会话的对方仍然可以看到这条消息)

使用示例:

```java
DeleteC2cMsgRambleRequest request = DeleteC2cMsgRambleRequest.builder()
.operatorAccount("test1")
.peerAccount("test2")
.msgKeyList(Collections.singletonList("1353691732_123_1653995506"))
.build();

DeleteC2cMsgRambleResult result = client.message.deleteC2cMsgRamble(request);
```

## 清空群聊历史消息

该 API 接口的作用是清空群聊中用户发送的历史消息。

此接口通过打标记实现 SDK 无法拉取的效果,并没有真的执行删除操作,Admin 用户仍然可以通过“拉取群聊历史消息”接口拉取已清空的历史消息。

使用示例:

```java
ClearGroupMsgRequest request = ClearGroupMsgRequest.builder()
.groupId("test_group")
.msgSeq(123L)
.build();

ClearGroupMsgResult result = client.message.clearGroupMsg(request);
```
187 changes: 187 additions & 0 deletions docs/guide/official_account.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,187 @@
# 公众号管理

## 创建公众号

App 管理员可以通过该接口创建公众号。

使用示例:

```java
CreateOfficialAccountRequest request = new CreateOfficialAccountRequest();
request.setOwnerAccount("test");
request.setName("test_official_account");

CreateOfficialAccountResult result = client.officialAccount.createOfficialAccount(request);
```

## 销毁公众号

App 管理员可以通过该接口销毁公众号。

使用示例:

```java
DestroyOfficialAccountRequest request = new DestroyOfficialAccountRequest();
request.setOfficialAccount("test_official_account_user_id");

DestroyOfficialAccountResult result = client.officialAccount.destroyOfficialAccount(request);
```

## 修改公众号资料

App 管理员可以通过该接口修改公众号的相关信息,如公众号的名称、头像、简介等

使用示例:

```java
ModifyOfficialAccountBaseInfoRequest request = new ModifyOfficialAccountBaseInfoRequest();
request.setOfficialAccount("test_official_account_user_id");
request.setName("test_official_account2");

ModifyOfficialAccountBaseInfoResult result = client.officialAccount.modifyOfficialAccountBaseInfo(request);
```

## 获取公众号详细资料

App 管理员可以通过该接口获取公众号的相关资料信息。

使用示例:

```java
GetOfficialAccountInfoRequest request = new GetOfficialAccountInfoRequest();
request.setOfficialAccountIdList(Collections.singletonList(new OfficialAccountItem("test_official_account_user_id")));

GetOfficialAccountInfoResult result = client.officialAccount.getOfficialAccountInfo(request);
```

## 获取公众号的订阅成员资料

App 管理员可以通过该接口获取订阅某个公众号的所有用户信息.

使用示例:

```java
GetSubscriberInfoRequest request = new GetSubscriberInfoRequest();
request.setOfficialAccount("test_official_account_user_id");
request.setLimit(10);
request.setNext("");

GetSubscriberInfoResult result = client.officialAccount.getSubscriberInfo(request);
```

## 添加订阅者

App 管理员可以通过该接口使用户订阅某个公众号,成为公众号的订阅成员。

使用示例:

```java
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 管理员可以通过该接口使用户取消订阅某个公众号,从公众号的订阅成员中移除。

使用示例:

```java
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 管理员可以通过该接口修改订阅者的相关资料信息。

使用示例:

```java
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 管理员可以通过该接口获取用户订阅的所有公众号列表信息。

使用示例:

```java
GetSubscribedOfficialAccountListRequest request = new GetSubscribedOfficialAccountListRequest();
request.setSubscriberAccount("test_subscriber_id");

GetSubscribedOfficialAccountListResult result = client.officialAccount.getSubscribedOfficialAccountList(request);
```

## 公众号用户发送广播消息

- App 管理员可以通过该接口向关注公众号的所有订阅者发送普通消息。
- 单个公众号的发送频率上限为1条/秒,每小时最多可发布2条广播消息。
- 如果5分钟内两条消息的内容相同,后面的消息将被当做重复消息而丢弃。


使用示例:

```java
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);
```

## 拉取公众号用户历史消息

- 即时通信 IM 的公众号消息是按 Seq 排序的,按照 server 收到公众号消息的顺序分配 Seq,先发的公众号消息 Seq 小,后发的 Seq 大。
- 即时通信 IM 会给每条公众号消息生成一个 MsgKey,格式为 "Seq_1_ServerTime"。
- 如果用户想拉取一个公众号的全量消息,需要填写消息的 LastMsgKey,首次拉取时不用填拉取 LastMsgKey,Server 会自动返回最新的消息,以后拉取时拉取 LastMsgKey 填上次请求返回 LastMsgKey。
- 如果返回消息的 IsPlaceMsg 为1,表示这个 Seq 的消息或者过期、或者存储失败、或者被删除了。


使用示例:

```java
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);
```

## 撤回公众号消息

- 管理员撤回公众号消息。
- 该接口可以撤回所有漫游有效期内的公众号消息,包括客户端发出的公众号消息,由 REST API 接口发出的公众号消息。
- 若需要撤回由客户端发出的公众号消息,您可以开通 发公众号消息之后回调 ,通过该回调接口记录每条公众号消息的 MsgKey,然后填在本接口的 MsgKeyList 参数里进行撤回。您也可以通过 拉取公众号用户历史消息 查询出待撤回的公众号消息的相关信息后,使用本接口进行撤回。
- 若需要撤回由 REST API 公众号用户发送广播消息 接口发出的公众号消息,需要记录这些接口回包里的 MsgKey 字段以进行撤回。
- 调用该接口撤回消息后,该条消息的接收方的客户端的本地缓存都会被撤回。
- 该接口可撤回的公众号消息没有时间限制,即可以撤回任何时间的公众号消息,但是公众号消息的漫游时间需要在有效期内。


使用示例:

```java
OfficialAccountMsgRecallRequest request = new OfficialAccountMsgRecallRequest();
request.setOfficialAccount("test_official_account_user_id");
request.setMsgKeyList(Collections.singletonList("msg_key"));

OfficialAccountMsgRecallResult result = client.officialAccount.msgRecall(request);
```
4 changes: 2 additions & 2 deletions docs/guide/quickstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@
<dependency>
<groupId>io.github.doocs</groupId>
<artifactId>im-server-sdk-java</artifactId>
<version>0.3.48</version>
<version>0.4.0</version>
</dependency>
```

### Gradle

```gradle
implementation group: 'io.github.doocs', name: 'im-server-sdk-java', version: '0.3.48'
implementation group: 'io.github.doocs', name: 'im-server-sdk-java', version: '0.4.0'
```

### 下载 JAR
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "qcloud-im-server-sdk-java",
"version": "0.3.48",
"version": "0.4.0",
"description": "腾讯云 IM 服务端 SDK API 文档 Java 版",
"main": "index.js",
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>io.github.doocs</groupId>
<artifactId>im-server-sdk-java</artifactId>
<version>0.3.48</version>
<version>0.4.0</version>
<packaging>jar</packaging>

<name>qcloud-im-server-sdk-java</name>
Expand Down
Loading