更新时间: 2021-03-01

# 概述

群组指两个以上用户一起进行聊天,群组成员信息由 App 提供并进行维系,融云只负责将消息传达给群组中的所有用户。

# 主要功能

功能 描述
离线消息 支持离线消息存储,存储时间可设置(1 ~ 7 天),默认存储 7 天。
消息提醒 离线状态,群组中有新消息时,支持 Push 通知。
本地存储 存储在移动端本地,提供本地消息搜索功能。
历史消息 提供服务端消息存储存功能,需开通单群聊消息云存储,默认存储时长为 6 个月。
消息删除 支持按会话删除本地和存储在服务器的指定消息或会话中全部历史消息。
消息搜索 支持按关键字或用户搜索本地指定会话的消息内容。
群消息阅读回执 发送群消息后如需要查看消息的阅读状态,可以使用此功能来发送阅读回执请求。
消息撤回 消息发送成功后,在有效时间内可撤回该条消息,默认可撤回时间为 2 分钟,时间可配置。
群聊会话免打扰 可设置指定的群聊会话,收到新的消息后是否进行提醒,默认进行新消息提醒。
创建群组 App 内的群组数量没有限制,默认一个群上限为 3000 人,可调整群上限,需要提交工单申请开通。
加入群组 每个群最大至 3000 人,一个用户可加入多个群组,没有限制。默认加入群组后,只能查看加入后群组中产生的消息,如需要查看加入前的消息,则需要开通单群聊消息云存储 (opens new window)后,再开通查看加入前群消息功能 (opens new window)
退出群组 将用户从群中移除,不再接收该群组的消息。
解散群组 将指定群组解散,所有成员都无法再接收该群的消息。
群成员查询 获取指定群组中群成员用户 Id。
刷新群组信息 目前支持更新群组名称。
同步用户所属群组 在集成融云前 App Server 已有群组数据,可使用此服务进行同步。
群组成员禁言 被禁言用户可以接收查看群组中其他用户消息,但不能通过客户端 SDK 发送消息。
群组整体禁言 指定群组所有成员不能发送消息,需要某些用户可以发言时,可将此用户加入到群禁言用户白名单中。
群组禁言用户白名单 群组被整体禁言后,禁言白名单中用户可以发送群消息。
发送群组消息 向群组中所有成员发送消息。
发送群组定向消息 向群中指定的一个或多个用户发送消息,群中其他用户无法收到该消息。
发送群组 @消息 发送群组中指定群成员需要特别关注的消息。
发送群组状态消息 群组中在线用户会收到此条消息,离线用户不会再收到此条消息,状态消息不计数、不存储。

# 与聊天室的区别

融云提供群组与聊天室业务,其主要区别如下,客户可根据自己的业务场景进行选择:

功能 群组(group) 聊天室(Chatroom)
场景 类似微信的群组,无论是否在线都会接收消息 类似直播间的弹幕,只有观看的时候接收消息
离线缓存消息 支持离线消息存储,存储时间可设置(1 ~ 7 天),默认存储 7 天。 无离线消息,只有在线用户才可收到聊天室消息
人数限制 默认一个群上限为 3000 人 聊天室人数无上限
消息提醒 离线状态,群组中有新消息时,支持远程推送(PUSH)通知 离开聊天室后不再接收消息
本地存储 移动端本地数据库存储,提供本地消息搜索接口 退出聊天室后同时删除本地聊天室消息,不支持消息搜索功能
云端存储 需开通单群聊消息云存储,可以提供 6 - 36 个月存储服务 需开通聊天室消息云存储,可以提供 2 - 12 个月存储服务
用户加入限制 一个用户可加入多个群组,无限制 默认一个用户只能加入一个聊天室,加入多个聊天室功能可在开发者后台自行开通
加入后消息获取逻辑 默认加入群组后,只能查看加入后群组中产生的消息。如需要查看群历史消息,则需要开通单群聊消息云存储后,再开通“查看加入前群消息”功能 加入后可获取聊天室中最新的 50 条消息。
销毁/解散逻辑 需要通过 AppServer 自行调用解散群组接口。 提供销毁聊天室接口,可通过 AppServer 调用。同时聊天室中 1 小时内没有消息产生时,将自动销毁聊天室。
消息可靠度 100% 可靠,不丢消息。 消息量较大时,超出消费上限的消息将被丢弃,查看详细
相关接口调用 SDK 不提供群组管理功能接口,通过 Server API 提供群组功能接口。 SDK 和 Server API 同时提供功能接口,销毁聊天室操作只能通过 Server API 方式调用。
发送消息频率 每个客户端 5 条/秒,服务端调用,每秒钟 20 条/秒 每个客户端 5 条/秒,服务端调用,每秒钟 100 条/秒

