会话聊天功能

本文介绍RTM基础功能中的会话聊天功能,您可以了解会话聊天功能的使用方法等内容。

功能简介

在需要使用到IM(即时通讯)的场景中, RTM可为场景提供P2P聊天、多人聊天、群组聊天、房间聊天、广播聊天场景的聊天消息发送、控制命令发送、历史消息存储和查询等功能。

RTM在此场景中同样支持高级功能,如消息的转发和回调、离线消息推送、实时翻译、文本审核等功能。请参考 高级功能

功能 描述
聊天消息发送 发送P2P聊天、多人聊天、群组聊天、房间聊天、广播聊天
查询查聊天详细信息 根据收发用户ID、消息ID等查询聊天消息的详细内容
获取历史聊天消息记录 获取P2P聊天、多人聊天、群组聊天、房间聊天、广播聊天的历史记录
获取未读聊天消息数量 获取用户离线状态下未收到的聊天消息的数量
获取未读会话列表 获取用户有未读聊天的会话列表
删除聊天历史消息记录 根据收发用户ID、消息ID等删除聊天消息历史记录
好友与黑名单 提供好友验证功能,通过后可发送聊天消息
提供黑名单功能,黑名单中的 用户 不再接收其聊天消息
聊天禁言 包括项目禁言、群组/房间禁言等
聊天消息转发 将业务客户端发送的聊天消息转发至业务服务器
离线聊天消息推送 当用户离线时,可将离线聊天消息通过iOS和Android系统推送到用户终端

聊天消息数据结构

所有发送聊天消息类接口,均需提供以下基本参数:

参数名称 参数类型 参数说明
msg 文本/二进制 指聊天消息的内容,支持文本和二进制形式
attrs 文本 指聊天消息的额外属性,为字符串类型,默认可为空
实际使用中可用来传递如昵称、头像等额外信息

在发送聊天消息时,请尽量确保 msg 的值就是聊天的文本本身,不要加入其它额外字符(如用户昵称、头像或使用json描述的字符串结构),因为当使用自动实时翻译、文本审核等增值服务时,这些额外字符会干扰最终结果,如需传递这些额外信息,请将其放入 attrs 参数中。

控制台消息配置

功能详情

消息发送

用户使用业务客户端集成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> userIdgroupId 对应的未读消息数字典
lastTimeDictionary Dictionary<Int64, int> userIdgroupId 对应的每个 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的系统通知的方式,推送聊天消息到用户设备,实现离线聊天消息推送功能。相关文档请参考: