反垃圾(内容审核)
更新时间: 2024/05/27 10:43:48
目前云信支持三类内容审核功能,分别为客户端本地反垃圾、安全通与客户自定义反垃圾。
客户端本地反垃圾
功能介绍
客户端本地反垃圾是指在发送文本消息前,由客户端先对内容进行审查,并根据审查结果,决定是否投递、替换消息。反垃圾规则支持关键字和正则表达式两种匹配方式。
客户端本地反垃圾可用于对单聊、群聊和聊天室的文本消息进行内容安全检测。如需检测图片、音视频等其他类型的消息,请使用安全通。
实现流程
准备阶段
-
在控制台首页应用管理中选择应用,然后单击 IM 即时通讯下的功能配置按钮进入功能配置页。
-
顶部选择全局功能页签,开通客户端反垃圾功能。
-
阅读并确认信息后,单击确认。
-
开通后,单击子功能配置配置反垃圾词库。
替换/拦截规则 说明 本地拦截库 客户端检测到文本消息存在敏感词汇后,直接拦截违规文本消息。发送者将收到对应的警告或提示,一般对应等级最高的违规,如消息存在涉政、反动内容。 本地替换库 客户端将检测到的敏感词汇替换成指定的文本,再将替换后的消息发送给服务器。 服务端拦截库 检测到敏感词汇后,云信服务器拦截涉及的违规消息。违规消息仅对发送者可见,接收方无法收到违规消息。一般对应消息存在广告等违规场景。 -
完成配置后单击发布词库将反垃圾词库下发到客户端 SDK。
运行阶段
登录 IM 时,SDK 会自动向云信服务端获取反垃圾词库。登录后,即可调用checkLocalAntispam:error:
方法审核文本消息是否存在违规内容。
- API 原型
java@protocol NIMAntispamManager <NSObject>
/**
* 本地反垃圾检查器
*
* @param option 本地反垃圾检查选项,option.content表示待检查的文本消息,option.replacement表示用于本地替换的字符串
* @param error 错误提示
* @discussion 此扩展不会漫游到其他端,上层需要保证 NSDictionary 可以转换为 JSON。
* @return 本地反垃圾检查结果,本地反垃圾列表会在每次登录后同步更新
* 因为网络问题,或者没有登录,都会导致本地反垃圾列表无效的情况,error 中会包含具体出错原因
*/
- (NIMLocalAntiSpamCheckResult *)checkLocalAntispam:(NIMLocalAntiSpamCheckOption *)option
error:(NSError **)error;
@end
- 参数说明
参数 | 类型 | 说明 | |
---|---|---|---|
option | NIMLocalAntiSpamCheckOption | 本地反垃圾选项,这个选项用于反垃圾的本地检查,可以用这个选项进行一些字符串的本地替换操作 |
- NIMLocalAntiSpamCheckResult 类型,具体类型如下:
objc/**
* 本地反垃圾检查结果类型
*/
typedef NS_ENUM (NSInteger, NIMLocalAntiSpamOperate){
/* 本地反垃圾列表不存在 */
NIMAntiSpamOperateFileNotExists,
/* 本地替换 */
NIMAntiSpamResultLocalReplace,
/* 本地屏蔽 */
NIMAntiSpamResultLocalForbidden,
/* 服务器屏蔽 */
NIMAntiSpamResultServerForbidden,
/* 没有命中词库,检查通过 */
NIMAntiSpamResultNotHit,
/* 解析失败 */
NIMAntiSpamResultError
};
/**
* 本地反垃圾检查选项
* @discussion 这个选项用于反垃圾的本地检查,可以用这个选项进行一些字符串的本地替换操作
*/
@interface NIMLocalAntiSpamCheckResult : NSObject
/**
* 结果类型
*/
@property (nonatomic, assign, readonly) NIMLocalAntiSpamOperate type;
@end
审核结果
如果命中客户端本地反垃圾,SDK 接口会回调结果。如果命中并配置了服务端拦截以及开通 IM 消息抄送,IM 消息抄送会通过 antispam
字段进行标记。
如果命中并配置了服务端拦截,那么在发送消息前,需要配置相应的属性(NIMMessage.antiSpamOption.hitClientAntispam
为 YES)。如果不设置,服务器不会进行拦截。
安全通
安全通(又称“易盾反垃圾”)是网易云信提供的内容安全增值业务,为您提供全方位的内容安全检测服务。开通安全通功能并配置安全通检测规则后,指定类型的消息都会先经由安全通进行内容安全检测,之后才会转发给接收端的应用用户。安全通目前支持单聊、群聊、聊天室和圈组的文本消息、图片消息、自定义消息以及用户头像和用户资料等类型的内容安全检测。
更多 IM 安全通的功能介绍,请参见安全通概述。
技术原理
若您需要云信服务器将审核结果抄送到您的应用服务器,即上图中的流程 6,请先开通易盾异步反垃圾抄送。
实现流程
准备阶段
前往云信控制台开通安全通。
运行阶段
开通安全通服务后,调用发送消息方法时传入相关参数(NIMAntiSpamOption
)可实现消息内容过安全通审核。
单聊群聊等指定类型的消息会根据检测规则进行内容安全检测。除此之外,自定义消息如果需要经过安全通检测,请参考以下方式进行配置。
在 iOS 平台中,如果需要对自定义消息进行安全通检测,需要对即将发送的消息 IMMessage
传递参数为 NIMAntiSpamOption
对象,开发者需要构造这个 NIMAntiSpamOption
对象。其中,content
参数用于说明自定义消息的内容是文本还是图片,以便安全通按照相应类型进行内容安全检测处理。NIMAntiSpamOption
参数说明及示例如下:
- NIMAntiSpamOption 参数说明:
参数 | 说明 |
---|---|
yidunEnabled | BOOL,是否过安全通检测,若 App 并没有开通安全通,则设置无效。若设置为 NO,则不使用反垃圾 |
content | NSString,自定义内容安全字段,仅对自定义消息有效 |
businessId | NSString,用户在易盾配置的额外反垃圾的业务 ID |
hitClientAntispam | BOOL,是否命中客户端反垃圾 @discussion 默认为 NO,使用 NIMAntispamManager 中的 checkLocalAntispam:error: 方法来确定所给文本是否命中客户端本地反垃圾,根据结果填写这个字段 |
content 必须传递 JSON 对象,长度不超过 5000 字节,格式如下
json{
"type": 1, //1:文本,2:图片
"data": "" //文本内容or图片地址
}
- 示例
objc// 该帐号为示例,请先注册
NSString *account = @"testAccount";
// 以单聊类型为例
NIMSession *session = [NIMSession session:account type:NIMSessionTypeP2P];
NSString *text = @"这条不需要过安全通";
// 创建一个文本消息
NIMMessage *textMessage = [NIMMessage new];
textMessage.text = text;
// 构造反垃圾对象
NIMAntiSpamOption *antiSpamOption = [NIMAntiSpamOption new];
antiSpamOption.yidunEnabled = NO;
textMessage.antiSpamOption = antiSpamOption;
// 发送给对方
[NIMSDK.sharedSDK.chatManager sendMessage:textMessage toSession:session completion:nil];
获取审核结果
匹配消息体命中敏感词后,可通过 NIMMessage#yidunAntiSpamRes
字段通知客户端结果,该字段需要通过 sendMessage:didCompleteWithError
回调获取。(注:请提前添加消息回调的监听。)
只有被安全通拦截的消息才会有yidunAntiSpamRes
返回。对于疑似消息根据云信控制台设置的策略来判断,如果疑似消息被拦截会有yidunAntiSpamRes返
回,如果疑似消息放行则没有yidunAntiSpamRes
返回。
返回的审核结果 yidunAntiSpamRes
为 JSON 字符串格式,请自行解析或者反转成 JSON 对象使用。yidunAntiSpamRes 字段定义如下:
名称 | 类型 | 说明 |
---|---|---|
code | Integer | 状态码:
|
type | String | 内容审核类型
|
version | String | 易盾内容审核的接口版本 |
taskId | String | 审核任务的 ID |
suggestion | Integer | 建议处理方式
|
status | Integer | 内容审核请求结果 |
ext | String | 内容审核结果,对应易盾的 result 字段,result 字段详情参见易盾文档(注:本链接仅以“单次同步文本检测的 result 字段说明”为例) |
匹配消息体命中敏感词后,发送方无感知(SDK 会返回发送成功),但是接收方收不到。
如果已开通 IM 消息抄送,消息抄送会携带yidunRes
字段,并通过其中action
字段标记检测结果,0:通过,1:嫌疑,2:不通过 (只有yidunBusType
为 0 或 2 时,抄送时才有此字段)。
yidunBusType
枚举如下:
- 0:安全通文本反垃圾业务
- 1:安全通图片反垃圾业务
- 2:用户资料反垃圾业务
- 3:用户头像反垃圾业务
对应的图片返回labels
字段, 文本类反垃圾参考labels字段的释义、 图片类反垃圾参考labels字段的释义。
安全通重要参数
参数 | 类型 | 说明 |
---|---|---|
yidunAntiSpamExt | 易盾反垃圾扩展字段 | 透传给易盾的反垃圾含圈组版的检测参数,具体请参见易盾的反垃圾含圈组版用户可扩展参数,格式为json,长度限制1024 |
yidunAntiSpamRes | 易盾反垃圾结果 | 易盾反垃圾触发时返回的结果字段,格式为json |
yidunAntiCheating | 易盾反作弊字段 | 透传给易盾的反作弊检测参数,格式为json,长度限制1024 ,具体请参见文本防刷版开发文档 |
自定义反垃圾
如果您的应用已接入第三方内容安全审核服务(第三方反垃圾服务),您可通过云信服务端的第三方回调服务来实现第三方反垃圾,即发送方发送消息后先过第三方内容安全审核后再判断是否投递至接收方。