回调通知指内容安全服务通过异步消息通知的方式向您发送机器内容检测或者人工审核的结果。OSS违规检测和内容检测API均支持回调通知。本文介绍了配置OSS违规检测和内容检测API回调通知的方法。

基本概念

名称 说明
扫描结果回调消息 OSS违规检测或者内容检测API完成您的检测请求后,由内容安全服务端将机器扫描的结果以POST请求的方式,发送到您设置的HTTP回调通知地址。
审核结果回调消息 您通过云盾内容安全控制台或者以调用接口的方式对机器检测的结果进行修改后,由内容安全服务端将审核的结果以POST请求的方式,发送到您设置的HTTP回调通知地址。
Seed Seed值用于校验发送到您设置的HTTP回调通知地址的请求是否来自内容安全服务端。
回调地址 回调地址是您在内容安全控制台配置的服务端地址,通常是您自己的业务服务器的公网地址。回调地址需要满足以下要求:
  • 应为HTTP/HTTPS协议接口的公网可访问的URL。
  • 支持POST方法。
  • 支持传输数据编码采用UTF-8。
  • 支持数据接收格式为application/x-www-form-urlencoded。
  • 支持表单参数 checksumcontent
回调次数 您的服务端接收到内容安全推送的回调结果后,若返回的HTTP状态码为200,表示接收成功;若返回其他的HTTP状态码,均视为您接收失败,我们将最多重复推送16次。
回调数据 回调数据是内容安全服务端向您设置的回调通知地址返回的数据内容。回调数据的结构描述见下表。
表 1. 回调通知表单数据
名称 类型 描述
checksum String <用户uid> + <seed> + <content>拼成字符串,通过SHA256算法生产。用户UID即阿里云账号ID,您可在阿里云控制台上查询。
说明 为防篡改,您可以在获取到推送结果时,按此算法生成字符串,与checksum做一次校验。
content String 字符串格式保存的JSON对象,请自行解析反转成JSON对象。根据不同的检测功能(OSS违规检测、内容检测API),content解析成JSON后的格式有所差异,详见下文Content说明。

OSS违规检测

扫描&审核回调通知设置

参照以下步骤,完成OSS违规检测的扫描和审核回调通知设置:

  1. 登录云盾内容安全控制台
  2. 前往设置 > OSS违规检测页面,并打开消息通知页签。
  3. OSS回调通知下,单击设置
    说明 如果您设置过回调地址,则此处显示查看,您可以单击查看

    oss违规,消息通知,回调
  4. OSS回调通知设置侧边页,完成以下配置,并单击设置
    配置项 说明
    回调地址 填入回调通知地址。
    生效模块 勾选要应用回调设置的功能模块,取值:
    • 增量扫描
    • 存量扫描
    开启审核回调 是否开启审核回调。
    开启扫描回调 是否开启扫描回调。
    扫描回调类型 开启扫描回调后,选择对哪种类型的扫描结果进行回调通知,取值:
    • 扫描结果违规
    • 扫描结果疑似
    • 扫描结果正常
    设置完成后,系统会自动生成一个Seed。Seed值用于校验您的回调接口收到的请求来自阿里云。请保存自动生成的Seed,并在调用相关接口时根据需要传入该参数。
    oss回调通知设置

Content说明

下表描述了OSS违规检测的回调数据中,content表单字段的结构。

名称 类型 是否必须 说明
bucket 字符串 OSS bucket的名称。
object 字符串 OSS文件名。
stock 布尔 是否是存量对象,true表示是存量,false表示是增量。
region 字符串 OSS文件所在地域。
freezed 布尔 对象是否被冻结,true表示被冻结,false表示未被冻结。
scanResult JSON对象 扫描结果。根据不同的检测对象(图片、视频),结构有差异。
auditResult JSON对象 您在云盾控制台审核页面上的审核结果。审核操作时才会有该字段,具体结构描述见auditResult
说明 如果只推送扫描结果,则没有该字段。
表 2. auditResult
名称 类型 是否必须 说明
suggestion 字符串 审核时给的建议值。取值:
  • block:审核时设置违规
  • pass:审核时设置正常
