跳到主要内容

版本:5.X

内容审核场景实践

场景 1:社交应用中的聊天内容审核

通过融云的审核服务,您可以防止社交场景中的色情诱导、广告引流以及涉政涉暴内容,详见审核能力概述

内容审核服务

开通位置

您可以通过融云控制台开通内容审核服务。

计费说明

开发环境:免费试用 30 天; 生产环境:首次开通可免费体验 7 天,免费额度用尽后服务将关停。如需再次开启需预存 600 元并开始计费。

每日结算前一天统计用量费用,月底按整体使用量核算月度费用,费用按最小条数计算,不足一分钱不计费。

详细计费规则请参考知识库:IM 审核计费说明

常规审核方案

融云内容审核产品中的 IM 审核服务,为 IM 内容提供全面保障与支持,支持审核文本、图片、语音片段和小视频,精准识别敏感信息。 使用该服务无需额外代码集成,只需开通服务即可实现消息自动审核。如需调整审核力度或有其他审核需求,可联系商务经理沟通。

自定义事件审核方案

在您的实际业务中,根据用户的级别、性别、地域等背景信息,可以执行不同的审核策略。

实现步骤
  1. 审核方根据客户的业务需求,分配不同的审核事件 ID(eventId)。例如:根据性别进行审核时,数美需要分别提供男性和女性的审核事件 ID(eventId)。在实际操作前,可联系商务经理创建审核群进行对接。
  2. 开通内容审核支持自定义事件审核功能。此功能暂不支持自助开通,请提交工单申请。
  3. 在通过融云 SDK 发送消息时,根据发送消息用户的不同,携带相应的事件 ID。融云服务端在送审时会将事件 ID 同步给数美,数美会根据传入的事件 ID 执行相应的审核策略。
计费说明

免费

客户端集成代码示例

从 5.6.8 版本开始支持,发送消息时,设置消息对象中的 auditInfo 内容,如下:

Java
MessageAuditInfo messageAuditInfo =
new MessageAuditInfo(
MessageAuditType.ALLOW,
"",
"strategy");
textMessage.setAuditInfo(messageAuditInfo);
Message message = Message.obtain("targetId", Conversation.ConversationType.PRIVATE, textMessage);

属性说明:

  • auditType:审核类型,需要设置为审核 MessageAuditType.ALLOW
  • strategy:对应为数美审核的事件 ID(eventId)。

注:使用默认审核逻辑时可不设置 auditInfo

提示

如果使用默认审核逻辑,则无需设置 auditInfo

Server API 接口

通过 Server API 发送消息时,可以在消息体中添加 audit 属性内容来实现:

JSON
{
"content":"Hello world! 单聊消息 ",
.....
"audit":
{
"auditType" : 1,
"strategy" : "message_restrict", // 例子,实际与数美的事件值一致。
},
"extra":""
}

属性说明:

  • auditType:审核类型,需要设置为 1(表示需要审核)。
  • strategy:对应数美审核的事件 ID(eventId)。
提示

如果使用默认审核逻辑,则无需设置 audit

自定义消息审核方案

融云支持自定义消息的审核功能,但目前暂不支持自助配置。您可以通过提交工单申请开通。在提交工单时,请提供以下信息:

  1. 应用的 App Key。
  2. 会话类型:需要审核的自定义消息所属的会话类型(如单聊、群聊、聊天室、超级群)。
  3. 自定义消息的消息类型(ObjectName),例如:融云内置消息类型 RC:TxtMsg
  4. 自定义消息中 Content 的 JSON 结构内容。目前仅支持 JSON 结构。以下是文本消息的示例结构:
JSON
{
"content":"Hello world!",
"user":
{
"id":"4242",
"name":"Robin",
"portrait":"http://example.com/p1.png",
"extra":"extra"
},
"extra":""
}
  1. 需要审核的 JSON 结构中的属性名称,例如客户的自定义消息结构如下,需要审核 msg 的内容:
JSON
{
"msg":"需要审核的内容",
"user":
{
"id":"4242",
"name":"Robin",
"portrait":"http://example.com/p1.png"
}
}