# 消息类型

消息类型 描述
文字消息 用来发送文字类消息,其中可以包括表情、超链接(会自动识别),客户端收到消息后计入未读消息数、进行存储。
语音消息 发送高质量的短语音消息,录制的语音文件存储到融云服务端,语音文件格式为 AAC,时长上限为 60 秒,客户端收到消息后计入未读消息数、进行存储。
图片消息 用来发送图片类消息,客户端收到消息后计入未读消息数、进行存储。图片缩略图格式为 JPG,大小建议不超过 100k。
GIF 图片消息 用来发送 GIF 动态图片消息,客户端收到消息后计入未读消息数、进行存储。
图文消息 用来发送图文消息,包含一个标题,一段文字内容和一张图片,客户端收到消息后计入未读消息数、进行存储。
文件消息 用来发送文件类消息,客户端收到消息后计入未读消息数、进行存储。
位置消息 用来发送地理位置消息,客户端收到消息后计入未读消息数、进行存储。
小视频消息 用来发送小视频消息,支持录制发送及选择本地视频文件发送两种方式,录制时长不超过 10 秒,本地选择视频文件方式时长不超过 2 分钟,小视频消息小视频文件格式为 .mp4,客户端收到消息后计入未读消息数、进行存储。
合并转发消息 IMKit SDK 中支持将多条消息合并为一条消息进行发送,合并后的消息以 HTML 文件的方式存储到融云服务端,客户端收到消息后计入未读消息数、进行存储。红包、阅后即焚及自定义消息的合并转发功能
命令消息 用来发送通用的指令通知消息,消息内可以定义任意 JSON 内容,与通用命令通知消息的区别是不存储、不计数,此类型消息没有 Push 通知。
自定义消息 融云内置消息类型,无法满足客户业务需求时,可通过自定义消息类型进行实现,接收自定义消息的格式解析及展示处理需要开发者自行实现

# 内置消息说明

以下为融云内置消息类型说明:

# 内容类消息

融云内置了一些内容类消息

消息类型 ObjectName
[文字消息] RC:TxtMsg
[语音消息] 旧消息类型 RC:VcMsg,新消息类型 RC:HQVCMsg
[图片消息] RC:ImgMsg
[GIF 图片消息] RC:GIFMsg
[图文消息] RC:ImgTextMsg
[文件消息] RC:FileMsg
[位置消息] RC:LBSMsg
[小视频消息] RC:SightMsg
[引用消息] RC:ReferenceMsg
[合并转发消息] RC:CombineMsg

内容类消息具体明细,请参考:消息类型-内容类消息文档

# 位置消息
ObjectName 存储属性 计数属性 离线属性 推送属性 推送内容
RC:LBSMsg 存储 计数 存储 推送 [位置]

消息结构:

发送位置消息时 content 参数的 JSON 结构如下:

{
  "content":"bhZPzJXimRwrtvc=",
  "latitude":39.9139,
  "longitude":116.3917,
  "poi":"北京云中融信网络科技有限公司",
  "user":
  {
    "id":"4242",
    "name":"Robin",
    "portrait":"http://example.com/p1.png",
    "extra":"extra"
  },
  "extra":""
}
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14

属性说明:

名称 类型 必传 说明
content String 表示位置图片缩略图,格式为 JPG,以 Base64 进行 Encode 后需要将所有 \r\n\r\n 替换成空。
latitude String 位置的纬度值。
longitude String 位置的经度值。
poi String 表示位置的 poi 信息。
user String 消息中携带的用户信息,详细查看 user 参数说明。
extra String 扩展信息,可以放置任意的数据内容,也可以去掉此属性。

user 属性说明:

名称 说明
id 发送用户 Id。
name 发送用户需要显示的名称。
portrait 发送用户需要显示的头象。
extra 扩展信息,可以放置任意的数据内容。
# 发送 @ 消息

@ 消息推送会越过所有免打扰逻辑,给用户推送 Push 通知。

