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

背景信息

在使用回调通知功能前,请通过下表了解相关概念。

名称 说明
扫描结果回调消息 内容检测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说明。

扫描结果回调设置

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

审核结果回调设置

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

    消息通知,回调
  4. API回调通知设置侧边页,完成以下配置,并单击设置
    配置项 说明
    API回调通知设置 填入回调通知地址。
    设置完成后,系统会自动生成一个Seed。Seed值用于校验您的回调接口收到的请求来自阿里云。请保存自动生成的Seed,并在调用相关接口时根据需要传入该参数。
    回调通知设置

回调数据说明

启用回调通知后,内容安全将按照回调配置发送内容检测API回调通知。回调通知中包含content表单数据。下表描述了content表单字段的结构。

表 2. content表单字段结构描述
名称 类型 是否必须 说明
scanResult JSON对象 扫描结果。根据不同的检测对象(图片、视频),结构有差异。
auditResult JSON对象 您在云盾控制台审核页面上的审核结果。审核操作时才会有该字段,具体结构描述见表 3
说明 如果只推送扫描结果,则没有该字段。
humanAuditResult JSON对象 阿里云的人工审核结果。如果您购买了阿里云的人工审核服务,人工审核后结果会在该字段中。具体结构描述见表 4
表 3. auditResult
名称 类型 是否必须 说明
suggestion 字符串 审核时给的建议值。取值:
  • block:审核时设置违规
  • pass:审核时设置正常
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"
     }
}