计费说明

免费

流式消息审核方案

该功能适用于大模型流式响应场景,例如 AI 生成文本、实时翻译或动态内容发送等场景,确保消息能够分块传输并逐段展示,减少延迟,增强互动性。 目前仅支持单聊和群聊场景使用,详见发送流式消息概述

功能说明
  • 同一流发送中断间隔最大 30 秒。超过 30 秒后服务自动判断为流已中断,不再接收后续发送的流数据,拉到的流 stopReason 为 29003。
  • 在持续发流超时情况下最长支持 30 分钟,超过 30 分钟后自动阶段并丢弃 30 分钟后的流数据,拉到的流 stopReason 为 29004。
开通位置

不需要开通,通过设用 Server API 接口可直接发送流式消息。

支持 SDK 版本
  • IMLib SDK:Android、iOS、Web、Electron SDK 在 5.16.0 版本开始支持。
  • IMKit SDK:Android、iOS SDK 在 5.16.0 版本开始支持。
计费说明

流式消息审核费用与 IM 消息审核计费中的文本审核计费一致。

统计规则:
  • 流式消息正常计入分发、下行统计,终端 SDK 每次拉取流式消息时,计做一个消息下行数据。
  • 以单聊场景为例:
    • 一个 SDK 发送消息,需要返回流式消息时,将产生 2 条分发消息,3 条下行消息
      • 消息分发包括:流式消息首包、流式消息摘要的同步。
      • 消息下行包括:流式消息首包、流式消息摘要的同步、SDK 拉取完整消息内容。
常见问题
  1. 群聊定向消息是否支持发送流式消息? 支持,最多可以定向发送 20 个群成员。
  2. 流式消息是否支持消息回调、消息路由功能? 支持,流式消息的首次发送时会生成一条消息,该条消息支持消息回调和消息路由功能,客户收到此条消息后,可根据消息 ID 获取流式消息内容。
  3. 一条流式消息,从开始到结束是否有时长限制? 从开始到结束最长为 30 分钟,超过后按超时处理自动结束。

获取 IM 审核结果

  1. 开通 IM 审核服务后,您可以在风控后台查询,具体操作请参考:风控后台常见功能操作文档
  2. 通过审核结果回调,您可以实时接收审核结果详情,详见审核结果回调

开通位置

登录融云控制台, 在 IM 与音视频审核页面中配置回调地址。请确保您提供的回调地址能够在公网正常访问。

计费说明

免费

服务端回调请求示例

JSON
POST review_result.php HTTP/1.1
Host: example.com
RC-App-Key: uwd1c0sxdlx2
RC-Timestamp: 1408710653491
RC-Nonce: 14314
RC-Signature: 45beb7cc7307889a8e711219a47b7cf6a5b000e8
Content-Type: application/json

{
"result":10000,
"content":{****},//审核的消息结构 JSON
"serviceProvider":"ShuMei",
"msgUID":"596E-P5PG-4FS2-7OJK",
"resultDetail":"{****}";//审核结果详细 JSON 结构
}
提示
  • 只要返回 HTTP 200 OK 响应,服务端会认为状态已同步,无需返回任何参数。
  • 如果响应超时超过 5 秒,服务端会重试推送 3 次;若仍然失败,即时通讯服务将默认下发该消息。
  • 如果短时间内出现大面积超时,服务端会暂时停止请求您的服务器,并在 90 秒后重新尝试发送回调请求。

IM 用户信息托管审核方案

支持设置用户、好友、群组、群成员的资料审核。

提示
  • 针对 5.16.0 之前版本的 SDK 如设置了资料信息审核不通过后,将返回错误码 25480。
  • 目前仅支持国内数据中心,暂不支持海外数据中心(数美针对此功能暂不支持外语审核能力)。
  • 托管资料设置不支持融云敏感词审核。

开通位置

登录融云控制台,在 IM & 音视频审核>IM 信息托管配置中配置。

计费说明

托管资料审核与 IM 消息审核计费方式一致,审核数量与 IM 消息审核数累加在一起进行计费。

