数字阅读解决方案离线结果获取

接口地址

https://as.dun.163.com/v1/digital/callback/results

接口描述

数字阅读解决方案检测结果获取接口,获取离线处理的数据后,下次调用,不会再次返回之前获取过的离线数据。建议您使用POST请求, 且仅接受 application/x-www-form-urlencoded 编码格式。

接口请求频率

小于10s/20次,请求频率过快服务器会拒绝处理。

请求参数

该接口参数与请求公共参数一致,businessId可不传,详细见 请求公共参数

参数名称类型是否必选最大长度描述
versionStringY4接口版本,当前版本为 v1.1

响应结果

响应字段如下,响应通用字段已省略,详细见 响应通用字段

result 数据结构

参数名称类型描述
antispamjson对象内容安全检测结果
anticheatjson对象反作弊检测结果

antispam 数据结构

参数名称类型描述
taskIdString数据请求标识,可以根据该标识查询数字阅读数据最新结果
dataIdString调用数字阅读检测时传递的dataId字段
callbackString调用检测时传递的callback字段
checkStatusNumber检测状态, 1:检测中 2:检测成功 3:检测失败
resultNumber检测结果, 0:无结果(检测失败)1:正常 2:异常 3:疑似
resultTypeNumber审核类型,1:机器检测,2:审核
censorSourceNumber审核来源,0:易盾人审,1:用户人审,2:易盾机审
censorRoundNumber审核轮数,1:第1轮人审,2:第2轮人审,3:第3轮人审,4:第4轮人审,5:第5轮人审,未设置审核模式默认返回0
skipCensorNumber是否跳过人审,0:不跳过人审, 1:跳过人审, 默认 '0' ,该字段默认不返回,只有在人审模板设置跳过后,在主动回调和被动回调会返回该字段
censorLabelsjson数组支持在智能审核系统自定义标签分类信息
evidencesjson对象机审证据信息
reviewEvidencesjson对象人审证据信息,接入人工审核后,参考人审证据信息

censorLabels 数据结构

参数名称类型描述
codeString在智能审核系统配置自定义标签之后会生成一个唯一的标签编号
descString在智能审核系统配置自定义标签备注

evidences 数据结构

参数名称类型描述
textsjson数组文本证据信息
imagesjson数组图片证据信息
audiosjson数组语音证据信息
videosjson数组视频证据信息
audiovideosjson数组语音视频证据信息
filesjson数组文档证据信息

texts 数据结构

参数名称类型描述
dataIdString提交检测时标识的数据id
actionNumber检测结果,0:通过,1:嫌疑,2:不通过
labelsjson数组分类信息 详细数据与文本在线检测labels数据结构一致
fieldString数据来源字段名。当数据来自提交接口的 title 或 content 时,此字段值为 title 或 content,当数据来自提交接口扩展字段时,此字段值为扩展字段名

labels 数据结构

参数名称类型描述
labelNumber分类信息,100:色情,200:广告,260:广告法,300:暴恐,400:违禁,500:涉政,600:谩骂,700:灌水,900:其他
levelNumber分类级别,0:通过, 1:嫌疑,2:不通过
detailsjson对象其他信息

details 数据结构

参数名称类型描述
hintjson数组线索信息,用于定位文本中有问题的部分,辅助人工审核

images 数据结构

参数名称类型描述
nameString图片标识
dataIdString提交检测时标识的数据id
statusNumber图片检测状态码,定义为:0:检测成功,610:图片下载失败,620:图片格式错误,630:其它
actionNumber检测结果,0:通过,1:嫌疑,2:不通过
labelsjson数组分类信息
fieldString数据来源字段名。当数据来自提交接口的 title 或 content 时,此字段值为 title 或 content,当数据来自提交接口扩展字段时,此字段值为扩展字段名

labels 数据结构

参数名称类型描述
labelNumber分类信息,100:色情,110:性感低俗,200:广告,210:二维码,260:广告法,300:暴恐,400:违禁,500:涉政,900:其他
levelNumber分类级别,0:通过,1:嫌疑,2:不通过
rateNumber置信度分数,0-1之间取值,1为置信度最高,0为置信度最低。若level为正常,置信度越大,说明正常的可能性越高。若level为不确定或确定,置信度越大,说明垃圾的可能性越高

audios 数据结构

