会话聊天功能
更新时间:
本文介绍RTM基础功能中的会话聊天功能,您可以了解会话聊天功能的使用方法等内容。
功能简介
在需要使用到IM(即时通讯)的场景中, RTM可为场景提供P2P聊天、多人聊天、群组聊天、房间聊天、广播聊天场景的聊天消息发送、控制命令发送、历史消息存储和查询等功能。
RTM在此场景中同样支持高级功能,如消息的转发和回调、离线消息推送、实时文本翻译、文本审核等功能。请参考 高级功能。
功能
描述
聊天消息发送
发送P2P聊天、多人聊天、群组聊天、房间聊天、广播聊天
查询查聊天详细信息
根据收发用户ID、消息ID等查询聊天消息的详细内容
获取历史聊天消息记录
获取P2P聊天、多人聊天、群组聊天、房间聊天、广播聊天的历史记录
获取未读聊天消息数量
获取用户离线状态下未收到的聊天消息的数量
获取未读会话列表
获取用户有未读聊天的会话列表
删除聊天历史消息记录
根据收发用户ID、消息ID等删除聊天消息历史记录
好友与黑名单
提供好友验证功能,通过后可发送聊天消息
提供黑名单功能,黑名单中的 用户 不再接收其聊天消息
聊天禁言
包括项目禁言、群组/房间禁言等
聊天消息转发
将业务客户端发送的聊天消息转发至业务服务器
离线聊天消息推送
当用户离线时,可将离线聊天消息通过iOS和Android系统推送到用户终端
聊天消息数据结构
所有发送聊天消息类接口,均需提供以下基本参数:
参数名称
参数类型
参数说明
msg
文本/二进制
指聊天消息的内容,支持文本和二进制形式
attrs
文本
指聊天消息的额外属性,为字符串类型,默认可为空
实际使用中可用来传递如昵称、头像等额外信息
在发送聊天消息时,请尽量确保 msg 的值就是聊天的文本本身,不要加入其它额外字符(如用户昵称、头像或使用json描述的字符串结构),因为当使用自动实时翻译、文本审核等增值服务时,这些额外字符会干扰最终结果,如需传递这些额外信息,请将其放入 attrs 参数中。
控制台消息配置
- 消息刷屏数量限制:针对不同消息类型 mtype 配置允许用户每秒最多发送和接收消息数量限制。请参考:控制台操作-RTM项目创建和配置-设置项目详细内容
- 多人消息的人数上限: 调用发送 多人消息 接口时,单次调用最多可操作的人数。请参考:控制台操作-RTM项目创建和配置-设置项目消息
- 消息长度上限: 单条消息的内容最大可允许的长度。请参考:控制台操作-RTM项目创建和配置-设置项目详细内容
- 消息属性长度上限: 单条消息的属性最大可允许的长度。请参考:控制台操作-RTM项目创建和配置-设置项目详细内容
功能详情
消息发送
用户使用业务客户端集成RTM客户端SDK实现聊天消息发送,包括P2P聊天消息、多人聊天消息、群组聊天消息、房间聊天消息和广播聊天消息。
广播聊天消息只允许使用RTM服务端SDK通过管理员ID进行发送。管理员ID默认 111 。配置管理员ID,请参考:控制台操作-RTM项目创建和配置-设置项目信息
查询聊天消息详细信息
RTM提供通过用户ID、消息ID进行聊天消息查询。
可通过控制台->实时数据传输->消息详情进行查询
获取历史聊天消息记录
RTM提供对P2P聊天、群组聊天的获取未读聊天消息数量的功能。
接口输入参数说明:
参数名称
可选性
类型
参数描述
peerUid
必选
int64
需要获取历史聊天消息的用户ID
groupId
必选
int64
需要获取历史聊天消息的群组ID
roomId
必选
int64
需要获取历史聊天消息的房间ID
desc
必选
Bool
返回的历史聊天记录的顺序:
true:由新到旧
false:由旧到新
count
必选
int32
返回的历史聊天记录的数量
beginMsec
可选
int64
开始毫秒时间戳
endMsec
可选
int64
结束毫秒时间戳
lastId
可选
int64
返回结果中最后一条消息的ID,主要用于分页
返回结果参数说明:
参数名称
类型
参数描述
count
int32
历史聊天记录数量
beginMsec
int64
开始毫秒时间戳
endMsec
int64
结束毫秒时间戳
lastCursorId
int64
最后一条消息的ID,用于下一次分页
messages
List<HistoryMessage.>
消息的列表
历史消息保存:
通过RTM客户端SDK或RTM服务端SDK发送的聊天消息默认保存,无需特殊配置。
历史消息默认保存时限为 7 天,单个 session 最多保存 500 条。如需调整,需要在控制台操作-RTM项目创建和配置-设置项目消息中配置。
如需调整该限制,请参考:控制台操作-RTM项目创建和配置-设置项目消息。
获取历史聊天消息记录操作,会受到 历史消息保存的时限 影响。
获取未读聊天消息数量
RTM提供对P2P聊天、群组聊天的获取未读聊天消息数量的功能。
接口输入参数说明:
参数名称
可选性
类型
参数描述
userIds
必选
Set<Int64.>
需要获取未读消息数的用户ID
groupIds
必选
Set<Int64.>
需要获取未读消息数的群组ID
startTime
可选
int64
开始计算毫秒时间戳,返回该时间点后的消息数
如果不传该参数则默认使用用户上次离线时间
mtypes
可选
Set<Int8.>
筛选消息类型
如果不传该参数,则只返回聊天的未读消息数
返回结果参数说明:
参数名称
类型
参数描述
unreadDictionary
Dictionary<Int64, int>
userId 或 groupId 对应的未读消息数字典
lastTimeDictionary
Dictionary<Int64, int>
userId 或 groupId 对应的每个 session 的最新一条消息毫秒时间戳字典
获取未读消息数同样基于保存的历史消息记录实现,未保存历史记录的聊天消息无法获取未读消息数目。
获取未读会话聊天列表
未读会话指用户退出RTM服务后,其他用户、群组、广播等发送给该用户的聊天消息。这些聊天消息会产生未读会话。
RTM提供方法用于获取用户的未读会话列表。
接口输入参数说明:
参数名称
可选性
类型
参数描述
clear
可选
Bool
获取后是否清除未读会话状态
返回结果参数说明:
参数名称
类型
参数描述
p2pList
List
与本端有P2P未读会话聊天消息的用户ID列表
groupList
List
与本端有群组未读会话聊天消息的用户ID列表
获取未读会话列表 和 获取未读聊天消息数量 是两个 不同 的接口,二者实现方式不同:
- 获取未读聊天消息数,是以用户 传入的时间戳 为起始时间,之后产生的消息均认为是未读消息,将未读消息数返回给调用方。
- 获取未读会话列表,严格以用户 上次退出的时间 为基准,仅返回在用户离线期间哪些会话与该用户产生过未读消息。当用户产生多次登录和退出行为后(包括断线重连),未读会话列表可能会发送变化。
删除历史消息记录
RTM 提供通过 用户ID、消息ID进行消息历史聊天记录的删除。
好友验证和黑名单
可以在 控制台操作-RTM项目创建和配置-设置项目消息 中开启 “P2P消息好友验证” 和 “P2P消息黑名单验证”.
- 当开启 “P2P消息好友验证” 后,则只有用户建立 好友关系 后才可以彼此发送P2P聊天。
- 当开启 “P2P消息黑名单验证” 后,如果用户A将用户B加入黑名单,则用户A可以向用户B发送消息,用户B无法向用户A发送消息。用户A和用户B可以生成会话并获取历史消息。
聊天禁言
项目禁言
RTM提供项目黑名单配置,当 “允许黑名单过滤” 功能开启后,如果用户被添加到项目黑名单中,该用户将无法登录RTM服务,也无法收发消息。请参考:
群组禁言
RTM提供群组禁言配置,当 “允许群组禁言” 功能开启后,如果用户被添加到群组禁言名单中,该用户将无在群组内发消息,请参考:
房间禁言
RTM提供房间禁言配置,当 “允许房间禁言” 功能开启后,如果用户被添加到房间禁言名单中,该用户将无法再群组内发消息,请参考:
聊天消息转发
RTM支持将特有客户端发送的聊天消息转发至业务服务器,实现聊天消息转发功能。相关文档请参考:
离线聊天消息推送
RTM支持为离线用户提供,以iOS和Android的系统通知的方式,推送聊天消息到用户设备,实现离线聊天消息推送功能。相关文档请参考:
本文介绍RTM基础功能中的会话聊天功能,您可以了解会话聊天功能的使用方法等内容。
功能简介
在需要使用到IM(即时通讯)的场景中, RTM可为场景提供P2P聊天、多人聊天、群组聊天、房间聊天、广播聊天场景的聊天消息发送、控制命令发送、历史消息存储和查询等功能。
RTM在此场景中同样支持高级功能,如消息的转发和回调、离线消息推送、实时文本翻译、文本审核等功能。请参考 高级功能。
功能 | 描述 |
---|---|
聊天消息发送 | 发送P2P聊天、多人聊天、群组聊天、房间聊天、广播聊天 |
查询查聊天详细信息 | 根据收发用户ID、消息ID等查询聊天消息的详细内容 |
获取历史聊天消息记录 | 获取P2P聊天、多人聊天、群组聊天、房间聊天、广播聊天的历史记录 |
获取未读聊天消息数量 | 获取用户离线状态下未收到的聊天消息的数量 |
获取未读会话列表 | 获取用户有未读聊天的会话列表 |
删除聊天历史消息记录 | 根据收发用户ID、消息ID等删除聊天消息历史记录 |
好友与黑名单 | 提供好友验证功能,通过后可发送聊天消息 提供黑名单功能,黑名单中的 用户 不再接收其聊天消息 |
聊天禁言 | 包括项目禁言、群组/房间禁言等 |
聊天消息转发 | 将业务客户端发送的聊天消息转发至业务服务器 |
离线聊天消息推送 | 当用户离线时,可将离线聊天消息通过iOS和Android系统推送到用户终端 |
聊天消息数据结构
所有发送聊天消息类接口,均需提供以下基本参数:
参数名称 | 参数类型 | 参数说明 |
---|---|---|
msg | 文本/二进制 | 指聊天消息的内容,支持文本和二进制形式 |
attrs | 文本 | 指聊天消息的额外属性,为字符串类型,默认可为空 实际使用中可用来传递如昵称、头像等额外信息 |
在发送聊天消息时,请尽量确保 msg 的值就是聊天的文本本身,不要加入其它额外字符(如用户昵称、头像或使用json描述的字符串结构),因为当使用自动实时翻译、文本审核等增值服务时,这些额外字符会干扰最终结果,如需传递这些额外信息,请将其放入 attrs 参数中。
控制台消息配置
- 消息刷屏数量限制:针对不同消息类型 mtype 配置允许用户每秒最多发送和接收消息数量限制。请参考:控制台操作-RTM项目创建和配置-设置项目详细内容
- 多人消息的人数上限: 调用发送 多人消息 接口时,单次调用最多可操作的人数。请参考:控制台操作-RTM项目创建和配置-设置项目消息
- 消息长度上限: 单条消息的内容最大可允许的长度。请参考:控制台操作-RTM项目创建和配置-设置项目详细内容
- 消息属性长度上限: 单条消息的属性最大可允许的长度。请参考:控制台操作-RTM项目创建和配置-设置项目详细内容
功能详情
消息发送
用户使用业务客户端集成RTM客户端SDK实现聊天消息发送,包括P2P聊天消息、多人聊天消息、群组聊天消息、房间聊天消息和广播聊天消息。
广播聊天消息只允许使用RTM服务端SDK通过管理员ID进行发送。管理员ID默认 111 。配置管理员ID,请参考:控制台操作-RTM项目创建和配置-设置项目信息
查询聊天消息详细信息
RTM提供通过用户ID、消息ID进行聊天消息查询。
可通过控制台->实时数据传输->消息详情进行查询
获取历史聊天消息记录
RTM提供对P2P聊天、群组聊天的获取未读聊天消息数量的功能。
接口输入参数说明:
参数名称 | 可选性 | 类型 | 参数描述 |
---|---|---|---|
peerUid | 必选 | int64 | 需要获取历史聊天消息的用户ID |
groupId | 必选 | int64 | 需要获取历史聊天消息的群组ID |
roomId | 必选 | int64 | 需要获取历史聊天消息的房间ID |
desc | 必选 | Bool | 返回的历史聊天记录的顺序: true:由新到旧 false:由旧到新 |
count | 必选 | int32 | 返回的历史聊天记录的数量 |
beginMsec | 可选 | int64 | 开始毫秒时间戳 |
endMsec | 可选 | int64 | 结束毫秒时间戳 |
lastId | 可选 | int64 | 返回结果中最后一条消息的ID,主要用于分页 |
返回结果参数说明:
参数名称 | 类型 | 参数描述 |
---|---|---|
count | int32 | 历史聊天记录数量 |
beginMsec | int64 | 开始毫秒时间戳 |
endMsec | int64 | 结束毫秒时间戳 |
lastCursorId | int64 | 最后一条消息的ID,用于下一次分页 |
messages | List<HistoryMessage.> | 消息的列表 |
历史消息保存:
通过RTM客户端SDK或RTM服务端SDK发送的聊天消息默认保存,无需特殊配置。
历史消息默认保存时限为 7 天,单个 session 最多保存 500 条。如需调整,需要在控制台操作-RTM项目创建和配置-设置项目消息中配置。
如需调整该限制,请参考:控制台操作-RTM项目创建和配置-设置项目消息。
获取历史聊天消息记录操作,会受到 历史消息保存的时限 影响。
获取未读聊天消息数量
RTM提供对P2P聊天、群组聊天的获取未读聊天消息数量的功能。
接口输入参数说明:
参数名称 | 可选性 | 类型 | 参数描述 |
---|---|---|---|
userIds | 必选 | Set<Int64.> | 需要获取未读消息数的用户ID |
groupIds | 必选 | Set<Int64.> | 需要获取未读消息数的群组ID |
startTime | 可选 | int64 | 开始计算毫秒时间戳,返回该时间点后的消息数 如果不传该参数则默认使用用户上次离线时间 |
mtypes | 可选 | Set<Int8.> | 筛选消息类型 如果不传该参数,则只返回聊天的未读消息数 |
返回结果参数说明:
参数名称 | 类型 | 参数描述 |
---|---|---|
unreadDictionary | Dictionary<Int64, int> | userId 或 groupId 对应的未读消息数字典 |
lastTimeDictionary | Dictionary<Int64, int> | userId 或 groupId 对应的每个 session 的最新一条消息毫秒时间戳字典 |
获取未读消息数同样基于保存的历史消息记录实现,未保存历史记录的聊天消息无法获取未读消息数目。
获取未读会话聊天列表
未读会话指用户退出RTM服务后,其他用户、群组、广播等发送给该用户的聊天消息。这些聊天消息会产生未读会话。 RTM提供方法用于获取用户的未读会话列表。
接口输入参数说明:
参数名称 | 可选性 | 类型 | 参数描述 |
---|---|---|---|
clear | 可选 | Bool | 获取后是否清除未读会话状态 |
返回结果参数说明:
参数名称 | 类型 | 参数描述 |
---|---|---|
p2pList | List |
与本端有P2P未读会话聊天消息的用户ID列表 |
groupList | List |
与本端有群组未读会话聊天消息的用户ID列表 |
获取未读会话列表 和 获取未读聊天消息数量 是两个 不同 的接口,二者实现方式不同:
- 获取未读聊天消息数,是以用户 传入的时间戳 为起始时间,之后产生的消息均认为是未读消息,将未读消息数返回给调用方。
- 获取未读会话列表,严格以用户 上次退出的时间 为基准,仅返回在用户离线期间哪些会话与该用户产生过未读消息。当用户产生多次登录和退出行为后(包括断线重连),未读会话列表可能会发送变化。
删除历史消息记录
RTM 提供通过 用户ID、消息ID进行消息历史聊天记录的删除。
好友验证和黑名单
可以在 控制台操作-RTM项目创建和配置-设置项目消息 中开启 “P2P消息好友验证” 和 “P2P消息黑名单验证”.
- 当开启 “P2P消息好友验证” 后,则只有用户建立 好友关系 后才可以彼此发送P2P聊天。
- 当开启 “P2P消息黑名单验证” 后,如果用户A将用户B加入黑名单,则用户A可以向用户B发送消息,用户B无法向用户A发送消息。用户A和用户B可以生成会话并获取历史消息。
聊天禁言
项目禁言
RTM提供项目黑名单配置,当 “允许黑名单过滤” 功能开启后,如果用户被添加到项目黑名单中,该用户将无法登录RTM服务,也无法收发消息。请参考:
群组禁言
RTM提供群组禁言配置,当 “允许群组禁言” 功能开启后,如果用户被添加到群组禁言名单中,该用户将无在群组内发消息,请参考:
房间禁言
RTM提供房间禁言配置,当 “允许房间禁言” 功能开启后,如果用户被添加到房间禁言名单中,该用户将无法再群组内发消息,请参考:
聊天消息转发
RTM支持将特有客户端发送的聊天消息转发至业务服务器,实现聊天消息转发功能。相关文档请参考:
离线聊天消息推送
RTM支持为离线用户提供,以iOS和Android的系统通知的方式,推送聊天消息到用户设备,实现离线聊天消息推送功能。相关文档请参考: