反垃圾

目前云信支持四类 反垃圾 功能,分别为通用反垃圾、客户端本地反垃圾、易盾反垃圾与客户自定义反垃圾。

通用反垃圾是指使用IM默认的反垃圾功能。通用反垃圾不需要任何配置。具体详见产品介绍。

客户端本地反垃圾

该功能需要联系商务顾问申请开通。支持单聊、群聊和聊天室的文本消息反垃圾。反垃圾规则支持关键字和正则表达式两种匹配方式。

反垃圾词库由开发者在云信后台管理配置,SDK 内负责下载并管理这个词库。垃圾词汇命中后支持三种替换规则:

获取词库

SDK在登录的时候会自动向服务器获取词库。

敏感词检测

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

LocalAntiSpamResult result = NIMClient.getService(MsgService.class).checkLocalAntiSpam(contentreplacement);

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);
}

易盾反垃圾

易盾反垃圾是指在控制台开通了易盾功能,通过易盾进行反垃圾,支持:单聊、群聊、聊天室消息,用户头像和用户资料等反垃圾。

如需使用易盾反垃圾,请先申请开通。开通后,可以到控制台配置开启易盾反垃圾的类型,例如:IM的单聊、群聊、聊天室的文本和图片消息等经由易盾反垃圾。

自定义消息比较特殊,开发者如需自定义消息经由易盾反垃圾,在发送消息时需要通过配置NIMMessage的antiSpamOption,来说明自定义消息的内容是文本还是图片、视频等,以便易盾按照相应类型进行反垃圾处理。

云信反垃圾包括通用反垃圾以及易盾反垃圾,开通了易盾反垃圾的App,消息将优先转发到易盾进行反垃圾过滤。如果需要对当前消息进行特殊配置,Android 需要对即将发送的消息调用 IMMessagesetNIMAntiSpamOption 方法,传递参数为 NIMAntiSpamOption 对象,开发者需要构造这个 NIMAntiSpamOption 对象。支持的配置项目如下所示:

NIMAntiSpamOption 参数说明

NIMAntiSpamOption参数 说明
enable boolean,是否过易盾反垃圾,若App 并没有开通易盾,则设置无效。若设置为false,则此消息只过通用反垃圾
content String,自定义反垃圾字段,仅对自定义消息有效
antiSpamConfigId String,可选项,易盾反垃圾配置id,可以指定此消息过易盾某个反垃圾配置

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

{
    "type": 1, //1:文本,2:图片,3视频
    "data": "" //文本内容or图片地址or视频地址
}
// 该帐号为示例,请先注册
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);

自定义反垃圾

网易云信还支持开发者通过「第三方回调」来实现自定义的反垃圾。