参数名称类型描述
dataIdString提交检测时标识的数据id
asrStatusNumber音频翻译结果,2:检测中,3:检测完成,4:检测失败
asrResultNumber音频翻译检测失败原因,1:文件格式错误,2:文件下载失败,3:解析失败,4:音频流不存在
actionNumber检测结果,0:通过,1:嫌疑,2:不通过
labelsjson数组分类信息
fieldString数据来源字段名。当数据来自提交接口的 title 或 content 时,此字段值为 title 或 content,当数据来自提交接口扩展字段时,此字段值为扩展字段名

labels 数据结构

参数名称类型描述
labelNumber分类信息,100:色情,200:广告,260:广告法,300:暴恐,400:违禁,500:涉政,600:谩骂
levelNumber分类级别,0:通过,1:嫌疑,2:不通过
detailsjson对象其他信息

details 数据结构

参数名称类型描述
hintNumber线索信息,用于定位文本中有问题的部分,辅助人工审核
hitTypeNumber命中检测器类型:10:用户名单 11:IP名单 12:设备名单 30:敏感词 110:IP地区限制 130:声纹检测

hint 数据结构

参数名称类型描述
valueString命中的敏感词或者声纹检测的分值
segmentsjson数组命中敏感词或者声纹检测的音频时间点

segments 数据结构

参数名称类型描述
startTimeNumber最近开始时间点,单位毫秒
endTimeNumber最近结束时间点,单位毫秒

videos 数据结构

参数名称类型描述
dataIdString提交检测时标识的数据id
statusNumber视频处理状态码,定义为:0:检测成功,110:请求重复,120:参数错误,130:解析错误,140:数据类型错误
levelNumber视频级别信息,分为0:正常,1:不确定,2:确定,其中不确定的建议人工复审
evidencesjson对象数组证据信息数组
fieldString数据来源字段名。当数据来自提交接口的 title 或 content 时,此字段值为 title 或 content,当数据来自提交接口扩展字段时,此字段值为扩展字段名

evidences 数据结构

参数名称类型描述
beginTimeNumber证据开始相对时间,单位为毫秒,调用方获取后可自行格式化为可视化时间,如:149000 转换为"00:02:29"
endTimeNumber证据结束相对时间,单位为毫秒,调用方获取后可自行格式化为可视化时间,如:149000 转换为"00:02:29"
typeNumber1:图片,2:视频
urlString证据信息
labelsjson对象数组证据结果数组

labels 数据结构

参数名称类型描述
labelNumber分类信息,100:色情,110:性感;200:广告,210:二维码,260:广告法,300:暴恐,400:违禁,500:涉政,1020:黑屏,1030:挂机
levelNumber级别信息,分为1:不确定,2:确定
rateNumber分数

audiovideos 数据结构

参数名称类型描述
dataIdString提交检测时标识的数据id
resultNumber检测结果 0:无结果(检测失败), 1:正常 2:异常 3:嫌疑
evidencesjson对象证据信息数组
fieldString数据来源字段名。当数据来自提交接口的 title 或 content 时,此字段值为 title 或 content,当数据来自提交接口扩展字段时,此字段值为扩展字段名

evidences 数据结构

参数名称类型描述
audiojson对象语音证据信息,结构与audios数组元素一致
videojson对象语音证据信息,结构与videos数组元素一致

files 数据结构

参数名称类型描述
dataIdString提交检测时标识的数据id
resultNumber检测结果 0:无结果(检测失败), 1:正常 2:异常 3:嫌疑
failureReasonNumber检测失败原因
evidencesjson对象证据信息数组
fieldString数据来源字段名。当数据来自提交接口的 title 或 content 时,此字段值为 title 或 content,当数据来自提交接口扩展字段时,此字段值为扩展字段名

failureReason 说明

错误码描述
1000文档大小超过上限
1001文档格式不支持
1002文档下载失败
2000文档内容提取失败
2001文档内容提取超时
3000文档检测失败
3001文档文本检测失败
3002文档图片检测失败

evidences 数据结构

参数名称类型描述
textsjson对象数组文本证据信息
imagesjson对象数组图片证据信息

texts 数据结构

参数名称类型描述
taskIdString当前分段检测数据标识
sequenceNumber当前文本在原始文档中的分段(5000字符/段)序号
startTextString每段文本的起始20个字符
endTextString每段文本的结尾20个字符
actionNumber检测结果,0:通过,1:嫌疑,2:不通过
labelsjson对象数组分类信息 详细数据与文本在线检测labels数据结构一致

images 数据结构

