Android

反垃圾(内容审核)

更新时间: 2024/03/15 16:14:37

目前云信支持三类内容审核功能,分别为客户端本地反垃圾、安全通与客户自定义反垃圾。

客户端本地反垃圾

功能介绍

客户端本地反垃圾是指在发送文本消息前,由客户端先对内容进行审查,并根据审查结果,决定是否投递、替换消息。反垃圾规则支持关键字和正则表达式两种匹配方式。

客户端本地反垃圾可用于对单聊、群聊和聊天室的文本消息进行内容安全检测。如需检测图片、音视频等其他类型的消息,请使用安全通

实现流程

准备阶段

  1. 在控制台首页应用管理中选择应用,然后单击 IM 专业版下的功能配置按钮进入 IM 即时通讯配置页。

    功能配置.png

  2. 顶部选择全局功能页签,开通客户端反垃圾功能。

    客户端反垃圾.png

  3. 阅读并确认信息后,单击确认

  4. 开通后,单击子功能配置配置反垃圾词库。

    配置词库.png

    替换/拦截规则 说明
    本地拦截库 客户端检测到文本消息存在敏感词汇后,直接拦截违规文本消息。发送者将收到对应的警告或提示,一般对应等级最高的违规,如消息存在涉政、反动内容。
    本地替换库 客户端将检测到的敏感词汇替换成指定的文本,再将替换后的消息发送给服务器。
    服务端拦截库 检测到敏感词汇后,云信服务器拦截涉及的违规消息。违规消息仅对发送者可见,接收方无法收到违规消息。一般对应消息存在广告等违规场景。
  5. 完成配置后单击发布词库将反垃圾词库下发到客户端 SDK。

运行阶段

登录 IM 时,SDK 会自动向云信服务端获取反垃圾词库。登录后,即可调用checkLocalAntiSpam方法审核文本消息是否存在违规内容。

  • API 原型
java/**
 * 检验本地反垃圾词库
 * @param content 需要检查的文本
 * @param replacement 指定 content 中被反垃圾词库命中后的替换文本
 * @return LocalAntiSpamResult 检验结果
 */
public LocalAntiSpamResult checkLocalAntiSpam(String content, String replacement);
  • LocalAntiSpamResult 参数说明
参数 说明
operator 命中的垃圾词操作类型,0:未命中;1:客户端替换;2:客户端拦截;3:服务器拦截;
content 将垃圾词替换后的文本
  • 示例
javaString content = "美国"
String replacement = "河蟹"

LocalAntiSpamResult result = NIMClient.getService(MsgService.class).checkLocalAntiSpam(content,replacement);

int operator = result.getOperator();
if (operator == 0){
    // 未命中
}else if(operator == 1){
    // 客户端替换
    content = result.getContent();
}else if(operator == 2){
    // 客户端拦截
    // 就不要发消息了
}else if(operator == 3){
    // 交给服务器
    // 在消息中设置命中属性
    message.setClientAntiSpam(true);
}

审核结果

如果命中客户端本地反垃圾,SDK 接口会回调结果。如果命中并配置了服务端拦截以及开通 IM 消息抄送,IM 消息抄送会通过 antispam 字段进行标记。

如果命中并配置了服务端拦截,那么在发送消息前,需要配置相应的属性(message.setClientAntiSpam(true))。如果不设置,服务器不会进行拦截。

安全通

功能介绍

安全通(又称“易盾反垃圾”)是网易云信提供的内容安全增值业务,为您提供全方位的内容安全检测服务。开通安全通功能并配置安全通检测规则后,指定类型的消息都会先经由安全通进行内容安全检测,之后才会转发给接收端的应用用户。安全通目前支持单聊、群聊、聊天室和圈组的文本消息、图片消息、自定义消息以及用户头像和用户资料等类型的内容安全检测。

更多 IM 安全通的功能介绍,请参见安全通概述

技术原理

安全通技术原理.png

若您需要云信服务器将审核结果抄送到您的应用服务器,即上图中的流程 6,请先开通易盾异步反垃圾抄送

实现流程

准备阶段

前往云信控制台开通安全通

运行阶段

开通安全通服务后,调用发送消息方法时传入相关参数(NIMAntiSpamOption)可实现消息内容过安全通审核。

单聊群聊等指定类型的消息会根据检测规则进行内容安全检测。除此之外,自定义消息如果需要经过安全通检测,请参考以下方式进行配置。

在 Android 平台中,如果需要对自定义消息进行安全通检测,需要对即将发送的消息调用 IMMessagesetNIMAntiSpamOption 方法,传递参数为 NIMAntiSpamOption 对象,开发者需要构造这个 NIMAntiSpamOption 对象。其中,content 参数用于说明自定义消息的内容是文本还是图片,以便安全通按照相应类型进行内容安全检测处理。NIMAntiSpamOption 参数说明及示例如下:

  • NIMAntiSpamOption 参数说明:
参数 说明
enable boolean,是否过安全通检测,若 App 并没有开通安全通,则设置无效。若设置为 false,则不使用反垃圾
content String,自定义内容安全字段,仅对自定义消息有效
antiSpamConfigId String,可选项,安全通配置 id,可以指定此消息过安全通某个检测配置。支持文本和图片两种消息类型