支持 SDK 版本

  • IMLib SDK:Android、iOS、Web、Electron IMLib SDK 从 5.16.0 版本开始支持。
  • IMKit SDK:Android、iOS SDK 从 5.16.0 版本开始支持。

Kit 层设置不成功时示例:


用户资料审核配置

功能描述:
  • 内置属性:除头像外,所有属性都使用文本审核方式。
  • 自定义属性:仅支持文本审核。
  • 最多可以设置 20 个需要审核的资料信息(包括所有内置和自定义属性)。
  • 设置审核时最少需要选择一个审核的属性。
  • 审核默认策略:
    • 文本:默认审核涉政&违禁&暴恐&色情&辱骂&广告&灌水&无意义,与 IM 消息审核一致。
    • 图片:默认审核涉政识别、广告识别、色情识别、暴恐识别,涉政和广告为必选项不支持删除。

好友资料审核配置

功能描述:
  • 内置属性和自定义属性都使用文本审核方式。
  • 最多可以设置 20 个需要审核的资料信息(包括所有内置和自定义属性)。
  • 设置审核时最少需要选择一个审核的属性。
  • 审核默认策略:
    • 文本:默认审核涉政&违禁&暴恐&色情&辱骂&广告&灌水&无意义,与 IM 消息审核一致。

群组资料审核配置

功能描述:
  • 内置属性:除头像外,所有属性都使用文本审核方式。
  • 自定义属性:仅支持文本审核。
  • 最多可以设置 20 个需要审核的资料信息(包括所有内置和自定义属性)。
  • 设置审核时最少需要选择一个审核的属性。
  • 审核默认策略:
    • 文本:默认审核涉政&违禁&暴恐&色情&辱骂&广告&灌水&无意义,与 IM 消息审核一致。
    • 图片:默认审核涉政识别、广告识别、色情识别、暴恐识别,涉政和广告为必选项不支持删除。

群成员资料审核配置

功能描述:
  • 只有内置属性,使用文本审核方式。
  • 设置审核时最少需要选择一个审核的属性。
  • 审核默认策略:
    • 文本:默认审核涉政&违禁&暴恐&色情&辱骂&广告&灌水&无意义,与 IM 消息审核一致。

如何拿到资料审核结果

当托管资料触发审核时,融云可以将审核结果实时状态同步到您的应用服务器,请确保公网可访问您提供的回调接收地址。具体请参考文档说明:托管信息审核结果回调

功能描述:
  • 提供信息托管资料审核结果的回调地址设置功能。
  • 设置后,审核通过或不通过的所有结果都会同步到客户设置的服务器地址。

用户信息托管常见问题

  1. 自定义的用户、群组、好友属性信息是否支持图片审核? 不支持,自定义属性仅支持文本审核。
  2. 设置的审核属性是否有上限? 有,上限为 20个,针对用户、好友、群组、群成员每个类别下的属性最多可以设置 20 个审核项。
  3. 通过 Server API 设置的托管资料信息是否支持审核? 默认通过 Server API 设置的资料信息不支持审核,如需要审核可以在开发者后台— IM 信息托管配置中开启。
  4. 是否支持审核结果回调? 支持,审核通过或不通过的内容都会同步到客户的服务器地址,需要客户在开发者后台— IM 信息托管配置中设置回调地址;如果只想针对审核不通过的结果进行回调,请提交工单。
  5. 托管资料设置是否支持融云敏感词审核? 不支持。

消息回调服务

消息回调服务会根据您在控制台配置的路由规则拦截发送中的消息。被拦截的消息副本会先行发送至您指定的应用服务器(App 后端), 然后即时通讯服务端会根据 App 后端返回的响应结果,决定是否将消息下发、是否替换消息中的内容,以及如何进行内容替换。 详见消息回调

开通位置

登陆 融云控制台,参考截图位置开通审核服务并配置路由规则:

计费说明

开发环境免费使用;生产环境功能使用费 1000 元/月。

服务端回调请求和回调响应示例