参数名称类型描述
taskIdString当前图片检测数据标识
sequenceNumber当前图片在原始文档中的序号
imageUrlString图片下载地址
levelNumber分类级别,0:正常,1:不确定,2:确定
labelsjson对象数组分类信息 详细数据与图片在线检测labels数据结构一致

reviewEvidences 数据结构

参数名称类型描述
reasonString判定原因
remarkString备注信息
detailjson数组人审证据详细信息

detail 数据结构

参数名称类型描述
textsjson数组文本证据信息
imagesjson数组图片证据信息
audiosjson数组语音证据信息
videosjson数组视频证据信息
audiovideosjson数组语音视频证据信息
filesjson数组文档证据信息

texts 数据结构

参数名称类型描述
dataIdString提交检测时标识的数据id
fieldString数据来源字段名。当数据来自提交接口的 title 或 content 时,此字段值为 title 或 content,当数据来自提交接口扩展字段时,此字段值为扩展字段名
censorResultNumber字段审核模式下的人工审核结果,1:正常 2:异常
reasonsTextReason 数组文本判定原因

TextReason 数据结构

参数名称类型描述
textString人审标注文本
reasonString文本判定原因

images 数据结构

参数名称类型描述
dataIdString提交检测时标识的数据id
fieldString数据来源字段名。当数据来自提交接口的 title 或 content 时,此字段值为 title 或 content,当数据来自提交接口扩展字段时,此字段值为扩展字段名
censorResultNumber字段审核模式下的人工审核结果,1:正常 2:异常
reasonsImageReason 数组图片判定原因

ImageReason 数据结构

参数名称类型描述
urlString人审标注图片url
reasonString图片判定原因

audios 和 videos 数据结构

参数名称类型描述
dataIdString提交检测时标识的数据id
fieldString数据来源字段名。当数据来自提交接口的 title 或 content 时,此字段值为 title 或 content,当数据来自提交接口扩展字段时,此字段值为扩展字段名
censorResultNumber字段审核模式下的人工审核结果,1:正常 2:异常
reasonsAudioVideoReason 数组判定原因

audiovideos 数据结构

参数名称类型描述
dataIdString提交检测时标识的数据id
fieldString数据来源字段名。当数据来自提交接口的 title 或 content 时,此字段值为 title 或 content,当数据来自提交接口扩展字段时,此字段值为扩展字段名
censorResultNumber字段审核模式下的人工审核结果,1:正常 2:异常
videosAudioVideoReason 数组视频证据信息
audiosAudioVideoReason 数组音频证据信息

AudioVideoReason 数据结构

参数名称类型描述
urlString人审标音频或视频url
startTimeNumber标注开始时间点,单位毫秒
endTimeNumber标注结束时间点,单位毫秒
reasonString判定原因

files 数据结构

参数名称类型描述
dataIdString提交检测时标识的数据id
fieldString数据来源字段名。当数据来自提交接口的 title 或 content 时,此字段值为 title 或 content,当数据来自提交接口扩展字段时,此字段值为扩展字段名
censorResultNumber字段审核模式下的人工审核结果,1:正常 2:异常
textsTextReason 数组(见上文)文本证据信息
imagesImageReason 数组(见上文)图片证据信息

anticheat 数据结构

参数名称类型描述
taskIdString本次请求数据标识,可以根据该标识查询数据最新结果
actionNumber检测结果,0:通过,10:嫌疑,20:不通过
hitInfo数组命中信息,其中hitType类型为int,含义是命中类型,详见 hitType返回码及含义表

请求示例

    /** 产品密钥ID,产品标识 */
    private final static String SECRETID = "your_secret_id";
    /** 产品私有密钥,服务端生成签名信息使用,请严格保管,避免泄露 */
    private final static String SECRETKEY = "your_secret_key";
    /** 易盾反垃圾音视频解决方案离线检测结果获取接口地址 */
    private final static String API_URL = "https://as.dun.163.com/v1/mediasolution/callback/results";
    /** 实例化HttpClient,发送http请求使用,可根据需要自行调参 */
    private static HttpClient httpClient = HttpClient4Utils.createHttpClient(100, 20, 10000, 2000, 2000);

    public static void main(String[] args) throws Exception {
        Map<String, String> params = new HashMap<String, String>();
        // 1.设置公共参数
        params.put("secretId", SECRETID);
        params.put("version", "v1.1");
        params.put("timestamp", String.valueOf(System.currentTimeMillis()));
        params.put("nonce", String.valueOf(new Random().nextInt()));

        // 2.生成签名信息
        String signature = SignatureUtils.genSignature(SECRETKEY, params);
        params.put("signature", signature);

        // 3.发送HTTP请求,这里使用的是HttpClient工具包,产品可自行选择自己熟悉的工具包发送请求
        String response = HttpClient4Utils.sendPost(httpClient, API_URL, params, Consts.UTF_8);

        // 4.解析接口返回值
        JsonObject resultObject = new JsonParser().parse(response).getAsJsonObject();
        int code = resultObject.get("code").getAsInt();
        String msg = resultObject.get("msg").getAsString();
        if (code == 200) {
            JsonArray resultArray = resultObject.getAsJsonArray("result");
            System.out.println(resultArray);
        } else {
            System.out.println(String.format("ERROR: code=%s, msg=%s", code, msg));
        }

    }

