接口地址
https://as.dun.163.com/v1/mediasolution/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 |
censorLabels |
json数组 |
支持在智能审核系统自定义标签分类信息 |
evidences |
json对象 |
机审证据信息 |
reviewEvidences |
json对象 |
人审证据信息,接入人工审核后,参考人审证据信息 |
censorLabels 数据结构
参数名称 |
类型 |
描述 |
code |
String |
在智能审核系统配置自定义标签之后会生成一个唯一的标签编号 |
name |
String |
在智能审核系统配置自定义标签的名字 |
desc |
String |
标签类型的审核备注内容,只有根标签才有内容 |
customCode |
String |
客户自定义标签code |
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 |
Object |
人审证据详细信息 |
detail 数据结构
参数名称 |
类型 |
描述 |
texts |
Object[] |
文本证据信息 |
images |
Object[] |
图片证据信息 |
audios |
Object[] |
语音证据信息 |
videos |
Object[] |
视频证据信息 |
audiovideos |
Object[] |
语音视频证据信息 |
files |
Object[] |
文档证据信息 |
texts 数据结构
参数名称 |
类型 |
描述 |
dataId |
String |
提交检测时标识的数据id |
field |
String |
数据来源字段名。当数据来自提交接口的 title 或 content 时,此字段值为 title 或 content,当数据来自提交接口扩展字段时,此字段值为扩展字段名 |
censorResult |
Number |
字段审核模式下的人工审核结果,1:正常 2:异常 |
reasons |
TextReason 数组 |
文本判定原因 |
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返回结构与离线结构antispam结构一致,具体返回结构请查看响应示例 |
接口鉴权
客户主动回调接收接口可以通过业务开通时易盾分配的密钥信息字段进行接口鉴权
/**
* 通过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结构一致。
人审结果返回示例
{
"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" }
]
}
]
}
}
}
}