JSON
POST /receive_message.php?timestamp=1408710653491&nonce=14314&signature=45beb7cc7307889a8e711219a47b7cf6a5b000e8 HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded

appKey=123&content={"content":"123"}&fromUserId=fid123&targetId=tid123&msgType=RC:TxtMsg&messageId=596E-P5PG-4FS2-7OJK&msgTimeStamp=1408710653491&channelType=ULTRAGROUP&os=Server&busChannel=basketball
JSON
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8

{ "pass": 1 }

替换消息提示

替换消息内容对发送端、接收端的本地与服务端的历史消息记录有不同的影响。请谨慎使用此功能。

  • 单聊和群聊消息替换后,发送方的本地和服务端历史消息中存储的是替换前的内容,而接收方本地和服务端存储的是经过替换后的内容。
  • 聊天室消息替换后,发送方本地是替换前的内容,接收方本地是经过替换后的内容;服务端存储的是替换后的内容。(退出聊天室重新进入后拉取消息时为替换后的内容)。
  • 超级群消息替换后,发送方本地是替换前的内容,接收方本地是经过替换后的内容;服务端存储的是替换后的内容。(换端登录后拉取历史消息时为替换后的内容)。

常见问题

  1. 消息回调默认不会对 Server API 接口发送的消息生效。如需将 IM Server API 发送的消息按照您配置的路由规则过滤并发送到应用服务器,需要在控制台的免费基础功能页面开启 Server API 发送消息过滤敏感词功能。
  2. 如字段中数据大小超出限制、数据格式错误会导致消息下发失败。
  3. 如果应答超时 5 秒,服务端会再尝试推送 3 次,如果仍然失败,即时通讯服务默认将下发此条消息。如需希望不下发,请提交工单申请开通异常模板消息不下发功能。
  4. 如短时间内有大面积超时,将暂时停止请求您的服务器,90 秒后会继续发送回调请求。
  5. 非违规类消息为什么被拦截了?消息回调的审核结果完全由您服务端把控,可先排除下 2 和 3 的情况,然后看下是否是服务端返回了 pass:0。

融云内置敏感词服务

即时通讯(IM)服务已内置敏感词机制。注意,敏感词机制仅是一种基础保护机制,且仅限于文本内容。具体请参考文档说明:敏感词机制

开通位置

登陆 融云控制台,参考截图位置配置过滤词或替换词。如需增加词量可设置敏感词上限数调整

计费说明

默认支持 50 个免费词;增加词量计费标准为1000 词 / 600 元。

服务端添加敏感词请求示例

Java
RongCloud rongCloud = RongCloud.getInstance("AppKey", "AppSecret");
//自定义 Api 地址方式
//RongCloud rongCloud = RongCloud.getInstance(appKey, appSecret,api);
SensitiveWord sensitiveWord = rongCloud.sensitiveword;
SensitiveWordModel sentiveWord = new SensitiveWordModel()
.setType(0)
.setKeyword("黄赌毒")
.setReplace("***");
ResponseResult addesult = sensitiveWord.add(sentiveWord);
System.out.println("sentiveWord add: " + addesult.toString());

常见问题

  1. 默认支持 50 个敏感词,如需增加个数请联系商务经理。
  2. 触发敏感词默认没有通知,如需给用户做提示语,需要在控制台的免费基础功能页面开启含敏感词消息屏蔽状态回调发送端功能。
  3. 如果已经设置完敏感词或替换词后发消息没生效,可确认是否没到 15 分钟的服务生效时间。

客户端如何知道消息是否被拦截

默认情况下,消息发送方无法感知消息是否已被融云审核服务拦截。如果 App 希望在消息因触发审核规则而无法下发时通知消息发送方,可开通含敏感词消息屏蔽状态回调发送端功能。

融云的内容审核服务(包括消息敏感词、IM 审核服务、消息回调服务),会在以下情况下拦截消息:

  • 文本消息内容命中了您自定义的消息敏感词(屏蔽敏感词),导致消息不下发给接收方。
  • 消息命中了IM 审核服务,导致消息不下发给接收方。
  • 消息命中了消息回调服务设置的路由规则,导致消息不下发给接收方。

