Skip to content

Commit

Permalink
Merge pull request #1031 from haoxiuwen/doc-v2
Browse files Browse the repository at this point in the history
Modify IM Docs
  • Loading branch information
haoxiuwen authored Nov 8, 2024
2 parents 1f64b42 + f07192b commit 9a68cea
Show file tree
Hide file tree
Showing 9 changed files with 205 additions and 163 deletions.
1 change: 1 addition & 0 deletions docs/.vuepress/sidebar/document.ts
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,7 @@ const documentSidebar = [
{ text: '撤回消息和单向删除会话', link: 'message_recall.html' },
{ text: '单向删除漫游消息', link: 'message_delete.html' },
{ text: '修改文本或自定义消息', link: 'message_modify_text_custom.html' },
{ text: '获取离线消息数据', link: 'message_offline.html' },
{ text: '导入消息', link: 'message_import.html' }
]
},
Expand Down
155 changes: 0 additions & 155 deletions docs/document/server-side/account_system.md
Original file line number Diff line number Diff line change
Expand Up @@ -1796,161 +1796,6 @@ curl -L -X GET 'https://XXXX/XXXX/XXXX/mutes?pageNum=1&pageSize=10' \

关于其他错误,你可以参考 [错误码](#错误码) 了解可能的原因。

## 获取用户离线消息数据

### 获取用户离线消息数量

获取环信 IM 用户的离线消息数量。

#### HTTP 请求

```http
GET https://{host}/{org_name}/{app_name}/users/{owner_username}/offline_msg_count
```

##### 路径参数

| 参数 | 类型 | 是否必需 | 描述 |
| :--------------- | :----- | :------- | :---------------------------- |
| `owner_username` | String || 要获取离线消息数量的用户 ID。 |

其他参数及说明详见 [公共参数](#公共参数)

##### 请求 header

| 参数 | 类型 | 是否必需 | 描述 |
| :-------------- | :----- | :------- | :-------------------------- |
| `Accept` | String || 内容类型。请填 `application/json`|
| `Authorization` | String || App 管理员的鉴权 token,格式为 `Bearer YourAppToken`,其中 `Bearer` 为固定字符,后面为英文空格和获取到的 app token。 |

#### HTTP 响应

##### 响应 body

如果返回的 HTTP 状态码为 `200`,表示请求成功,响应包体中包含以下字段:

| 字段 | 类型 | 描述 |
| :----- | :--- | :------------------------------------------------------------------------------------ |
| `data` | JSON | 用户的离线消息数量。数据格式为:"用户 ID": "当前离线消息的数量",例如,"user1": "0"。 |

其他字段及说明详见 [公共参数](#公共参数)

如果返回的 HTTP 状态码非 `200`,表示请求失败。你可以参考 [错误码](#错误码) 了解可能的原因。

#### 示例

##### 请求示例

```shell
# 将 <YourAppToken> 替换为你在服务端生成的 App Token

curl -X GET -H 'Accept: application/json' -H 'Authorization: Bearer <YourAppToken>' 'https://XXXX/XXXX/XXXX/users/user1/offline_msg_count'
```

##### 响应示例

```json
{
"action": "get",
"uri": "https://XXXX/XXXX/XXXX/users/user1/offline_msg_count",
"entities": [],
"data": {
"user1": 0
},
"timestamp": 1542601518137,
"duration": 3,
"count": 0
}
```

#### 错误码

如果返回的 HTTP 状态码非 `200`,表示请求失败,可能提示以下错误码:

| HTTP 状态码 | 错误类型 | 错误提示 | 可能原因 | 处理建议 |
| :------ | :--------- | :----------- | :--------- | :--------- |
| 401 | unauthorized | Unable to authenticate (OAuth) | token 不合法,可能过期或 token 错误。 | 使用新的 token 访问。 |
| 404 | organization_application_not_found | Could not find application for XXX/XXX from URI: XXX/XXX/users | App key 不存在。 | 检查 `orgName``appName` 是否正确或[创建应用](/product/enable_and_configure_IM.html#创建应用)|

关于其他错误,你可以参考 [错误码](#错误码) 了解可能的原因。

### 获取指定离线消息的投递状态

获取用户的指定离线消息的投递状态,即查看该消息是否已投递。

#### HTTP 请求

```http
GET https://{host}/{org_name}/{app_name}/users/{username}/offline_msg_status/{msg_id}
```

##### 路径参数

| 参数 | 类型 | 是否必需 | 描述 |
| :--------- | :----- | :------- | :---------------------------- |
| `username` | String || 要获取离线消息状态的用户 ID。 |
| `msg_id` | String || 要查看状态的离线消息 ID。 |

其他参数及说明详见 [公共参数](#公共参数)

##### 请求 header

| 参数 | 类型 | 是否必需 | 描述 |
| :-------------- | :----- | :------- | :-------------------- |
| `Accept` | String || 内容类型。请填 `application/json`|
| `Authorization` | String || App 管理员的鉴权 token,格式为 `Bearer YourAppToken`,其中 `Bearer` 为固定字符,后面为英文空格和获取到的 app token。 |

#### HTTP 响应

##### 响应 body

如果返回的 HTTP 状态码为 `200`,表示请求成功,响应包体中的字段如下:

| 字段 | 类型 | 描述 |
| :----- | :--- | :--------------- |
| `data` | JSON | 指定离线消息的投递状态。数据格式为 "消息 ID": "投递状态"。消息的投递状态有两种:<br/> - `delivered`:已投递;<br/> - `undelivered`:未投递。 |

其他字段及说明详见 [公共参数](#公共参数)

如果返回的 HTTP 状态码非 `200`,表示请求失败。你可以参考 [错误码](#错误码) 了解可能的原因。

#### 示例

##### 请求示例

```shell
# 将 <YourAppToken> 替换为你在服务端生成的 App Token

curl -X GET -H 'Accept: application/json' -H 'Authorization: Bearer <YourAppToken>' 'https://XXXX/XXXX/XXXX/users/user1/offline_msg_status/123'
```

##### 响应示例

```json
{
"action": "get",
"uri": "https://XXXX/XXXX/XXXX/users/user1/offline_msg_status/123",
"entities": [],
"data": {
"123": "delivered"
},
"timestamp": 1542601830084,
"duration": 5,
"count": 0
}
```

#### 错误码

如果返回的 HTTP 状态码非 `200`,表示请求失败,可能提示以下错误码:

| HTTP 状态码 | 错误类型 | 错误提示 | 可能原因 | 处理建议 |
| :---------- | :------------ | :-------------- | :------------------| :----------- |
| 401 | unauthorized | Unable to authenticate (OAuth) | token 不合法,可能过期或 token 错误。 | 使用新的 token 访问。 |
| 404 | organization_application_not_found | Could not find application for XXX/XXX from URI: XXX/XXX/users | App key 不存在。 | 检查 `orgName``appName` 是否正确或[创建应用](/product/enable_and_configure_IM.html#创建应用)|

关于其他错误,你可以参考 [错误码](#错误码) 了解可能的原因。




Expand Down
196 changes: 196 additions & 0 deletions docs/document/server-side/message_offline.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,196 @@
# 获取用户离线消息数据

你可以获取单个用户的离线消息数量,以及查看该用户单个离线消息的投递状态。

## 公共参数

以下表格列举了环信 IM 的 RESTful 接口的公共请求参数和响应参数:

### 请求参数

| 参数 | 类型 | 是否必需 | 描述 |
| :--------- | :----- | :------- | :------------------------- |
| `host` | String || 环信即时通讯 IM 分配的用于访问 RESTful API 的域名。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)|
| `org_name` | String || 环信即时通讯 IM 为每个公司(组织)分配的唯一标识。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)|
| `app_name` | String || 你在环信即时通讯云控制台创建应用时填入的应用名称。详见 [获取环信即时通讯 IM 的信息](enable_and_configure_IM.html#获取环信即时通讯-im-的信息)|

### 响应参数

| 参数 | 类型 | 描述 |
| :------------------- | :----- | :-------------------------------------------- |
| `action` | String | 请求方法。 |
| `uri` | String | 请求 URL。 |
| `path` | String | 请求路径,属于请求 URL 的一部分,开发者无需关注。 |
| `entities` | JSON Array | 响应实体。 |
| `data` | JSON | 实际获取的数据详情。 |
| `timestamp` | Long | HTTP 响应的 Unix 时间戳,单位为毫秒。 |
| `duration` | Long | 从发送 HTTP 请求到响应的时长, 单位为毫秒。 |

## 前提条件

要调用环信即时通讯 RESTful API,请确保满足以下要求:

- 已在环信即时通讯云控制台 [开通配置环信即时通讯 IM 服务](enable_and_configure_IM.html)
- 已从服务端获取 app token,详见 [使用 App Token 鉴权](easemob_app_token.html)
- 了解环信 IM API 的调用频率限制,详见 [接口频率限制](limitationapi.html)

## 认证方式

环信即时通讯 REST API 要求 Bearer HTTP 认证。每次发送 HTTP 请求时,都必须在请求头部填入如下 `Authorization` 字段:

`Authorization: Bearer YourAppToken`

为提高项目的安全性,环信使用 Token(动态密钥)对即将登录即时通讯系统的用户进行鉴权。本文介绍的即时通讯所有 REST API 均需使用 App Token 的鉴权方式,详见 [使用 App Token 鉴权](easemob_app_token.html)

## 获取用户离线消息数量

获取环信 IM 用户的离线消息数量。

#### HTTP 请求

```http
GET https://{host}/{org_name}/{app_name}/users/{owner_username}/offline_msg_count
```

##### 路径参数

| 参数 | 类型 | 是否必需 | 描述 |
| :--------------- | :----- | :------- | :---------------------------- |
| `owner_username` | String || 要获取离线消息数量的用户 ID。 |

其他参数及说明详见 [公共参数](#公共参数)

##### 请求 header

| 参数 | 类型 | 是否必需 | 描述 |
| :-------------- | :----- | :------- | :-------------------------- |
| `Accept` | String || 内容类型。请填 `application/json`|
| `Authorization` | String || App 管理员的鉴权 token,格式为 `Bearer YourAppToken`,其中 `Bearer` 为固定字符,后面为英文空格和获取到的 app token。 |

#### HTTP 响应

##### 响应 body

如果返回的 HTTP 状态码为 `200`,表示请求成功,响应包体中包含以下字段:

| 字段 | 类型 | 描述 |
| :----- | :--- | :------------------------------------------------------------------------------------ |
| `data` | JSON | 用户的离线消息数量。数据格式为:"用户 ID": "当前离线消息的数量",例如,"user1": "0"。 |

其他字段及说明详见 [公共参数](#公共参数)

如果返回的 HTTP 状态码非 `200`,表示请求失败。你可以参考 [错误码](#错误码) 了解可能的原因。

#### 示例

##### 请求示例

```shell
# 将 <YourAppToken> 替换为你在服务端生成的 App Token

curl -X GET -H 'Accept: application/json' -H 'Authorization: Bearer <YourAppToken>' 'https://XXXX/XXXX/XXXX/users/user1/offline_msg_count'
```

##### 响应示例

```json
{
"action": "get",
"uri": "https://XXXX/XXXX/XXXX/users/user1/offline_msg_count",
"entities": [],
"data": {
"user1": 0
},
"timestamp": 1542601518137,
"duration": 3,
"count": 0
}
```

#### 错误码

如果返回的 HTTP 状态码非 `200`,表示请求失败,可能提示以下错误码:

| HTTP 状态码 | 错误类型 | 错误提示 | 可能原因 | 处理建议 |
| :------ | :--------- | :----------- | :--------- | :--------- |
| 401 | unauthorized | Unable to authenticate (OAuth) | token 不合法,可能过期或 token 错误。 | 使用新的 token 访问。 |
| 404 | organization_application_not_found | Could not find application for XXX/XXX from URI: XXX/XXX/users | App key 不存在。 | 检查 `orgName``appName` 是否正确或[创建应用](/product/enable_and_configure_IM.html#创建应用)|

关于其他错误,你可以参考 [错误码](#错误码) 了解可能的原因。

### 获取指定离线消息的投递状态

获取用户的指定离线消息的投递状态,即查看该消息是否已投递。

#### HTTP 请求

```http
GET https://{host}/{org_name}/{app_name}/users/{username}/offline_msg_status/{msg_id}
```

##### 路径参数

| 参数 | 类型 | 是否必需 | 描述 |
| :--------- | :----- | :------- | :---------------------------- |
| `username` | String || 要获取离线消息状态的用户 ID。 |
| `msg_id` | String || 要查看状态的离线消息 ID。 |

其他参数及说明详见 [公共参数](#公共参数)

##### 请求 header

| 参数 | 类型 | 是否必需 | 描述 |
| :-------------- | :----- | :------- | :-------------------- |
| `Accept` | String || 内容类型。请填 `application/json`|
| `Authorization` | String || App 管理员的鉴权 token,格式为 `Bearer YourAppToken`,其中 `Bearer` 为固定字符,后面为英文空格和获取到的 app token。 |

#### HTTP 响应

##### 响应 body

如果返回的 HTTP 状态码为 `200`,表示请求成功,响应包体中的字段如下:

| 字段 | 类型 | 描述 |
| :----- | :--- | :--------------- |
| `data` | JSON | 指定离线消息的投递状态。数据格式为 "消息 ID": "投递状态"。消息的投递状态有两种:<br/> - `delivered`:已投递;<br/> - `undelivered`:未投递。 |

其他字段及说明详见 [公共参数](#公共参数)

如果返回的 HTTP 状态码非 `200`,表示请求失败。你可以参考 [错误码](#错误码) 了解可能的原因。

#### 示例

##### 请求示例

```shell
# 将 <YourAppToken> 替换为你在服务端生成的 App Token

curl -X GET -H 'Accept: application/json' -H 'Authorization: Bearer <YourAppToken>' 'https://XXXX/XXXX/XXXX/users/user1/offline_msg_status/123'
```

##### 响应示例

```json
{
"action": "get",
"uri": "https://XXXX/XXXX/XXXX/users/user1/offline_msg_status/123",
"entities": [],
"data": {
"123": "delivered"
},
"timestamp": 1542601830084,
"duration": 5,
"count": 0
}
```

#### 错误码

如果返回的 HTTP 状态码非 `200`,表示请求失败,可能提示以下错误码:

| HTTP 状态码 | 错误类型 | 错误提示 | 可能原因 | 处理建议 |
| :---------- | :------------ | :-------------- | :------------------| :----------- |
| 401 | unauthorized | Unable to authenticate (OAuth) | token 不合法,可能过期或 token 错误。 | 使用新的 token 访问。 |
| 404 | organization_application_not_found | Could not find application for XXX/XXX from URI: XXX/XXX/users | App key 不存在。 | 检查 `orgName``appName` 是否正确或[创建应用](/product/enable_and_configure_IM.html#创建应用)|

关于其他错误,你可以参考 [错误码](#错误码) 了解可能的原因。
6 changes: 3 additions & 3 deletions docs/uikit/chatuikit/flutter/chatuikit_advancedusage.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,9 +137,9 @@ Widget build(BuildContext context) {

```dart
ChatUIKitTimeFormatter.instance.formatterHandler = (context, type, time) {
if (type == ChatUIKitTimeType.conversation) { // 会话列表使用的时间,需要根据 time 返回完整时间内容,如 ’xx月xx日 xx:xx‘
if (type == ChatUIKitTimeType.conversation) { // 会话列表使用的时间,需要根据 time 返回时间,如 ’xx月xx日 xx:xx‘
return '...';
} else if (type == ChatUIKitTimeType.message) { // 消息使用的时间格式, 需要根据 time 返回完整时间内容,如 ’xx月xx日 xx:xx‘
} else if (type == ChatUIKitTimeType.message) { // 消息使用的时间格式, 需要根据 time 返回时间,如 ’xx月xx日 xx:xx‘
return '...';
}
return null; // 如果返回 null,则表示不做更改。
Expand Down Expand Up @@ -501,6 +501,6 @@ itemBuilder: (context, model) {
);
},
);
},
}
```

2 changes: 1 addition & 1 deletion docs/uikit/chatuikit/flutter/chatuikit_contactlist.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ Widget build(BuildContext context) {
| final ChatUIKitAppBar? appBar | 自定义消息页面 AppBar。如不设置会使用默认的。|
| final bool enableAppBar | 是否开启 AppBar。默认开启,关闭后将不再显示 AppBar,传入的 AppBar 也不再生效。|
| final String? title | 默认 AppBar 展示的标题信息。如果使用自定义了 AppBar 或者 `enableAppBar = false`, 则不生效。|
| final void Function(List&lt;ContactItemModel&gt; data)? onSearchTap | 联系人列表搜索点击事件回调。点击后会把当前所有的恋人回调出来,如果不设置会有默认实现。|
| final void Function(List&lt;ContactItemModel&gt; data)? onSearchTap | 联系人列表搜索点击事件回调。点击后会把当前所有的联系人回调出来,如果不设置会有默认实现。|
| final bool enableSearchBar | 是否显示联系人搜索框,默认为 `true`|
| final String? searchHideText | 搜索框中默认展示的文字内容。|
| final List&lt;ChatUIKitListViewMoreItem&gt;? beforeItems | 展示在联系人列表前面的 widget,设置后将不再显示好友申请和群组列表的入口。|
Expand Down
Loading

0 comments on commit 9a68cea

Please sign in to comment.