响应示例

当获取机器检测离线结果时,输出示例如下:

{
  "code": 200,
  "msg": "ok",
  "result": {
    {
      "antispam": {
        "taskId": "a56d264d8a4649dfaa5595fa93363a56",
        "dataId": "81016504",
        "callback": "xxx",
        "result": 2,
        "checkStatus": 2,
        "resultType": 1,
        "censorSource": 2,
        "evidences": {
          "texts": [
            {"action":2,"dataId":"xxx","labels":[{"label":200,"level":2,"details":{"hint":[]}}],"field":"title"},
            {"action":2,"dataId":"xxx","labels":[{"label":200,"level":2,"details":{"hint":[]}}],"field":"content"}
          ],
          "images": [
            {"name":"xxx","dataId":"xxx","status":0,"action":2,"labels":[{"label":100,"level":2,"rate":1.0}],"field":"content"}
          ],
          "audios": [
            {
              "action":2,
              "asrStatus":3,
              "asrResult":0,
              "dataId":"bad-audio",
              "labels":[{"label":500,"level":2,"details":{"hint":[{"value":"为何渴望回归中国","segments":[{"startTime":0,"endTime":8}]}],"hitType":30}}],
              "field":"content"
            }
          ],
          "videos": [
            {
              "dataId": "bad-video",
              "status": 0,
              "level": 2,
              "evidences": [
                {
                  "type": 1,
                  "url": "https://illegal-video.nosdn.127.net/xxx.jpg",
                  "beginTime": 5000,
                  "endTime": 5000,
                  "labels": [ { "label": 400, "level": 2, "rate": 1.0 } ]
                }
              ],
              "field": "content"
            }
          ],
          "audiovideos": [
            {
              "dataId": "bad-video",
              "result": 2,
              "evidences": {
                "audio": {
                  "action": 0,
                  "asrStatus": 3,
                  "asrResult": 0,
                  "labels": []
                },
                "video": {
                  "status": 0,
                  "level": 2,
                  "evidences": [
                    {
                      "type": 1,
                      "url": "https://illegal-video.nosdn.127.net/36e87656738e4a379b4c15ff7fa8dfdf_1606874137263.jpg",
                      "beginTime": 5000,
                      "endTime": 5000,
                      "labels": [ { "label": 400, "level": 2, "rate": 1.0 } ]
                    }
                  ]
                }
              },
              "field": "content"
            }
          ],
          "files": [
            {
              "dataId": "bad-file",
              "result": 2,
              "evidences": {
                "texts": [
                  {
                    "taskId": "5eb773f887b54c08b433a9498dd20c0d",
                    "sequence": 0,
                    "startText": "\n\n\n\n\n\n\n\n\n\n",
                    "endText": "\n\n\n\n\n\n\n\n\n\n",
                    "action": 0,
                    "labels": [ { "label": 0, "level": 0 } ]
                  }
                ],
                "images": [
                  {
                    "taskId": "59ab4ea3e06442ce965c79d6192ec42a",
                    "sequence": 0,
                    "imageUrl": "https://yidun-antispam.nos-eastchina1.126.net/59ab4ea3e06442ce965c79d6192ec42a?Signature=nxFs3kh%2FgvBricm8mq7j%2BgyeDO2QWsKbxC26s2QdqYg%3D&Expires=1609466135&NOSAccessKeyId=a681ebcbcd5646a488d275c33acb16bd",
                    "level": 1,
                    "labels": [ { "label": 400, "level": 1, "rate": 0.98845863 }
                    ]
                  }
                ]
              }
            }
          ]
        },
        "field": "content"
      },
      "anticheat": {
        "action": 20,
        "taskId": "a56d264d8a4649dfaa5595fa93363a56",
        "hitInfo": {
          "hitType": 3
        }
      }
    }
  }
 }

