消息功能

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

功能简介

RTM支持发送P2P消息、多人消息、群组消息、房间消息、广播消息等多种形式的实时消息,发送消息内容包括文字、图片、语音、视频、离线语音消息等多种文件类型,同时提供历史消息存储和查询等功能。

功能 描述
消息发送 发送P2P消息、多人消息、群组消息、房间消息、广播消息
查询消息详细信息 根据收发用户ID、消息ID等查询消息的详细内容
获取历史消息记录 获取P2P消息、多人消息、群组消息、房间消息、广播消息的历史记录
获取未读消息数量 获取用户离线状态下未收到的消息的数量
删除历史消息记录 根据收发用户ID、消息ID等删除消息的历史记录
消息转发 将业务客户端发送的消息转发至业务服务器
离线消息推送 当用户离线时,可将离线消息通过iOS和Android系统推送到用户终端

消息数据结构

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

参数名称 参数类型 参数说明
msg 文本
二进制
指消息的内容,支持文本和二进制形式
attrs 文本 指消息的额外属性,为字符串类型,默认可为空
实际使用中可用来传递如昵称、头像等额外信息
mytype int8 指消息的类型值,业务可自定义 mtype 的值,用来区分不同的业务消息。自定义的 mtype 的取值范围在 [51, 127] 之间。

控制台消息配置

功能详情

消息发送

用户业务客户端使用RTM客户端SDK发送消息,包括P2P消息、多人消息、群组消息、房间消息和广播消息。

广播消息只允许RTM服务端SDK通过管理员ID进行发送。管理员ID默认 111
请参考:控制台操作-RTM项目创建和配置-设置项目信息
RTM客户端SDK 与 RTM服务端SDK 均支持文件消息离线语音消息的发送。其中:

  • 文件消息包括图片、语音、视频和通用文件等各种类型消息
  • 离线语音是指语音消息。RTM客户端SDK 提供语音的采集、编码、传输及转文字等功能。

文件消息发送

RTM客户端SDK与RTM服务端SDK提供了文件发送接口,可发送各类型的文件消息,文件发送相关代码如下:

客户端 服务端

文件消息推送处理方式,请参考消息与事件推送功能.

离线语音消息发送

RTM客户端SDK提供了语音的采集、编码、传输、播放及转文字等功能,离线语音消息发送相关代码如下:

离线语音消息推送处理方式,请参考消息与事件推送功能.

查询消息详细信息

RTM提供通过用户ID、消息ID进行消息查询。

获取历史消息记录

P2P、群组、房间、广播消息均支持获取历史消息记录功能。

接口输入参数说明:

参数名称 可选性 类型 参数描述
peerUid 必选 int64 需要获取历史消息的用户ID
groupId 必选 int64 需要获取历史消息的群组ID
roomId 必选 int64 需要获取历史消息的房间ID
desc 必选 Bool 返回的历史记录的顺序:
true:由新到旧
false:由旧到新
count 必选 int32 返回的历史记录的数量
beginMsec 可选 int64 开始毫秒时间戳
endMsec 可选 int64 结束毫秒时间戳
lastId 可选 int64 返回结果中最后一条消息的ID,主要用于分页
mtypes 可选 List<Int64.> 消息的 mtypes 列表,用于筛选不同类型的消息

返回结果参数说明:

参数名称 类型 参数描述
count int32 历史记录数量
beginMsec int64 开始毫秒时间戳
endMsec int64 结束毫秒时间戳
lastCursorId int64 最后一条消息的ID,用于下一次分页
messages List<HistoryMessage.> 消息的列表

自定义的消息类型 mytype = [51,127],只有当设置了 历史消息保存 后才能获取历史消息记录。

获取未读消息数量

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提供通过用户ID、消息ID进行消息历史记录的删除。

消息转发

RTM支持将客户端发送的消息根据不同的消息类型 mtype 转发至业务服务器,实现消息转发功能。 相关文档请参考:消息回调

离线消息推送

RTM支持为离线用户提供,以iOS和Android的系统通知的方式,推送消息到用户设备,实现离线消息推送功能。 相关文档请参考:基本功能-增值服务-离线消息推送