content 必须传递 JSON 对象,长度不超过 5000 字节,格式如下

json{
    "type": 1, //1:文本,2:图片
    "data": "" //文本内容or图片地址
}
  • 示例
java// 该帐号为示例,请先注册
String account = "testAccount";
// 以单聊类型为例
SessionTypeEnum sessionType = SessionTypeEnum.P2P;
String text = "这条不需要过安全通";
// 创建一个文本消息
IMMessage textMessage = MessageBuilder.createTextMessage(account, sessionType, text);

// 构造反垃圾对象
NIMAntiSpamOption antiSpamOption = new NIMAntiSpamOption();
antiSpamOption.enable = false;
textMessage.setNIMAntiSpamOption(antiSpamOption);

// 发送给对方
NIMClient.getService(MsgService.class).sendMessage(textMessage, false);

获取审核结果

8.7.0 及以上版本

匹配消息体命中敏感词后,可通过 IMMessage#getYidunAntiSpamRes 字段通知客户端结果,该字段需要通过 observeMsgStatus 回调获取。

只有被安全通拦截的消息才会有yidunAntiSpamRes返回。对于疑似消息根据云信控制台设置的策略来判断,如果疑似消息被拦截会有yidunAntiSpamRes返回,如果疑似消息放行则没有yidunAntiSpamRes返回。

返回的审核结果 yidunAntiSpamRes 为 JSON 字符串格式,请自行解析或者反转成 JSON 对象使用。yidunAntiSpamRes 字段定义如下:

名称类型说明
code Integer状态码:
  • 200:易盾内容审核结果返回正常
  • 404:易盾反回的内容审核结果为空,该情况下 yidunAntiSpamRes 中无 code 以外的字段
  • 414:易盾返回的内容审核结果过长,该情况下 yidunAntiSpamRes 中无 ext 字段
type String内容审核类型
  • text:文本
  • image:图片
version String易盾内容审核的接口版本
taskId String审核任务的 ID
suggestion Integer 建议处理方式
  • 0:通过
  • 1:嫌疑,建议人工复审
  • 2:不通过
status Integer内容审核请求结果
  • 2:检测成功
  • 3:检测失败只有图片审核(type="image")时才返回该字段。
  • ext String内容审核结果,对应易盾的 result 字段,result 字段详情参见易盾文档(注:本链接仅以“单次同步文本检测的 result 字段说明”为例)
    语音、视频消息进行安全通反垃圾时,是异步检测的,并且检测结果是通过 IM 抄送通知开发者服务器。虽然命中后云信会自动删除服务器上的文件,但是在检测结果出来之前,消息可能已经被投递到接收方。因此如果开发者收到命中抄送后,对于单聊和群消息,请通过 IM 服务端接口进行消息撤回;对于聊天室消息,请通过 IM 服务端接口撤回聊天室消息
    8.7.0 之前版本

    匹配消息体命中敏感词后,发送方无感知(SDK 会返回发送成功),但是接收方收不到。

    如果已开通 IM 消息抄送,消息抄送会携带yidunRes字段,并通过其中action字段标记检测结果,0:通过,1:嫌疑,2:不通过 (只有yidunBusType为 0 或 2 时,抄送时才有此字段)。

    yidunBusType枚举如下:

    • 0:安全通文本反垃圾业务
    • 1:安全通图片反垃圾业务
    • 2:用户资料反垃圾业务
    • 3:用户头像反垃圾业务

    对应的图片返回labels字段, 文本类反垃圾参考labels字段的释义、 图片类反垃圾参考labels字段的释义

    安全通重要参数

    参数 类型 说明
    yidunAntiSpamExt 易盾反垃圾扩展字段 透传给易盾的反垃圾含圈组版的检测参数,具体请参见易盾的反垃圾含圈组版用户可扩展参数,格式为json,长度限制1024 反作弊相关的email、phone、token、extension,抄送到yidunAntiCheating。其他用户增值信息,抄送到yidunAntiSpamExt。
    yidunAntiSpamRes 易盾反垃圾结果 易盾反垃圾触发时返回的结果字段,格式为json
    yidunAntiCheating 易盾反作弊字段 透传给易盾的反作弊检测参数,格式为json,长度限制1024 ,具体请参见文本防刷版开发文档反作弊相关的email、phone、token、extension,抄送到yidunAntiCheating。其他用户增值信息,抄送到yidunAntiSpamExt。

    自定义反垃圾

    如果您的应用已接入第三方内容安全审核服务(第三方反垃圾服务),您可通过云信服务端的第三方回调服务来实现第三方反垃圾,即发送方发送消息后先过第三方内容安全审核后再判断是否投递至接收方。

    此文档是否对你有帮助?
    有帮助
    去反馈
    • 客户端本地反垃圾
    • 功能介绍
    • 实现流程
    • 准备阶段
    • 运行阶段
    • 审核结果
    • 安全通
    • 功能介绍
    • 技术原理
    • 实现流程
    • 准备阶段
    • 运行阶段
    • 获取审核结果
    • 安全通重要参数
    • 自定义反垃圾