内容安全支持以异步消息通知的方式向您发送内容识别和您自助审核的结果。如果您的业务需要使用或集成相关数据,则可以配置回调通知。本文介绍了配置内容检测API回调通知的操作方法。
背景信息
内容检测API和OSS违规检测均支持回调通知。关于OSS违规检测回调通知,请参见OSS违规检测回调通知。
内容检测API回调通知分为扫描结果回调通知和审核结果回调通知。
- 扫描结果回调通知:内容安全完成检测请求后,服务端将识别的结果以POST请求的方式,发送到您设置的HTTP回调通知地址。 
- 审核结果回调通知:您通过自助审核或调用反馈接口修改识别的结果后,内容安全服务端将审核结果以POST请求的方式,发送到您设置的HTTP回调通知地址。更多信息,请参见自助审核。 
相关概念
在配置回调通知前,请了解下表中描述的相关概念。
| 名称 | 说明 | 
| 回调地址 | 回调地址是您在内容安全控制台配置的服务端地址,通常是您自己的业务服务器的公网地址。回调地址需要满足以下要求: 
 | 
| Seed | Seed值用于校验发送到您设置的HTTP回调通知地址的请求是否来自内容安全服务端。 | 
| 回调次数 | 您的服务端接收到内容安全推送的回调消息后,如果返回的HTTP状态码为200,表示接收成功;如果返回其他的HTTP状态码,均视为接收失败。如果接收失败,内容安全服务端会重复推送回调消息,直至您接收成功。内容安全最多重复推送回调消息3次。 | 
| 回调数据 | 回调数据是内容安全服务端向您设置的回调通知地址返回的数据内容。回调数据的结构描述见回调通知表单数据。 | 
表 1. 回调通知表单数据
| 名称 | 类型 | 描述 | 
| checksum | String | 总和校验码,由 说明  为防篡改,您可以在获取到推送结果时,按上述算法生成字符串,与checksum做一次校验。 | 
| content | String | 字符串格式保存的JSON对象,请自行解析反转成JSON对象。关于content解析成JSON后的结构,请参见下文content说明。 说明  在内容检测API和OSS违规检测中,content的参数结构不同。 | 
扫描结果回调通知
内容检测API的异步检测接口均支持扫描结果回调,例如图片审核异步检测、视频审核异步检测。您在发起异步调用时,如果希望内容安全向您返回扫描结果,则必须在请求参数中传入callback(回调地址)和seed(校验字符串)。
在异步调用时如果不使用扫描结果回调,则您只能通过定期轮询的方式获取异步检测结果。
操作步骤
- 自行准备好接收扫描结果的HTTP回调地址和Seed参数。 
- 调用内容检测异步API接口时,传递相应的callback和seed请求参数,具体请参见API接口描述中的参数说明。 
人工审核回调通知
人工审核接口不支持实时返回检测结果,系统支持回调方式通知调用方。人工审核分为人机审核和纯人工审核,两者的回调方式有一定的差异,以下分别进行介绍。
- 人机审核 - 如果您使用的是阿里云人工审核服务+机审服务,人工审核模块的回调需要通过控制台配置消息通知来实现,具体操作步骤如下: - 登录内容安全控制台。 
- 在左侧导航栏,选择。 
- 在机器审核页面,单击消息通知页签,然后单击新增通知。 
- 在新增通知对话框,输入方案名称、回调地址,选择加密算法、通知类型、审核结果。然后单击确定。 - 保存完成后,系统自动生成seed。seed值用于校验您的回调接口收到的请求来自阿里云。请保存自动生成的seed。 重要- 如果您已经配置了机审回调通知服务,您可以直接复用之前的配置,也可以根据业务需要重新配置。 
- 系统支持对于所有的审核结果进行回调,您也可以根据自己的业务场景选择部分审核结果进行回调。 
- 通知类型项请选择阿里云人审结果。 
- 加密算法方式: - SHA256:使用HMAC-SHA256加密算法。 
- 国密SM3:使用国密SM3加密算法,返回十六进制的字符串,且字符串由小写字母和数字组成。 - 例如,abc经国密SM3加密后返回66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0。 
 
 
- 在业务场景管理页签,单击目标业务场景右侧操作列的关联消息通知,关联您配置的回调通知方案。 
 
- 纯人工审核 - 如果您使用的是阿里云纯人工审核服务,人工审核模块的回调需要通过请求参数传入callback(回调地址)和seed(校验字符串)来实现。 
content说明
启用回调通知后,内容安全将按照回调配置发送内容检测API回调通知。回调通知中包含content表单数据。下表描述了content表单字段的结构。
表 2. content表单字段结构描述
| 名称 | 类型 | 是否必须 | 说明 | 
| scanResult | JSONObject | 否 | 扫描结果。根据检测对象(图片、视频)的不同,结构有差异。 | 
| auditResult | JSONObject | 否 | 您的自助审核结果。发生自助审核操作时才会有该字段。具体请参见auditResult。 说明  如果只推送扫描结果,则没有该字段。 | 
| humanAuditResult | JSONObject | 否 | 阿里云的人工审核结果。如果您购买了阿里云的人工审核服务,则人工审核的结果体现在该字段中。具体请参见humanAuditResult。 | 
表 3. auditResult
| 名称 | 类型 | 是否必须 | 说明 | 
| suggestion | String | 是 | 自助审核的结果,取值: 
 | 
| labels | JSONArray | 否 | 自助审核时设置的标签,包含以下可选值中的一个或者多个: 
 | 
表 4. humanAuditResult
| 名称 | 类型 | 是否必须 | 说明 | 
| suggestion | String | 是 | 阿里云人工审核的结果,取值: 
 | 
| taskId | String | 是 | 检测任务的ID。通过任务ID可以关联到对应内容的审核结果。 | 
| dataId | String | 是 | 检测内容的ID。 | 
| labels | JSONArray | 否 | 人工审核的标签结果,可能有多个值。 说明  默认不返回该参数。配置该字段需要额外收费,具体请联系商务沟通。 | 
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"
            }
        ]
    },
    "auditResult": {
        "suggestion": "block",
        "labels": [
            "porn",
            "ad",
            "terrorism"
        ]
    },
    "humanAuditResult": {
        "suggestion": "pass",
          "dataId": "yyyy",
          "labels": [
              "色情",
              "低俗"
        ],
        "taskId": "xxxxxx"
    }
}