开通位置

登陆融云控制台,在免费基础功能页面开启含敏感词消息屏蔽状态回调发送端功能。

计费说明

免费

客户端敏感词拦截监听示例代码

Java
//设置敏感词拦截监听
RongCoreClient.getInstance().setMessageBlockListener(new IRongCoreListener.MessageBlockListener() {
@Override
public void onMessageBlock(BlockedMessageInfo info) {
RongCoreClient.getInstance().getMessageByUId(info.getBlockMsgUId(), new IRongCoreCallback.ResultCallback<Message>() {
@Override
public void onSuccess(Message message) {
//获取本地消息成功
message.setSentStatus(Message.SentStatus.FAILED);
//如果使用的是 IMKit ,需要调用 IMCenter 的 setMessageSentStatus 方法,会自动刷新 UI;
//如果是使用的 IMLib 则需要您自行处理 UI 刷新
RongCoreClient.getInstance().setMessageSentStatus(message, new IRongCoreCallback.ResultCallback<Boolean>() {
@Override
public void onSuccess(Boolean aBoolean) {
//调用设置消息发送状态方法成功
}

@Override
public void onError(IRongCoreEnum.CoreErrorCode e) {
//调用设置消息发送状态方法失败
}
});
}

@Override
public void onError(IRongCoreEnum.CoreErrorCode e) {
//获取本地消息失败
}
});


}
});

如何针对违规用户做处理

  • 封禁用户:封禁后会即时断开该用户的 IM 连接,且封禁期内无法连接。 如需封禁后永久不许连接融云,可同时作废 Token

  • 针对群组会话处理方案 禁言指定群成员:只是让他无法发言,但是不会退出群聊,依然可以收消息。 退出群组:将用户从群中移除,但不影响客户的连接。

  • 针对聊天室会话处理方案 禁言指定聊天室用户:被禁言用户可接收查看聊天室中其他用户聊天信息,但不能发送消息。 封禁聊天室用户:被封禁用户在封禁时间内不能加入此聊天室。但不影响用户的连接。

场景 2:音视频内容安全管控

通过此功能,您可以实时监控直播连麦、音视频通话中的违规行为,详见音视频内容审核概述:融云只会将审核结果通过回调服务发往到您的应用服务器不会对用户执行任何操作。通过解析审核结果,业务侧可决策是否需要对 App 的用户执行封禁等操作。

配置音视频审核

指定音视频审核的启动方式:

  • 自动启动:音视频会话开始就开始审核,不需要额外配置。
  • 手动启动:由业务侧主动调用 API 启动审核任务。这种方式下同时支持通过 API 结束审核。详见审核任务管理配置代码。音视频会话结束时自动停止审核。

详见审核任务管理

开通位置

登陆融云控制台,参考截图位置开通审核服务。 :开通音视频审核的前提是必须开通音视频服务。

计费说明

开发环境,免费体验 7 天(含 21 万分钟音频流和 420 万张视频审核用量),免费额度用尽后,将关停服务;

生产环境,首次开通可免费体验 7 天(含 21 万分钟音频流和 420 万张视频审核用量),免费额度用尽后,将关停服务。再次开启需要预存 980 元开启并开始计费。

每日结算前 1 天用量费用,按时长计费内容精确到分钟,不足 1 分钟按 1 分钟计算。

具体计费明细请参考知识库:音视频审核服务计费说明

审核任务管理配置代码示例

JSON
POST /rtc/contentcensor/start.json HTTP/1.1
Host: api.rong-api.com
App-Key: XXX
Nonce: 1027489915
Timestamp: 1609754958
Signature: 357cef9b529edd1ed4f34bd8df52de00a909914b
Room-Id: 123
Session-Id: 456
Content-Type: application/json

{
"users": [{
"userId": "xxxxx",
"scene": "xxx",
"censorType": 0,
"streams": [{
"streamId": "xxxxx"
}]
},
{
"userId": "xxxx2x",
"scene": "xxx",
"censorType": 1,
"streams": [{
"streamId": "xxx3xx"
},
{
"streamId": "xx4xxx"
}
]
}
]
}