resourceStatus 整型 审核后,object的状态。取值:
  • 0:已删除
  • 1:已冻结
  • 2:可用可访问

content示例

{
    "bucket": "xxxxb",
    "freezed": false,
    "object": "xxx.jpg",
    "region": "cn-hangzhou",
    "scanResult": {
        "code": 200,
        "dataId": "5C919E2FBD6CD6940D4A8B46",
        "msg": "OK",
        "results": [
            {
                "label": "porn",
                "rate": 100.0,
                "scene": "porn",
                "suggestion": "block"
            },
            {
                "label": "normal",
                "rate": 99.6,
                "scene": "terrorism",
                "suggestion": "pass"
            }
        ],
        "taskId": "img1ZxzVQUuAz36scZEjyGXzx-1qpzhY"
    },
    "auditResult": {
        "resoureStatus": 2,
        "suggestion": "pass"
    },
    "stock": false
}

内容检测API

扫描结果回调设置

参照以下步骤,使用内容检测API的扫描结果回调:

  1. 自行准备好接收请求的HTTP回调地址以及Seed参数。
  2. 调用内容检测异步API接口时,传递相应的callbackseed请求参数,具体请参见API接口描述中的参数说明。
    callback,seed

审核结果回调设置

参照以下步骤,完成内容检测API的审核结果回调设置:

  1. 登录云盾内容安全控制台
  2. 前往设置 > 内容检测API页面,并打开消息通知页签。
  3. API审核回调通知下,单击设置
    说明 如果您设置过回调地址,则此处显示查看,您可以单击查看

    内容检测api,消息通知,回调
  4. API回调通知设置侧边页,完成以下配置,并单击设置
    配置项 说明
    回调地址 填入回调地址。

    设置完成后,系统会自动生成一个Seed。Seed值用于校验您的回调接口收到的请求来自阿里云。请保存自动生成的Seed,并在调用相关接口时根据需要传入该参数。


    api回调通知设置

Content说明

下表描述了内容检测API的回调数据中,content表单字段的结构。
名称 类型 是否必须 说明
scanResult JSON对象 扫描结果。根据不同的检测对象(图片、视频),结构有差异。
auditResult JSON对象 您在云盾控制台审核页面上的审核结果。审核操作时才会有该字段,具体结构描述见auditResult
说明 如果只推送扫描结果,则没有该字段。
humanAuditResult JSON对象 阿里云的人工审核结果。如果您购买了阿里云的人工审核服务,人工审核后结果会在该字段中。具体结构描述见表 4
表 3. auditResult
名称 类型 是否必须 说明
suggestion 字符串 审核时给的建议值。取值:
  • pass:审核时设置正常
  • block:审核时设置违规
labels JSON数组 人工审核给内容打的标签,取值可以为以下可选值中的一个或者多个:
  • porn:鉴黄
  • terrorism:暴恐涉政
  • ad:图文广告
表 4. humanAuditResult
名称 类型 是否必须 说明
suggestion 字符串 阿里云人工审核的建议,取值:
  • block:阿里云人工审核结果为违规
  • pass:阿里云人工审核结果为正常
taskId 字符串 检测任务的ID。通过任务ID可以关联到对应内容的机器审核的结果。
dataId 字符串 您通过接口请求中传递的用于标识您检测内容的Id。

content示例

{

    "scanResult": {
        "code": 200,
        "msg": "OK",
        "taskId": "fdd25f95-4892-4d6b-aca9-7939bc6e9baa-1486198766695",
        "url": "http://1.jpg",
        "results": [
            {
                "rate": 100,
                "scene": "porn",
                "suggestion": "block",
                "label": "porn"
            }
        ]
    },
    "auditReult": {
        "suggestion": "block",
        "labels": [
            "porn",
            "ad",
            "terrorism"
        ]
    },
    "humanAuditResult":{
        "suggestion": "pass",
        "dataId":"yyyy",
        "taskId": "xxxxxx"
    }
}