推送模式
2024.10.15 18:18:14
内容安全直播音频结果获取推送模式用于将直播音频异步检测或人工审核结果主动推送给客户,保证客户最快的获取结果。客户需要按照以下规范实现接收结果的接口。推送模式与轮询模式互斥,只能选取一种模式进行结果获取。
接口说明
结果主动推送模式以数据为维度,将异步机器检测结果或者人工审核结果推送给客户,需客户在调用检测接口时设置回调地址callbackUrl参数,客户方需保证回调接收接口的可用性和稳定性,确保能正常接收推送过来的结果数据。
鉴权说明
客户接口可以通过业务开通时易盾分配的密钥信息字段进行接口鉴权,鉴权粒度是否要精确到业务级别,用户可以根据需要自行决定,请参见接口鉴权
接入说明
- 协议说明:检测接口请求参数中指定了回调地址参数callbackUrl(即一个http(s)协议接口的URL)。主动推送接口需要支持http协议,支持POST方法,传输数据编码采用utf-8
- 接口性能:推送结果接口默认超时时间为2s,为了保证顺利接收数据,客户需保证接收接口可用性和性能稳定
- 失败重试:客户接口处理结果数据,并返回应答。如果客户接口请求异常,超时或收到的应答不符合规范,易盾会认为推送失败;我们将每隔10分钟推送一次,如果一直失败,持续一天后不再推送
- 幂等性:结果推送时同样的结果可能会多次请求客户接口。客户接口需要保证幂等性,能够正确处理重复结果数据
接口耗时
客户接收接口需保证接收接口可用性和性能稳定,易盾请求超时时间为2s,客户接口尽量保证在1s内返回应答,如有特殊要求,可联系易盾运营适当调整超时时间
请求
请求地址
名称 | 值 |
---|---|
HTTP URL | 回调地址callbackUrl |
HTTP Method | POST |
请求头
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
Content-Type | String | 是 | 固定值:"application/x-www-form-urlencoded" |
请求参数
名称 | 类型 | 必填 | 最大长度 | 描述 |
---|---|---|---|---|
secretId | String | 是 | 32 | 产品秘钥 id ,由易盾内容安全云服务分配,产品标识 |
businessId | String | 是 | 32 | 业务id ,由易盾内容安全云服务分配,业务标识 |
signature | String | 是 | 32 | 请求签名,用来验证此次请求的合法性,具体算法见接口鉴权 |
callbackData | String | 是 | - | 主动推送结果数据,格式为 json 字符串, 详细见下表 callbackData 结构 |
名称 | 类型 | 必须返回 | 描述 |
---|---|---|---|
callbackData | String | 是 | 音频检测结果 |
∟ antispam | Object | 否 | 内容安全检测结果 |
∟ taskId | String | 是 | 易盾侧机审数据唯一标识,能够根据该值定位到该条数据,如对检测结果有异议,可以发送该值给策略经理查询 |
∟ callback | String | 否 | 提交时传递的callback |
∟ dataId | String | 否 | 上传数据唯一标识,能够根据该值定位到该条数据,如对数据结果有异议,可以发送该值给客户经理查询 |
∟ censorSource | Number | 是 | 审核来源,0:易盾人审,1:客户人审,2:易盾机审 |
∟ status | Number | 是 | 检测状态,1-检测中,2-检测成功,3-检测失败 |
∟ failureReason | Number | 否 | 检测失败原因,当检测失败时返回,1:下载失败,2:直播流不存在,3:解析失败,4:格式错误 |
∟ riskLevel | Number | 否 | 直播异常风险等级, 0-正常,1-低危,2-中危,3-中高危,4-高危 |
∟ riskScore | Number | 否 | 直播异常分数 |
∟ duration | Number | 否 | 直播时长字段,直播结束返回直播整体时长,单位s |
∟ billDuration | Number | 否 | 直播音频片段计费时长字段,单位s |
∟ strategySource | Number | 否 | 策略来源,0:易盾策略来源,1:客户策略来源 |
∟ evidences | Object | 否 | 直播断句审核证据信息 |
∟ suggestion | Number | 是 | 建议结果 0-通过 1-嫌疑 2-删除 |
∟ label | Number | 是 | 分类信息,分类信息,100:色情,200:广告,260:广告法,300:暴恐,400:违禁,500:涉政,600:谩骂,1040:黑麦,1100:涉价值观,1050:噪音 |
∟ secondLabel | String | 否 | 命中二级标签细分类 |
∟ thirdLabel | String | 否 | 命中三级标签细分类 |
∟ suggestionLevel | Number | 否 | 嫌疑级别,针对部分定制策略支持命中嫌疑时返回,1:低嫌疑,2:高嫌疑,对通用策略、模型结果暂不支持,v5.2版本新增,默认不返回,如果需要返回请联系运营经理配置 |
∟ startTime | Number | 是 | 断句开始时间,单位毫秒 |
∟ endTime | Number | 是 | 断句结束时间,单位毫秒 |
∟ type | Number | 是 | 断句类型,0-语音识别,1-声纹检测 |
∟ rate | Number | 否 | 声纹检测命中置信度 |
∟ content | String | 是 | 当断句为声纹检测时返回命中声纹检测,语音识别时语音内容 |
∟ url | String | 否 | 需要开启返回直播语音片段播放地址,请联系易盾策略经理 |
∟ speakerId | String | 否 | 针对接入SDK监听客户,返回说话人ID信息 |
∟ speakerRiskScore | Number | 否 | 说话人的直播异常分数 |
∟ segmentId | String | 是 | 断句id |
∟ frontSegment | Object | 否 | 关联证据信息,异常/嫌疑断句命中时返回,命中断句前20s的证据信息,包含前20s的音频语音识别内容及对应url。通过时数据为空,如果命中断句前20s没有内容,返回为空。 |
∟ content | String | 是 | 命中断句前20s的语音识别内容 |
∟ url | String | 是 | 命中断句前20s的音频url,可解析进行回放 |
∟ labels | Object[] | 否 | 分类信息,通过时数据为空 |
∟ label | Number | 是 | 分类信息,分类信息,100:色情,200:广告,260:广告法,300:暴恐,400:违禁,500:涉政,600:谩骂,1040:黑麦,1100:涉价值观,1050:噪音 |
∟ level | Number | 是 | 命中级别,示例值:1:嫌疑,2:不通过,0:正常,特殊策略下可返回“level=0”的数据,如果需要返回可以找策略经理配置 |
∟ subLabels | Object[] | 否 | 命中细分类信息 |
∟ subLabel | String | 是 | 细分类,详细编码请参考细分类编码 对照表 |
∟ subLabelDepth | Number | 是 | 命中的标签层级,目前支持的层级:2,3 |
∟ secondLabel | String | 是 | 命中二级标签细分类 |
∟ thirdLabel | String | 否 | 命中三级标签细分类 |
∟ details | Object | 是 | 其他信息 |
∟ hitInfos | Object[] | 否 | 证据信息 |
∟ value | String | 否 | 命中线索内容 |
∟ hitLeaders | Object[] | 否 | 命中领导人信息 |
∟ value | String | 否 | 领导人名,若命中领导人声纹,返回对应的领导人名 |
∟ keywords | Object[] | 否 | 自定义敏感词线索分类信息 |
∟ word | String | 否 | 自定义添加敏感词 |
∟ intent | Object | 否 | 意图识别结果 |
∟ result | Number | 否 | 意图识别结果类型,0:否定意图;1:肯定意图 |
∟ score | Number | 否 | 意图识别结果得分,小数[0-1]范围 |
∟ rules | Object[] | 否 | 命中用户自定义的规则信息 |
∟ name | String | 是 | 规则名 |
∟ reviewEvidences | Object | 否 | 直播墙人审证据信息 |
∟ action | Number | 是 | 审核操作, 1为忽略, 2为警告, 3为断流, 4为提示 |
∟ actionTime | Number | 是 | 操作时间, UNIX_TIME时间戳, 毫秒为单位 |
∟ spamType | Number | 是 | 违规类型, 100-色情, 115-音乐内容低俗, 116-言论低俗涉黄, 121-发出涉黄声音, 122-ASMR, 200-广告, 211-商业推广, 212-提及竞品, 300-暴恐, 400-违禁, 500-涉政, 511-影响政府形象, 512-邪教迷信, 513-涉军事, 514-涉宗教, 515-国歌、严肃歌曲, 516-涉及少数民族,517-涉及政治敏感话题 800-不文明, 826-传播负面情绪, 827-违反公序良俗, 828-侵害他人隐私, 1000-其他, 1023-无营养, 1027-话题炒作, 1030-挂机, 1050-自定义 |
∟ spamDetail | String | 否 | 违规详细说明 |
∟ censorLabels | Object[] | 否 | 支持在审核系统自定义标签分类信息;使用自定义标签时,spamType为1050 |
∟ code | String | 是 | 在系统配置自定义标签之后会生成一个唯一的标签ID |
∟ name | String | 否 | 在审核系统配置自定义标签名称 |
∟ desc | String | 否 | 在审核系统配置自定义标签备注 |
∟ customCode | String | 否 | 在审核系统配置自定义标签code |
∟ speakerId | String | 否 | 针对接入SDK监听客户,针对房间内具体说话人的处罚,返回说话人ID信息,若为空,则针对房间维度处罚 |
∟ censorAccount | String | 否 | 审核账号 |
∟ warnCount | Number | 是 | 警告次数 |
∟ promptCount | Number | 是 | 提示次数 |
∟ segments | Object[] | 否 | 人审断句信息, 可为空 |
∟ startTime | Number | 是 | 断句开始时间,单位毫秒 |
∟ endTime | Number | 是 | 断句结束时间 ,单位毫秒 |
∟ asr | Object | 否 | 语音识别检测结果,如有需要请联系您的专属商务,未开通状态下不返回 |
∟ taskId | String | 是 | 易盾侧机审数据唯一标识,能够根据该值定位到该条数据,如对检测结果有异议,可以发送该值给策略经理查询 |
∟ startTime | Number | 是 | 断句开始时间,单位毫秒 |
∟ endTime | Number | 是 | 断句结束时间,单位毫秒 |
∟ content | String | 是 | 语音识别结果 |
∟ url | String | 否 | 语音断句的临时访问地址,地址有效期为7天,如需开启请联系易盾策略经理 |
∟ speakerId | String | 否 | 针对接入SDK监听客户,返回说话人ID信息 |
∟ language | Object | 否 | 语种识别检测结果,如有需要请联系您的专属商务,未开通状态下不返回 |
∟ taskId | String | 是 | 易盾侧机审数据唯一标识,能够根据该值定位到该条数据,如对检测结果有异议,可以发送该值给策略经理查询 |
∟ startTime | Number | 是 | 断句开始时间,单位毫秒 |
∟ endTime | Number | 是 | 断句结束时间,单位毫秒 |
∟ content | String | 是 | 语种识别类型,支持检测语种类型请参考语种代码表 |
∟ callback | String | 否 | 提交时传递的callback |
∟ segmentId | String | 是 | 断句id |
∟ speakerId | String | 否 | 针对接入SDK监听客户,返回说话人ID信息 |
∟ voice | Object | 否 | 人声属性检测结果 |
∟ taskId | String | 是 | 易盾侧机审数据唯一标识,能够根据该值定位到该条数据,如对检测结果有异议,可以发送该值给策略经理查询 |
∟ startTime | Number | 是 | 断句开始时间,单位毫秒 |
∟ endTime | Number | 是 | 断句结束时间,单位毫秒 |
∟ dataId | String | 否 | 上传数据唯一标识,能够根据该值定位到该条数据,如对数据结果有异议,可以发送该值给客户经理查询 |
∟ segmentId | String | 否 | 断句id |
∟ speakerId | String | 否 | 针对接入SDK监听客户,返回说话人ID信息 |
∟ callback | String | 否 | 提交时传递的callback |
∟ mainGender | String | 否 | 音频性别建议值,male/female |
∟ mainAgeGroup | String | 否 | 识别人声年龄,underage(0~18岁),adult(18岁以上) |
∟ mainAgeGroupRate | Number | 否 | 人声年龄置信度分数,0-1之间取值,1为置信度最高,0为置信度最低 |
∟ url | String | 否 | 语音断句的临时访问地址 |
∟ quality | Object | 否 | 语音质量检测结果 |
∟ taskId | String | 是 | 易盾侧机审数据唯一标识,能够根据该值定位到该条数据,如对检测结果有异议,可以发送该值给策略经理查询 |
∟ startTime | Number | 是 | 断句开始时间,单位毫秒 |
∟ endTime | Number | 是 | 断句结束时间,单位毫秒 |
∟ dataId | String | 否 | 上传数据唯一标识,能够根据该值定位到该条数据,如对数据结果有异议,可以发送该值给客户经理查询 |
∟ callback | String | 否 | 提交时传递的callback |
∟ speakerId | String | 否 | 针对接入SDK监听客户,返回说话人ID信息 |
∟ details | Object | 是 | 详细说明 |
∟ silent | Boolean | 否 | 是否为无声片段,true:无声片段 |
请求体示例
callbackData=***&signature=xxx&secretId=xxx&businessId=xxx
请求体 callbackData 格式如下,callbackData 为 JSON 字符串格式,请自行解析或者反转成 JSON 对象使用。
检测中返回示例
{
"antispam":{
"taskId":"3e10895e028d4b53b387edef27f6deb6",
"dataId":"1631932263268",
"censorSource":2,
"evidences":{
"content":"加我",
"startTime":1631932269297,
"endTime":1631932285317,
"dataId":"1631932263268",
"speakerId":"",
"segmentId":"0ab2682947b648fd98cbe9436875ab0d",
"suggestion":2,
"labels":[
{
"label":200,
"level":2,
"subLabels":[
{
"details":{
"hitInfos":[
{
"value":"加我"
}
]
},
"subLabel":"200009",
"subLabelDepth":2,
"secondLabel":"200009"
}
]
}
]
},
"riskLevel":4,
"riskScore":212,
"status":1
},
"asr":{
"taskId":"3e10895e028d4b53b387edef27f6deb6",
"startTime":1631932269297,
"endTime":1631932285317,
"content":"加我",
"speakerId":"",
"dataId":"1631932263268"
},
"voice":{
"taskId":"7f03cdeaf4cf4c748a4edbe97833a9ee",
"dataId":"",
"callback":"",
"detail":{
"mainAgeGroup":"adult",
"mainAgeGroupRate":0.9973
}
}
}
检测结束返回示例 { "antispam":{ "taskId":"31d2bdoi41d9f3jmifu4lghog04009xgv", "callback":"{自定义callback内容}", "evidences":{ "startTime":0, "endTime":0, "segments":[
],
"suggestion":0,
"censorSource":2
},
"duration":26,
"status":2,
"dataId":"12345"
}
}
## 响应
### 响应结果
* 客户接口接收到我们回调的结果后,需要返回应答信息,接口响应HTTP状态码为200,当回调处理异常时,应答的HTTP状态码应为500,或者4xx;
* 目前推送方式默认连接超时(connect timeout)150ms,回调超时(socket timeout)为2s,建议收到推送检测结果后,优先返回response应答信息,异步处理检测结果,避免因为回调超时,易盾侧未收到响应重复推送结果。如业务侧对于超时配置有特殊要求,可联系易盾策略经理调整配置。
* 应答信息为JSON格式,字段定义如下:
|名称|类型|必须返回|描述|
|----|----|----|----|
|code|Number|是|应答code,易盾方解析code为200表示推送成功|
|msg|String|否|具体描述信息|
### 响应体示例
```json
{
"code": 200,
"msg": "接收成功"
}