当获取人工审核离线结果时,输出示例如下:

{
  "code": 200,
  "msg": "ok",
  "result": {
    {
      "antispam": {
        "taskId": "0c32b124e4bd43c69ed0e832c1ee1cb5",
        "dataId": "242365478655main",
        "callback": "callback",
        "result": 2,
        "checkStatus": 2,
        "resultType": 2,
        "censorSource": 1,
        "censorRound": 1,
        "censorLabels": [
          {
            "code": "在智能系统配置自定义标签之后会生成一个唯一的标签",
            "desc": "备注"
          }
        ],
        "reviewEvidences": {
          "reason": "其他",
          "remark": "备注",
          "detail": {
            "texts": [
              {
                "field": "title",
                "dataId": "0c32b124e4bd43c69ed0e832c1ee1cb5",
                "reasons": [
                  {
                    "text": "itle",
                    "reason": "aaa"
                  }
                ]
              },
              {
                "field": "content",
                "dataId": "sample-text"
              }
            ],
            "images": [
              {
                "field": "content",
                "dataId": "sample-image",
                "reasons": [
                  {
                    "url": "https://yidun-antispam.nos-eastchina1.126.net/xxx",
                    "reason": "sss"
                  }
                ]
              }
            ],
            "audios": [
              {
                "field": "content",
                "dataId": "bad-audio",
                "reasons": [
                  {
                    "url": "https://yidun-antispam.nos-eastchina1.126.net/xxx",
                    "startTime": 29,
                    "endTime": 33
                  },
                  {
                    "url": "https://yidun-antispam.nos-eastchina1.126.net/xxx",
                    "startTime": 2,
                    "endTime": 29
                  }
                ]
              }
            ],
            "videos": [
              {
                "field": "content",
                "dataId": "bad-video",
                "reasons": [
                  {
                    "url": "http://illegal-video.nosdn.127.net/xxx",
                    "startTime": 0,
                    "endTime": 0,
                    "reason": "xxx"
                  }
                ]
              }
            ],
            "audiovideos": [
              {
                "field": "content",
                "dataId": "good-video",
                "videos": [
                  { "url": "http://illegal-video.nosdn.127.net/xxx", "startTime": 0, "endTime": 0, "reason": "aaa" },
                  { "url": "http://illegal-video.nosdn.127.net/xxx", "startTime": 0, "endTime": 0, "reason": "bb" }
                ],
                "audios": [
                  { "url": "http://illegal-video.nosdn.127.net/xxx", "startTime": 0, "endTime": 0, "reason": "fdfd" }
                ]
              }
            ],
            "files": [
              {
                "field": "content",
                "dataId": "xxx",
                "texts": [
                  { "text": "想到了", "reason": "a" },
                  { "text": "布的张", "reason": "bb" }
                ],
                "images": [
                  { "url": "https://yidun-antispam.nos-eastchina1.126.net/xxx", "reason": "tt" }
                ]
              }
            ]
          }
        }
      }
    }
  }
}

当无最新离线结果需要获取时,输出示例如下:

{
    "code": 200,
    "msg": "ok",
    "result":[]
}

数字阅读解决方案主动回调说明

接口描述

易盾提供主动回调和被动回调数据两种方式,主动回调以数据为维度根据提交时设置的回调地址,检测完成之后将结果推送到回调地址。

主动回调接入

客户接入主动回调的方式很简单,只需要在调用在线检测接口请求参数中指定回调通知参数callbackUrl(即一个http(s)协议接口的URL)

业务类型回调参数名称类型最大长度描述
数字阅读callbackUrlString256提交参数中添加callbackUrl字段

请求回调接口说明

客户提供的回调地址,需支持 POST 方法,请求数据编码皆为 utf-8。

返回参数结构

参数名称类型是否必传描述
secretIdStringY产品秘钥 id ,由易盾反垃圾云服务分配,产品标识
signatureStringY请求签名,用来验证此次请求的合法性,具体算法见 接口鉴权
callbackDataStringY主动回调推送数据,格式为json字符串,callbackData返回结构与离线结构一致,具体返回结构请查看响应示例

接口鉴权

客户主动回调接收接口可以通过业务开通时易盾分配的密钥信息字段进行接口鉴权

/**
 * 通过HttpServletRequest做签名验证
 */