消息结构:

发送文本消息时在参数 content 中携带 mentionedInfo 属性可支持发送群 @ 消息

{
  "content":"@张三 c#hello",
  "mentionedInfo":{
    "type":2,
    "userIdList":["123","456"],
    "mentionedContent":"有人@你"
  },
  "user":
  {
    "id":"4242",
    "name":"Robin",
    "portrait":"http://example.com/p1.png",
    "extra":"extra"
  },
  "extra":""
}
已复制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

属性说明:

名称 类型 必传 说明
content String 文字消息的文字内容,包括表情。
mentionedInfo String 群组中 @ 消息详细信息。
type int @ 功能类型,1 表示 @ 所有人、2 表示 @ 指定用户。
userIdList String[] 指定用户列表,type 为 2 时有效,为 1 时 userIdList 可以为空。
mentionedContent String @ 消息的自定义 Push 内容。
user String 消息中携带的用户信息,详细查看 user 参数说明。
extra String 扩展信息,可以放置任意的数据内容,也可以去掉此属性。

user 属性说明:

名称 说明
id 发送用户 Id。
name 发送用户需要显示的名称。
portrait 发送用户需要显示的头象。
extra 扩展信息,可以放置任意的数据内容。
# 提示小灰条消息
ObjectName 存储属性 计数属性 离线属性 推送属性 推送内容
RC:InfoNtf 存储 不计数 存储 不推送

消息结构:

发送小灰条消息时 content 参数的 JSON 结构如下:

{
  "message":"请在聊天中注意人身财产安全",
  "extra":""
}
已复制
1
2
3
4

属性说明:

名称 类型 必传 说明
message String 提示条消息内容。
extra String 扩展信息,可以放置任意的数据内容,也可以去掉此属性。
# 资料变更通知消息
ObjectName 存储属性 计数属性 离线属性 推送属性 推送内容
RC:ProfileNtf 存储 不计数 存储 不推送

消息结构:

发送用户资料变更消息时 content 参数的 JSON 结构如下:

{
  "operation":"Update",
  "data":"{\"nickname\":\"韩梅梅\", \"hometown\":\"beijing\"}",
  "extra":""
}
已复制
1
2
3
4
5

属性说明:

名称 类型 必传 说明
operation String 资料通知操作,可以自行定义。
data String 操作的数据。
extra String 扩展信息,可以放置任意的数据内容,也可以去掉此属性。
# 群组通知消息
ObjectName 存储属性 计数属性 离线属性 推送属性 推送内容
RC:GrpNtf 存储 不计数 存储 不推送

消息结构:

发送群组操作通知消息时 content 参数的 JSON 结构如下:

{
  "operatorUserId":"4324",
  "operation":"Rename",
  "data":"群组中各种通知的操作数据",
  "message":"修改本群名为本地生活",
  "extra":""
}
已复制
1
2
3
4
5
6
7

属性说明:

名称 类型 必传 说明
operatorUserId String 操作人用户 Id。
operation String 操作名称,可以自行定义。
data String 群组中各种通知的操作数据,详见“群组通知消息结构数据说明”。
message String 消息内容。
extra String 扩展信息,可以放置任意的数据内容,也可以去掉此属性。

群组通知消息结构数据说明:

融云内置的群组操作通知消息结构 JOSN 格式如下:

  1. 创建群组:
{
  "operatorUserId":"4324",
  "operation":"Create",
  "data":"{\"operatorNickname\":\"李天\",\"targetGroupName\":\"群名\"}",
  "message":"创建群组",
  "extra":""
}
已复制
1
2
3
4
5
6
7

属性说明:

  • operatorUserId 为操作人用户 Id
  • operation 操作名,默认为 Create
  • data 数据内容,operatorNickname 为操作者,targetGroupName 为群名称
  1. 修改群名称
{
  "operatorUserId":"4324",
  "operation":"Rename",
  "data":"{\"operatorNickname\":\"李天\",\"targetGroupName\":\"群名\"}",
  "message":"修改群名称",
  "extra":""
}
已复制
1
2
3
4
5
6
7

属性说明:

  • operatorUserId 为操作人用户 Id
  • operation 操作名,默认为 Rename
  • data 数据内容,operatorNickname 为操作者,targetGroupName 为群名称
  1. 添加群成员
{
  "operatorUserId":"4324",
  "operation":"Add",
  "data":"{\"operatorNickname\":\"李天\",\"targetUserIds\":[\"wGPkc0\"],\"targetUserDisplayNames\":[\"腾飞\"]}",
  "message":"添加群成员",
  "extra":""
}
已复制
1
2
3
4
5
6
7

