网页检测结果回调

回调说明

网页检测任务完成或失败后,服务可以将异步检测结果推送到你的回调地址。你需要按本文规范提供一个 HTTP 接口接收回调。

可以通过以下任一方式启用回调:

  • 在 <控制台-服务配置> 中配置回调地址。
  • 调用网页检测任务提交接口时传入 callbackUrl。请求中的 callbackUrl 优先级高于控制台配置的回调地址。

回调请求

  • 请求 URL:

你在控制台配置或提交任务时传入的回调地址。

  • 请求方法:

POST

  • HTTP 请求 Header:
Header 描述
Content-Type application/json 回调请求体格式
signature ***** 签名,验证请求的合法性,参照鉴权算法

接口鉴权

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

  • 签名算法

    1> 将接收的请求体参数按照 ASCII 码表升序顺序排序。

    2> 将排序好的参数 append 成字符串。格式为:key1 + value1 + key2 + value2...

    3> 将配置完回调参数后生成的密钥 append 到 2> 步骤生成的字符串后。

    4> 将 3> 步骤生成的字符串使用 UTF-8 进行编码,使用 MD5 进行加密生成 signature 参数值,并将其放入请求 Header 中。

  • 示例代码

/**
 * 生成签名
 * @param secretKey 后台密钥
 * @param params 接口请求参数名和参数值map,不包括signature参数名
 * @return
 */
public static String signature(String secretKey, Map<String, String> params) {
    String[] keys = params.keySet().toArray(new String[0]);
    Arrays.sort(keys);

    StringBuilder signBuilder = new StringBuilder();
    for (String key : keys) {
        signBuilder.append(key).append(params.get(key));
    }
    signBuilder.append(secretKey);

    try {
        return DigestUtils.md5Hex(signBuilder.toString().getBytes("UTF-8"));
    } catch (UnsupportedEncodingException e) {
        // error
    }
    return null;
}

在控制台服务配置中配置回调密钥后,回调请求体为以下结构:

字段名 类型 描述
appId String 项目标识
taskId String 区分不同次调用的唯一标识
result JSON String 回调结果,字段结构见下方“回调结果 JSON”

如果未配置回调密钥,服务会按下方“回调结果 JSON”结构直接推送结果,不携带 signature

  • 回调结果 JSON:
字段名 类型 描述
errorCode Number 错误码,0 表示成功
errorMessage String 错误消息
code Number 任务状态码:0 检测完成,1 检测失败,2 检测中,3 taskId 无效
taskId String 区分不同次调用的唯一标识
appId String 项目标识
inputType String 输入类型。网页检测返回 WEB
strategyId String 本次任务使用的策略编号
result Number 页面级检测结果:0 通过,1 疑似,2 不通过
items Array 网页解析出的内容项检测结果

items:

字段名 类型 描述
itemId String 内容项唯一标识
mediaType String 媒体类型:TEXTIMAGEAUDIOVIDEO
taskId String 异步媒体项的服务侧任务 ID。同步检测项可能为空
sourceUrl String 图片、音频或视频内容项的来源 URL
originalText String 原始文本内容。文本项返回
filteredText String 过滤后的文本内容。文本项命中不通过内容时返回
result Number 内容项检测结果:0 通过,1 疑似,2 不通过
tags Array 命中的分类信息

tags:

字段名 类型 描述
tag Number 一级分类编码。具体含义请参考帮助中心的分类编码表
subTags Array 二级分类信息

subTags:

字段名 类型 描述
subTag Number 二级分类编码
  • 回调请求示例:
{
  "errorCode": 0,
  "code": 0,
  "taskId": "task_**************************",
  "appId": "82100001",
  "inputType": "WEB",
  "strategyId": "DEFAULT",
  "result": 2,
  "items": [
    {
      "itemId": "text_1",
      "mediaType": "TEXT",
      "originalText": "Example page text",
      "filteredText": "Example **** text",
      "result": 2,
      "tags": [
        {
          "tag": 150,
          "subTags": [
            {
              "subTag": 150001
            }
          ]
        }
      ]
    },
    {
      "itemId": "image_1",
      "mediaType": "IMAGE",
      "sourceUrl": "https://example.com/image.jpg",
      "result": 0
    }
  ]
}
  • 启用验签后的回调请求示例:
{
  "appId": "82100001",
  "taskId": "task_**************************",
  "result": "{\"errorCode\":0,\"code\":0,\"taskId\":\"task_**************************\",\"appId\":\"82100001\",\"inputType\":\"WEB\",\"strategyId\":\"DEFAULT\",\"result\":2,\"items\":[]}"
}

回调响应

你的接口接收到回调请求后,需要返回 JSON 响应。响应中 code: 0 表示接收成功。

字段名 类型 是否必需 描述
code Number 必需 应答状态码,0 表示本次回调接收成功
message String 可选 应答消息
  • 响应示例:
{
  "code": 0,
  "message": "success"
}

如果响应体为空、响应 code 不为 0、请求超时,或回调接口返回错误,服务会重试回调。重试间隔从 1 秒开始,最多重试 3 次。