获取音视频审核结果

  1. 开通服务后,可在三方的控制台查询, 详见风控后台常见功能操作文档
  2. 可使用审核结果回调,实时接收审核结果详情,详见音视频审核结果回调

开通位置

登录融云控制台,在 IM & 音视频审核页面配置回调地址。请确保公网可访问您提供的回调接收地址。

计费说明

免费

处理违规用户

场景 3:APP 登录鉴权

通过 APP 登录鉴权,禁止黑产用户连接融云。 根据应用包名分别开通 Android 和 iOS 的合法性校验。Android 通过应用签名判断,iOS 通过 Bundle Id 判断。不合法的应用将无法连接融云服务。

开通位置

无法自主开通,请提交工单申请开通防黑产配置

在工单中,针对不同平台,您需要提供以下信息:

平台提供的信息
AndroidApp key、包名、应用签名 SHA1 值
iOSApp key、包名
Web安全域名
:Web 没有防黑产配置,但可配置安全域名设置,除安全域名以外,其他域名对融云 IM 服务的调用都不会生效。

支持 SDK 版本

Android,IOS 端 SDK 在 4.0.1 及以上版本支持,Web 端不受版本限制。

注意事项

开启此功能后,⼩于 4.0.1 的旧版本,也⽆法连接融云 IM 服务,因为融云⽆法确认⿊产使⽤的是哪个旧版本的 SDK。

Android 获取应⽤签名⽅式:

利⽤ Android SDK ⾃带的⼯具 keytool 执⾏指令 keytool -list -v -keystore 应⽤签名路径获取到应⽤签名的 SHA1 值,例如:SHA1:53:FD:54:DC:19:0F:11:AC:B5:22:9E:F1:1A:68:88:1B:8B:E8:54:42

计费说明

免费

常见问题

  1. 融云国内数据中心的默认文件服务器是七牛,七牛有自己的消息审核机制,且融云无法干预,如果您遇到了多次被七牛拦截的情况建议开通内容审核服务,可以知道消息违规情况,或者自行搭建文件服务器来避免被七牛拦截。
  2. 为什么消息没过审:
  • 可能是服务还未生效,可确认是否没到 15 分钟的服务生效时间。
  • 如果已经到了生效时间可先自行检查下是否同时配置了消息回调或者敏感词,这三者有审核优先级的关系:
    • 融云敏感词优先级最高且不支持调整优先级顺序;
    • 内容审核和消息回调的优先级取决于开通顺序,先开通的优先级高于后开通的。
  • 如果不确定当前审核的优先级可联系融云查看,若是要调整这两者的优先级请提交工单
  • 以上两点都排除后,请提交工单排查。
  1. 为什么发送方没有提示:消息被拦截的情况下发送方是无感知的,并且发送方也不会有任何展示,需要在控制台免费基础功能页面开启含敏感词消息屏蔽状态回调发送端功能。然后参考知识库做拦截提示:消息被拦截后,各平台客户端如何处理被拦截消息的状态
  2. 默认审核机制仅对从客户端 SDK 发送的消息生效,如果 IM Server API 发送的消息也需要过敏感词机制,需要在控制台免费基础功能页面开启 Server API 发送消息过滤敏感词功能。
  3. 如何调整音视频的审核策略:需要联系商务经理找风控方,风控方统一控制,暂不支持自主修改。
  4. 如何实现审核或对接第三方审核服务:请提交工单申请调整音视频自定义审核,注意:要说明是音频还是视频。
  5. 如何针对违规的用户或房间进行封禁处理:融云只会将审核结果通过回调服务发到您配置的指定回调地址。您来通过解析审核结果,决策是否需要对 App 的用户执行封禁等操作。 App 的用户执行封禁等操作。
  6. 为什么有的音视频未过审:风控方限制通话 10s 以上的才会过审,您确认下是否通话时间不到 10s。
  7. 如何调整音视频审核截帧时长:联系商务经理沟通。