Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
201 changes: 201 additions & 0 deletions Product Input/agora_chat_glossary.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,201 @@
## 即时通讯 IM SDK

即时通讯 IM SDK 是声网提供的用于实现即时通讯,比如:单聊、群聊、聊天室的 SDK。

## 即时通讯 UIKit

UIKit 是即时通讯 IM SDK 的一个开源 UI 组件,提供应用内聊天的常用页面和 UI 组件,帮助开发者快速构建应用的 UI。

## 即时通讯 CallKit

CallKit 是一套基于声网的实时通讯和信令服务开发的开源音视频 UI 库,帮助开发者快速构建音视频通话功能。

## 声网控制台

声网提供给开发者管理声网各项服务的工具。控制台提供直观的界面,方便开发者在使用声网各项服务时进行充值、查询、管理等操作。详见[开始使用声网平台](https://docs.agora.io/cn/Agora%20Platform/get_appid_token?platform=All%20Platforms)。

## Demo

即时通讯 IM 示例开源项目,目前支持 Android、iOS 和 Web 平台。

## 会话和消息

### 会话

会话是一个单聊、群聊、聊天室或者子区所有消息的集合。用户需在会话中发送消息或查看历史消息或清空历史消息等操作。

### 会话列表

会话列表是指会话依照一定顺序排列的列表,会话的排列顺序依赖于会话中最近一条消息的接收时间等因素。

### 广播消息 现在还有这个吗?

广播消息是指通过 RESTful API 对应用内的所有用户发送消息。当用户离线时,消息会自动转换为系统离线推送。

### 离线消息

当接收方不在线时,即时通讯 IM 服务器会暂时保存消息,用户上线时,会接收到服务器保存的离线消息。不同套餐版本的离线消息保存时长不同。单聊和群聊支持离线消息,聊天室不支持离线消息。

### 历史消息记录

即时通讯 IM 服务器会保存历史消息记录以供查询。开发者可以通过 RESTful API 下载发送的历史消息的记录的压缩包文件。

### 漫游消息

即时通讯 IM 服务器会保存用户的聊天记录,用户在其中一端发送的消息会同步到所有其他客户端,此类消息称为漫游消息。消息漫游功能确保用户在切换设备时保持一致的会话场景。

### 文本消息

消息内容是普通文本,其中可以包括超链接,客户端收到消息后存入数据库、计入未读消息数。表情消息为开发者自定义。实质上是发文本消息。接收方收到文本消息后,首先查询文本消息是否是表情消息,如果是,则显示该文本消息为对应的表情图片。

### 图片消息

图片消息内容属于附件类型消息,内容图片 URL 地址、尺寸、图片大小等信息。最大支持 10 MB。

### 位置消息

消息内容为地理位置标题、经度和纬度信息。

### 语音消息

语音数据属于附件类型,需要提供时长信息,以秒为单位。最大支持 10 MB。

### 视频消息

消息内容为视频文件的 URL 地址、时长、大小、格式等信息,默认支持 10 MB。

### 文件消息

消息内容为文件的 URL 地址、大小、格式等信息,格式不限,默认支持 10 MB。

### 透传消息

透传消息可视为一条指令,通过发送这条指令给对方,通知对方要执行的操作,对方收到消息可自定义处理。透传消息不会存入本地数据库中,在 UI 上不显示,也不计入未读消息。具体功能可以根据自身业务需求自定义,例如实现头像或昵称的更新等。

### 消息自定义扩展

当基础的消息类型不满足需求时,可以使用消息自定义扩展增强基础消息类型,例如消息中需要携带被回复的消息内容等场景。

使用扩展后,消息大小不能超过原类型消息的大小。消息自定义扩展作为消息内容会存入本地数据库。

### 自定义消息

发者自定义的消息类型,例如红包消息、石头剪刀布等形式的消息。

### 消息回调

消息回调,即聊天服务器会在事件发生之前或之后,向客户的应用服务器发送请求,应用服务器可据此进行必要的数据同步,或者根据业务需求干预事件的后续处理流程。

### 消息云存储

将用户发送的单聊、群聊、聊天室消息存储到聊天服务器,方便用户在更换设备或删除本地消息后,通过服务端获取历史消息。消息存储时间,详见各套餐版本的[消息存储时长](./agora_chat_limitation#消息存储时长)。

## 用户相关

### 用户 ID

用户 ID 即用户名,是 App Key 内用户的唯一标识,不同于即时通讯系统服务器为用户创建的 UUID。

### UUID

即时通讯服务器为 App Key 内用户创建的唯一 ID,不同于用户 ID。

### 用户属性

用户属性指用户的信息,如用户昵称、头像、邮箱、电话、性别、签名、生日等。例如,在招聘场景下,利用用户属性功能,可以存储性别、邮箱、用户类型(面试者)、职位类型(Web 研发)等。当查看用户信息时,可以直接查询服务器存储的用户属性信息。

### 离线

离线是指用户成功登出即时通讯 IM 系统或与即时通讯 IM 系统断开连接后的状态。用户登出即时通讯 IM 系统之后,无法发送和接受消息,在下次登录后可以接收到离线消息。

### 封禁用户

禁止用户使用即时通讯 IM 服务。封禁后,用户无法连接即时通讯 IM 服务器。

### 用户黑名单

用户将不会接收黑名单中用户发送的消息。

## 单聊

单聊即一对一聊天,支持全类型消息。参与聊天的双方可以是好友也可以是陌生人。

## 群组

群组是支持多人沟通的即时通讯系统,成员关系相对稳定。所有群成员可在群中收发送消息。当群成员离线时,可以收到推送消息。群组分为公开群和私有群,公开群可以被搜索到,非群成员可以加入;私有群不能被搜索到,需要群主或群管理员添加用户进入。群组成员支持多种角色:群主、群管理员、群成员。群组提供丰富的管理能力,例如,群组禁言、黑名单和白名单等。

### 群主

群主即群组的创建者,在群中拥有最高权限,可以指定管理员、解散群组、更改群组信息以及对群组成员进行管理。

群主也可以将群主权限转移给群组其他成员。

### 群管理员

由群主授权,协助进行管理,拥有一定管理权限。可以对群组成员进行管理。

### 群成员

群组的普通成员,可以收发消息和查看群组描述信息,不具备群组管理权限。

### 群组黑名单

群主和管理员可以将群组成员加入黑名单,加入群黑名单的用户不能在群中发送消息。

### 群组白名单

群主和管理员可以将群组成员加入白名单。群组开启全局禁言时,只有白名单中的用户可以在群组中发送消息。

## 聊天室

聊天室是支持多人加入的组织。聊天室中的成员没有固定关系,用户离线后,超过 2 分钟会自动退出聊天室。聊天室成员在离线后,不会收到推送消息。聊天室可以应用于直播、消息广播等。

### 聊天室黑名单

聊天室创建者和管理员可以将聊天室成员加入黑名单,被加入聊天室黑名单的用户不能在聊天室中发送消息。

### 聊天室白名单

聊天室创建者和管理员可以将聊天室成员加入白名单,聊天室开启全局禁言时,只有白名单中的用户可以在聊天室中发送消息。

### 聊天室创建者

聊天室的创建者,在聊天室中拥有最高权限。可以指定管理员、解散聊天室、更改聊天室信息、对聊天室成员进行管理。

### 聊天室管理员

由聊天室所有者授权,协助进行管理,拥有一定管理权限。可以对聊天室成员进行管理。

### 聊天室成员

聊天室的普通成员,不具备聊天室管理权限。

## RESTful 接口

即时通讯 IM 的服务器端接口都是通过 RESTful 服务方式提供的,RESTful API 基于最简单的 HTTP 协议,在各个编程语言中都提供了良好的支持。

即时通讯 IM RESTful 平台提供一个多租户用户体系,以集合(Collection)的形式管理资源,一个集合包括 数据库、企业、应用、用户、群组、消息和文件等。

## 离线推送

离线推送是指当应用被杀死时,通过厂商推送接收消息。iOS 设备使用苹果推送通知服务(APNs),Android 设备为谷歌云消息传递服务(FCM)、华为推送、小米推送、魅族推送、OPPO 推送和 vivo 推送。

## 声网即时推送

声网支持即时通讯能力,提供 RESTful 接口允许你对应用下的单个、多个或所有用户以及指定标签下的用户推送消息通知,满足灵活使用的需求。

## 在线状态订阅

用户在线状态(即 Presence)包含用户的在线、离线以及自定义状态。即时通讯 IM 提供发布、订阅和查询用户的在线状态的功能。

## 消息表情回复 Reaction

在单聊和群聊中对消息添加、删除表情。表情可以直观地表达情绪,利用 Reaction 可以提升用户的使用体验,例如可以在群组中利用 Reaction 可以发起投票,根据不同表情的追加数量来确认投票。

## 子区

子区是建立在群组内一条消息上的支持多人沟通的即时通讯系统,子区成员是群组成员的子集。

## 子区消息

子区消息是子区内发送和接收的消息。
66 changes: 66 additions & 0 deletions Product Input/基本概念描述.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
## Presence

用户的在线状态反映终端用户当前是否在线,包括在线和离线状态。用户可以设置自定义在线状态,例如空闲、马上回来或请勿打扰。用户可通过订阅其他用户的状态了解对方的是否在线和沟通意愿,例如订阅者看到用户的状态为“正在开会”或“忙碌中”时,可能不会过多打扰对方。订阅者可设置监听,实时接收被订阅者的状态更新,方便进行有效沟通。

## Thread

当用户回复群聊中的某条消息时,会创建一个子区。子区是由父消息及其回复组成的消息集合。创建子区后,子区中的成员可针对特定的主题进行讨论,而不会中断群组中的会话流。子区相关的概念如下:
- 父消息:群组中有单条或多条回复的消息。
- 子区消息:包含子区中的父消息及其回复。
- 子区成员:发送父消息的群成员以及回复了该消息的群成员。

你只能利用群组中的消息创建子区,并且只能创建单层级的子区,即不能基于子区中的回复消息创建子区。

## Thread 消息收发流程图

需要添加。

## Reaction

聊天消息中的每个表情都代表不同含义,使用表情可轻松回复消息,实现快捷灵活的沟通。使用环信即时通讯 IM 提供的消息表情回复(下文统称 “Reaction”)功能,在单聊和群聊中,用户可以对某条消息添加或删除表情,例如 “吃瓜”、“加油”、“好的”,直观地表达情绪,让聊天更生动有趣。同时,在群组中,利用 Reaction 可以发起投票,根据不同表情的追加数量确认投票。

**需要添加**:chat如何支持emoji,是否支持第三方emoji?

## 在线

客户端与声网服务器之间建立了长连接,例如登录成功,用户处于在线状态。

## 在线消息

用户为在线状态时发送或接收的消息。

## 离线

客户端与声网服务器之间的长连接断开或应用进程被关闭等原因会导致用户处于离线状态。

**需要添加**
1. 若应用在后台运行可能会离线,也可能在线吗?
2. 在线、在线消息、离线和离线消息,这几个概念,我进行了基本描述,你可否再添加一些更详细的描述,使概念的描述更加清晰完整?

## 离线消息

用户离线时收到的消息称为离线消息。

当用户离线时,即时通讯 IM 服务器会暂时保存其收到的消息,等用户上线时会向其发送这些消息。不同套餐版本的离线消息保存时长不同。单聊和群聊支持离线消息,聊天室不支持离线消息。

## 多端多设备

单设备和多设备登录场景是否需要添加?下面的描述是我添加的基本描述,你看是否还需要补充。

- 单设备登录:单个账号在一个 app 中只能登录一台设备。

- 多端登录:1. 切换设备登录。用户在切换设备登录后,SDK 可获取在其他终端上发送和接收过的消息。2. 应用卸载重装。消息与会话列表是存储在本地数据库,用户卸载 App 时会删除本地数据库。用户重新安装 App 后并再次连接时,SDK 可获取最近指定天数在其他终端上发送和接收过的消息。