基本概念
租户与成员
租户代表一个使用本服务的企业或团队,是计费和管理的单位。注册控制台账号时会同时创建一个租户,系统为它生成唯一的 org_name,不能修改。
一个控制台账号可以加入多个租户,在每个租户中有一个角色:
| 角色 | 说明 |
|---|---|
owner | 租户的负责人,每个租户只有一个,可以转让 |
admin | 管理员,可以管理应用、凭据、成员和策略 |
developer | 开发者,可以查看应用、管理 IM 用户和大部分策略 |
详见成员与角色。
应用与 AppKey
应用是一套独立的 IM 环境:用户、好友、群组和消息都属于某个应用,不同应用之间的数据完全隔离。建议为测试环境和生产环境分别创建应用。
每个应用由 app_name 标识,在租户内唯一,创建后不能修改,删除后也不能再次使用。org_name 和 app_name 组成应用的 AppKey:
1100250925#demo
└── org_name ┘└ app_name客户端登录时使用 AppKey;服务端 REST API 的地址中分别使用 org_name 和 app_name。
服务端凭据与 App Token
每个应用有一组服务端凭据:Client ID 和 Client Secret。业务服务端用它们换取 App Token,再用 App Token 调用服务端 REST API。App Token 代表整个应用的管理权限,只能在服务端使用。详见鉴权与 App Token。
IM 用户与 User Token
IM 用户是应用中的终端用户,即你的 App 中会聊天的人,由用户名(username)唯一标识。用户名在应用内唯一,不区分大小写。通常在你的用户注册时,由业务服务端调用接口为他创建一个 IM 用户,用户名可以使用你系统中的用户 ID。
用户在客户端登录后获得 User Token,用它调用客户端接口、建立长连接。User Token 只代表这个用户本人,只能操作他自己的数据。每次登录产生一个会话,对应一台登录设备;同一用户可以在多台设备上同时登录,数量由运行策略限制。
会话与消息
会话是两个用户之间(单聊)或一个群中(群聊)的消息流,由 conversation_id 标识。会话中的每条消息有一个在会话内从 1 开始递增的序号 seq,客户端按序号同步和翻页,不会遗漏。
每个用户对一个会话有自己的状态:已读到的位置、未读数、是否置顶、是否删除了会话等,这些只影响他自己。详见消息格式和会话与历史消息。
好友与黑名单
用户之间可以互加好友:一方发起申请,对方同意后成为好友;业务服务端也可以直接为两个用户建立好友关系。用户可以把其他人加入黑名单,被拉黑的人不能给他发消息或加他为好友。默认不是好友也能单聊,可以通过运行策略改为只能给好友发消息。
群组
群组有固定的成员,由 group_id 标识。成员的角色有群主、管理员和普通成员。群可以设置为公开或私有、入群是否需要审批、谁可以邀请成员等。群消息发给群中的全部成员。
聊天室
聊天室没有固定成员:用户进入时加入、离开或断线时退出,只有在聊天室中的用户才收到消息,不保存离线消息。它适合直播间、活动现场这类人数多、流动快的场景。聊天室由 room_id 标识,有所有者和管理员,可以禁言、封禁用户。详见聊天室管理。
音视频通话
用户之间可以发起一对一或群内多人的音视频通话。呼叫、振铃、接听、挂断等信令和通话记录由 IM 服务处理,音视频数据由平台提供的媒体服务承载,你不需要单独接入其他音视频服务。详见音视频通话。
文件
图片、语音、视频、文件等消息附件,以及用户头像、群头像和群文件,都要先上传到 IM 服务,上传时指定用途,用途决定大小上限、谁能下载和保留多久。文件内容直接上传到对象存储,完成后得到:
- 文件地址:附件和群文件的固定地址,写进消息中。它本身不能直接下载,要由本应用登录的用户或你的服务端换取短期有效的下载地址,其他人拿到地址也无法下载;
- 公开地址:头像的地址,可以直接访问,填进用户或群的资料中。
附件默认保留 30 天(可在运行策略中调整),到期后文件被删除,消息本身仍然保留。详见文件概述。
离线推送
用户的设备不在线时,新消息、来电等通过手机系统的推送通道(APNs、FCM 和各手机厂商的通道)发出通知。你需要在控制台上传各通道的凭据,客户端登录后登记设备的推送令牌。详见离线推送。
事件回调
事件回调是 IM 服务主动向你的业务服务端发送的 HTTP 请求:用户、好友、群、消息等发生变化时通知你(事件回调),或在发消息、加好友、入群等操作之前询问你是否允许(同步回调)。回调地址和要接收的事件在控制台配置,每个请求都带签名。详见回调概述。
内容安全
内容安全在消息、资料、申请附言和文件发出前后检查其中的违规内容,按应用的配置拒绝、替换或事后处置,并记录违规、自动处罚。详见内容安全。
长连接与在线状态
客户端登录后与服务建立 WebSocket 长连接:新消息、好友申请、群变化等通过它实时推送到用户的所有在线设备。用户至少有一台设备连接着长连接时即为在线,服务端可以查询用户的在线状态。
运行策略与配额
运行策略控制应用的行为,如消息撤回时限、多端登录的设备数、是否开启已读回执、令牌的有效期。租户有一套默认策略,每个应用可以单独覆盖其中的项。详见运行策略。
配额是平台为每个应用设置的保护性上限,如每秒的 REST API 调用次数、每分钟的消息数,超出时返回 429 rate_limited。详见限流与应用状态。
套餐与账单
每个应用订阅一个套餐,套餐决定注册用户数、并发连接数、存储空间、并发通话数等额度,用满时相应的操作被拒绝。用量每天统计,每个租户每月一张账单。详见套餐与账单。
独立 RTC 频道
频道用业务 channel_id 标识,与 IM 群、消息聊天室和原通话分开。频道会话是某个用户在本登录设备上的一次参与,用字符串 session_id 标识;媒体房间名不是业务频道 ID。
开放频道接受本应用登录用户;受控频道使用服务端给指定用户签发的一次性票据。角色 publisher 允许发布,subscriber 只接收。票据、IM 登录 Token 和媒体 Token 各有用途,不能互相替代。详见频道概述。
