Android

反垃圾(内容审核)

更新时间: 2024/09/04 18:06:30

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

  • 客户端反垃圾:可用于对单聊、群聊和聊天室的文本消息进行内容安全检测。
  • 安全通反垃圾:在客户端反垃圾的基础上,额外支持检测图片、音视频等其他类型的消息。
  • 自定义反垃圾:如果您的应用已接入第三方内容安全审核服务,可以通过服务端 第三方回调 接通。即发送方发送消息后,先过第三方内容安全审核,再判断是否投递至接收方。

客户端反垃圾

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

准备阶段

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

    image.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,请先开通 易盾异步反垃圾抄送

准备阶段

前往 网易云信控制台 开通安全通,详细步骤请参考 开通和配置 IM 安全通

运行阶段

开通安全通服务后,调用发送消息方法时传入相关参数(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 及以上版本 NIM SDK

匹配消息体命中敏感词后,可通过 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 字段详情参考《易盾文档》单次同步检测
语音、视频消息进行安全通反垃圾时,是异步检测的,并且检测结果是通过 IM 抄送通知开发者服务器。虽然命中后网易云信会自动删除服务器上的文件,但是在检测结果出来之前,消息可能已经被投递到接收方。因此如果开发者收到命中抄送后,对于单聊和群消息,请通过 IM 服务端接口进行 消息撤回。对于聊天室消息,请通过 IM 服务端接口 撤回聊天室消息
低于 8.7.0 版本 NIM SDK

匹配消息体命中敏感词后,发送方无感知(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。

自定义反垃圾

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

此文档是否对你有帮助?
有帮助
去反馈
  • 客户端反垃圾
  • 准备阶段
  • 运行阶段
  • 审核结果
  • 安全通反垃圾
  • 技术原理
  • 准备阶段
  • 运行阶段
  • 审核结果
  • 重要参数
  • 自定义反垃圾