属性说明:

  • operatorUserId 为操作人用户 Id
  • operation 操作名,默认为 Add
  • data 数据内容,operatorNickname 为操作者
  • targetUserIds 为被加入群的用户 ID
  • targetUserDisplayNames 为被加入群的用户与 targetUserIds 相对应
  1. 移出群成员
{
  "operatorUserId":"4324",
  "operation":"Kicked",
  "data":"{\"operatorNickname\":\"李天\",\"targetUserIds\":[\"wGPkc0\"],\"targetUserDisplayNames\":[\"腾飞\"]}",
  "message":"移出群成员",
  "extra":""
}
已复制
1
2
3
4
5
6
7

属性说明:

  • operatorUserId 为操作人用户 Id
  • operation 操作名,默认为 Kicked
  • data 数据内容,operatorNickname 为操作者
  • targetUserIds 为被移出群的用户 ID
  • targetUserDisplayNames 为被移出群的用户名与 targetUserIds 相对应
  1. 退出群组
{
  "operatorUserId":"4324",
  "operation":"Quit",
  "data":"{\"operatorNickname\":\"李天\",\"targetUserIds\":[\"wGPkc0VpO\"],\"targetUserDisplayNames\":[\"腾飞\"],\"newCreatorId\":\"newCreatorId\"}",
  "message":"退出群组",
  "extra":""
}
已复制
1
2
3
4
5
6
7

属性说明:

  • operatorUserId 为操作人用户 Id
  • operation 操作名,默认为 Quit
  • data 数据内容,operatorNickname 为操作者,targetUserIds 为操作者 ID ,targetUserDisplayNames 为操作者
  • newCreatorId 如退出群的用户为群创建者则 newCreatorId 为新的群创建者 ID ,否则为 null
  1. 解散群组
{
  "operatorUserId":"4324",
  "operation":"Dismiss",
  "data":"{\"operatorNickname\":\"李天\"}",
  "message":"解散群组",
  "extra":""
}
已复制
1
2
3
4
5
6
7

属性说明:

  • operatorUserId 为操作人用户 Id
  • operation 操作名,默认为 Dismiss
  • data 数据内容,operatorNickname 为操作者
# 命令消息
ObjectName 存储属性 计数属性 离线属性 推送属性 推送内容
RC:CmdMsg 不存储 不计数 存储 不推送

消息结构:

运营平台向终端发送指令信息时可使用此命令消息,消息中 content 参数的 JSON 结构如下:

{
  "name":"AtPerson",
  "data":"{\"sourceId\":\"9527\"}"
}
已复制
1
2
3
4

属性说明:

名称 类型 必传 说明
name String 命令名称,可以自行定义。
data String 命令的内容。
# 群已读状态请求消息

群组中发送一条消息,需要获取此条消息的已读回执时,可向群组中发送已读请求消息。用户收到此条消息后,当指定消息已读后,会向消息发送用户发送已读状态消息。

ObjectName 存储属性 计数属性 离线属性 推送属性 推送内容
RC:RRReqMsg 不存储 不计数 存储

消息结构:

发送已读通知消息时 content 结构如下:

{
  "messageUId":"596E-P5PG-4FS2-7OJK"
}
已复制
1
2
3

属性说明:

名称 类型 必传 说明
messageUId String 需要请求已读回执消息的消息 ID
# 群已读通知消息

用来发送群组中已读的消息状态,客户端收到消息后不计入未读消息数、不存储。

ObjectName 存储属性 计数属性 离线属性 推送属性 推送内容
RC:RRRspMsg 不存储 不计数 存储

消息结构:

发送已读通知消息时 content 结构如下:

{
  "receiptMessageDic":{"wX7zFv8dR":["BJN3-LSG0-7MUC-OR7A"]}
}
已复制
1
2
3

属性说明:

名称 类型 必传 说明
receiptMessageDic String 需要回执的消息的字典,Key 为发送者 userId ,Value 是该用户需要回执的消息的 MessageUId 的数组。

文档是否解决您的问题 ?

如果遇到产品相关问题,您可 提交工单 寻求帮助