public static boolean verifySignature(HttpServletRequest request) {
    String secretId = request.getParameter("secretId");
    String businessId = request.getParameter("businessId");
    String signature = request.getParameter("signature");
    if (StringUtils.isEmpty(secretId) || StringUtils.isEmpty(signature)) {
        // 签名参数为空,直接返回失败
        return false;
    }
    Map<String, String> params = Maps.newHashMap();
    for (String paramName : request.getParameterMap().keySet()) {
        if (!"signature".equals(paramName)) {
            params.put(paramName, request.getParameter(paramName));
        }
    }
    // SECRETKEY:产品私有密钥 SECRETID:产品密钥ID BUSINESSID:业务ID,开通服务时,易盾会提供相关密钥信息
    String serverSignature = getSignature(SECRETKEY, params);
    return signature.equals(serverSignature) && SECRETID.equals(secretId) && BUSINESSID.equals(businessId);
}
/**
* 生成签名信息
* @param secretKey 产品私钥
* @param params 接口请求参数名和参数值map,不包括signature参数名
*/
public static String genSignature(String secretKey, Map<String, String> params) throws UnsupportedEncodingException {
    // 1. 参数名按照ASCII码表升序排序
    String[] keys = params.keySet().toArray(new String[0]);
    Arrays.sort(keys);

    // 2. 按照排序拼接参数名与参数值
    StringBuffer paramBuffer = new StringBuffer();
    for (String key : keys) {
        paramBuffer.append(key).append(params.get(key) == null ? "" : params.get(key));
    }
    // 3. 将secretKey拼接到最后
    paramBuffer.append(secretKey);

    // 4. MD5是128位长度的摘要算法,用16进制表示,一个十六进制的字符能表示4个位,所以签名后的字符串长度固定为32个十六进制字符。
    return DigestUtils.md5Hex(paramBuffer.toString().getBytes("UTF-8"));
}

数字阅读解决方案主动回调响应示例

{
  "antispam": {
    "taskId": "0c32b124e4bd43c69ed0e832c1ee1cb5",
    "dataId": "242365478655main",
    "callback": "callback",
    "result": 2,
    "checkStatus": 2,
    "resultType": 2,
    "censorSource": 1,
    "censorRound": 1,
    "censorLabels": [
      {
        "code": "在智能系统配置自定义标签之后会生成一个唯一的标签",
        "desc": "备注"
      }
    ],
    "reviewEvidences": {
      "reason": "其他",
      "remark": "备注",
      "detail": {
        "texts": [
          {
            "field": "title",
            "dataId": "0c32b124e4bd43c69ed0e832c1ee1cb5",
            "reasons": [
              {
                "text": "itle",
                "reason": "aaa"
              }
            ]
          },
          {
            "field": "content",
            "dataId": "sample-text"
          }
        ],
        "images": [
          {
            "field": "content",
            "dataId": "sample-image",
            "reasons": [
              {
                "url": "https://yidun-antispam.nos-eastchina1.126.net/xxx",
                "reason": "sss"
              }
            ]
          }
        ],
        "audios": [
          {
            "field": "content",
            "dataId": "bad-audio",
            "reasons": [
              {
                "url": "https://yidun-antispam.nos-eastchina1.126.net/xxx",
                "startTime": 29,
                "endTime": 33
              },
              {
                "url": "https://yidun-antispam.nos-eastchina1.126.net/xxx",
                "startTime": 2,
                "endTime": 29
              }
            ]
          }
        ],
        "videos": [
          {
            "field": "content",
            "dataId": "bad-video",
            "reasons": [
              {
                "url": "http://illegal-video.nosdn.127.net/xxx",
                "startTime": 0,
                "endTime": 0,
                "reason": "xxx"
              }
            ]
          }
        ],
        "audiovideos": [
          {
            "field": "content",
            "dataId": "good-video",
            "videos": [
              { "url": "http://illegal-video.nosdn.127.net/xxx", "startTime": 0, "endTime": 0, "reason": "aaa" },
              { "url": "http://illegal-video.nosdn.127.net/xxx", "startTime": 0, "endTime": 0, "reason": "bb" }
            ],
            "audios": [
              { "url": "http://illegal-video.nosdn.127.net/xxx", "startTime": 0, "endTime": 0, "reason": "fdfd" }
            ]
          }
        ],
        "files": [
          {
            "field": "content",
            "dataId": "xxx",
            "texts": [
              { "text": "想到了", "reason": "a" },
              { "text": "布的张", "reason": "bb" }
            ],
            "images": [
              { "url": "https://yidun-antispam.nos-eastchina1.126.net/xxx", "reason": "tt" }
            ]
          }
        ]
      }
    }
  }
}