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

2021.09.28 14:13:37

    接口地址

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

    接口描述

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

    接口请求频率

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

    请求参数

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

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

    响应结果

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

    result 数据结构

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

    antispam 数据结构

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

    censorLabels 数据结构

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

    evidences 数据结构

    参数名称 类型 描述
    texts json数组 文本证据信息
    images json数组 图片证据信息
    audios json数组 语音证据信息
    videos json数组 视频证据信息
    audiovideos json数组 语音视频证据信息
    files json数组 文档证据信息

    texts 数据结构

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

    labels 数据结构

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

    details 数据结构

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

    images 数据结构

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

    labels 数据结构

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

    audios 数据结构

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

    labels 数据结构

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

    details 数据结构

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

    hint 数据结构

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

    segments 数据结构

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

    videos 数据结构

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

    evidences 数据结构

    参数名称 类型 描述
    beginTime Number 证据开始相对时间,单位为毫秒,调用方获取后可自行格式化为可视化时间,如:149000 转换为"00:02:29"
    endTime Number 证据结束相对时间,单位为毫秒,调用方获取后可自行格式化为可视化时间,如:149000 转换为"00:02:29"
    type Number 1:图片,2:视频
    url String 证据信息
    labels json对象数组 证据结果数组

    labels 数据结构

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

    audiovideos 数据结构

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

    evidences 数据结构

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

    files 数据结构

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

    failureReason 说明

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

    evidences 数据结构

    参数名称 类型 描述
    texts json对象数组 文本证据信息
    images json对象数组 图片证据信息

    texts 数据结构

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

    images 数据结构

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

    reviewEvidences 数据结构

    参数名称 类型 描述
    reason String 判定原因
    remark String 备注信息
    detail json数组 人审证据详细信息

    detail 数据结构

    参数名称 类型 描述
    texts json数组 文本证据信息
    images json数组 图片证据信息
    audios json数组 语音证据信息
    videos json数组 视频证据信息
    audiovideos json数组 语音视频证据信息
    files json数组 文档证据信息

    texts 数据结构

    参数名称 类型 描述
    dataId String 提交检测时标识的数据id
    field String 数据来源字段名。当数据来自提交接口的 title 或 content 时,此字段值为 title 或 content,当数据来自提交接口扩展字段时,此字段值为扩展字段名
    censorResult Number 字段审核模式下的人工审核结果,1:正常 2:异常
    reasons TextReason 数组 文本判定原因
    reviseContent String 修订后的文本内容

    TextReason 数据结构

    参数名称 类型 描述
    text String 人审标注文本
    reason String 文本判定原因

    images 数据结构

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

    ImageReason 数据结构

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

    audios 和 videos 数据结构

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

    audiovideos 数据结构

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

    AudioVideoReason 数据结构

    参数名称 类型 描述
    url String 人审标音频或视频url
    startTime Number 标注开始时间点,单位毫秒
    endTime Number 标注结束时间点,单位毫秒
    reason String 判定原因

    files 数据结构

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

    anticheat 数据结构

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

    响应示例

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

    {
      "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)

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

    请求回调接口说明

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

    返回参数结构

    参数名称 类型 是否必传 描述
    secretId String Y 产品秘钥 id ,由易盾反垃圾云服务分配,产品标识
    signature String Y 请求签名,用来验证此次请求的合法性,具体算法见 接口鉴权
    callbackData String Y 主动回调推送数据,格式为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" }
                ]
              }
            ]
          }
        }
      }
    }
    
    Online Chat Tel:95163223 Free trial