结果回调

回调接口概述

针对于图片批量审核服务异步接口 .../batchCheck/async 的回调,用于将异步检测审核结果集合推送给客户,客户需要按照以下规范实现接收结果集的接口。

接口说明

使用异步批量任务提交接口时,通过补充参数callbackWaitForAll控制台-服务配置指定使用批量回调。 当批量审核任务完成后将会统一通过该接口将审核结果集合推送给客户。

需要注意:使用callbackWaitForAll的优先级高于控制台-服务配置

接口鉴权

客户可通过配置完回调参数后分配的密钥信息字段进行接口鉴权。具体方式如下:

  • 签名算法

    • 将接收的请求体参数按照参数名的ASCII码表正序排序;
    • 将排序好的参数拼接为字符串,参数值为NULL的字段应该忽略。格式为:key1 + value1 + key2 + value2...
    • 生成字符串后,继续拼接从控制台配置中获取的密钥
    • 对生成的字符串使用 UTF-8 进行编码,使用 MD5 进行加密生成完整的签名字符串;
  • 示例代码

    /**
     * 生成签名
     *
     * @param secretKey 后台密钥
     * @param params    接口请求参数名和参数值map,不包括signature参数名
     */
    public static String signature(String secretKey, Map<String, String> params) {
        // 1. 按照 map.key 的 ASCII码表 正序排序
        String[] keys = params.keySet().toArray(new String[0]);
        Arrays.sort(keys);
    
        // 2. 按照顺序将参数拼接为字符串
        StringBuilder signBuilder = new StringBuilder();
        for (String key : keys) {
            signBuilder.append(key).append(params.get(key));
        }
    
        // 3. 将密钥拼接到字符串末尾
        signBuilder.append(secretKey);
    
        // 4. 字符串使用 UTF-8 编码
        byte[] signBytes = signBuilder.toString().getBytes(StandardCharsets.UTF_8);
    
        // 5. 使用 MD5(hex) 编码
        return DigestUtils.md5Hex(signBytes);
    }
    

接入说明

  • 协议说明:客户方需提供支持 http 协议的 post 请求方式的接口。
  • 接口性能:客户需保持接口的稳定性与可靠性。
  • 失败重试:我们在收到客户回调响应后,如果不符合规定的接受成功规范,则认为此次推送失败。将以规定间隔时间 10s 推送 3 次,如果第三次继续失败将不再推送。

请求说明

  • 请求地址及方式

    名称
    callbackUrl 回调地址url(http协议)
    HTTP_METHOD POST
  • 请求Header

    Header 必需 类型 描述
    Content-Type 必需 String 固定值:application/json
    signature 必需 String 签名,验证请求的合法性,参照鉴权算法
  • 请求参数

    参数 类型 描述
    appId String 所属项目ID
    checkType String 检测项目标识,图片为 image-check
    results List 审核结果集合
    • TaskResult
      参数 类型 描述
      taskId String 提交异步审核时,返回的任务id
      result String 审核结果的json格式字符串,请参考同步单条检测-HTTP响应
  • 请求响应

客户接口接收到我们回调的结果后,需要返回应答信息,接口响应 code 状态码为 0,当回调处理异常时,应答的 code 状态码应为 500,或者 4xx; 应答信息为json格式,字段定义如下:

名称 类型 必填 说明
code Number 应答code,code 值为 0 代表此次回调成功
message String 具体描述信息
  • 推送给客户的请求示例

    POST <callbackUrl>
    Content-Type: application/json
    signature: <signature>
    
    {
      "appId": "1234",
      "checkType": "image-check",
      "results": [
        {
          "taskId": "task_a",
          "result": "{\"errorCode\":0,\"code\":0,\"result\":2,\"imageSpams\":[{\"code\":0,\"result\":2,\"tags\":[{\"tag\":200,\"level\":2,\"confidence\":76}]}],\"gender\":[],\"taskId\":\"task_a\",\"extraInfo\":{\"userId\":123}}"
        },
        {
          "taskId": "task_b",
          "result": "{\"errorCode\":0,\"code\":0,\"result\":2,\"imageSpams\":[{\"code\":0,\"result\":2,\"tags\":[{\"tag\":200,\"level\":2,\"confidence\":76}]}],\"gender\":[],\"taskId\":\"task_b\",\"extraInfo\":{\"userId\":456}}"
        }
      ]
    }