异步检测结果回调接口规范

接收异步文本审核结果,通过 taskId 关联提交的任务。

POSTcallbackUrl

回调配置

  1. 在控制台「服务配置」中配置 HTTP 回调 URL、回调区域,并获取自动生成的回调密钥。
  2. 或在提交任务时传入 callbackUrl 和 callbackSecretKey。

任务提交参数优先于控制台配置。通过接口设置回调时,回调 URL 与密钥均须非空,否则回调不生效。

请求参数

请求头

以下请求头均为必需。

Header 值 说明
Content-Type application/json JSON 请求体
signature — 验签规则见下文「回调签名」

请求体

字段 类型 说明
appId String 所属项目编号
taskId String 提交异步审核时返回的任务 ID
result JSON String 审核结果序列化后的 JSON 字符串

解析 result 字符串后获取结果对象,其中的 code 为预留字段,可忽略。

result

字段 类型 说明
code Number 预留字段(忽略)
textSpam TextSpam 结果信息
warning Boolean 自定义广告词的报警信息,在控制台上添加黑名单时配置
taskId String 区分不同次调用的唯一标识
language String 语种
startTime Number 时间戳,代表检测文本调用时间
endTime Number 时间戳,代表检测文本结果返回时间

textSpam

解析 result 后的字段:textSpam。

字段 类型 说明
content String 检测完成后,如果含有敏感词,敏感词会变星,其他内容正常返回;
result Number 0:通过,1:建议审核,2:不通过
tags List<Tag> 分类信息
wordList String[] 敏感词列表

tags[]

解析 result 后的字段:textSpam.tags。

字段 类型 说明
tag Number 一级分类代码,参见分类编码对照表。
tagName String 检测文本命中的一级类型名称
tagNameEn String 检测文本命中的一级类型名称(英文)
level Number 分类级别,0:正常,1:疑似,2:异常
confidence Number 置信度,0~100之间的值,数值越大,表示检测文本为广告的可能性越大。(仅tag为150时,返回该字段)
subTags List<SubTag> 敏感信息的二级分类

subTags[]

解析 result 后的字段:textSpam.tags[].subTags。

字段 类型 说明
subTag Number 二级分类详细编码请参考 分类编码对照表
subTagName String 检测文本命中的二级类型名称
subTagNameEn String 检测文本命中的二级类型名称(英文)
wordList String[] 命中详情

请求示例

{
  "appId": "1000",
  "taskId": "c01b212f-3e31-4a2e-8346-b6f6ce3a3456",
  "result": "{\"code\":0,\"textSpam\":{\"content\":\"****\",\"result\":2,\"tags\":[{\"tag\":160,\"level\":2,\"tagName\":\"辱骂\",\"tagNameEn\":\"insults\",\"subTags\":[{\"subTag\":160001,\"subTagName\":\"谩骂人身攻击\",\"subTagNameEn\":\"insults and personal attacks\",\"wordList\":[\"fuck\"]}]}],\"wordList\":[\"fuck\"]},\"taskId\":\"c01b212f-3e31-4a2e-8346-b6f6ce3a3456\",\"language\":\"English\",\"startTime\":1660103900367,\"endTime\":1660103900374}"
}

回调签名

使用回调密钥验证请求头中的 signature。

  1. 将请求参数名按 ASCII 升序排列。
  2. 按 key1 + value1 + key2 + value2 + ... 拼接参数名和值。
  3. 在末尾追加回调密钥。
  4. 将字符串以 UTF-8 编码,计算 MD5 十六进制摘要,与 signature 比较。

验签示例

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);
    return DigestUtils.md5Hex(signBuilder.toString().getBytes(StandardCharsets.UTF_8));
}

示例使用 java.util.Arrays、java.util.Map、java.nio.charset.StandardCharsets 和 Apache Commons Codec 的 DigestUtils。

回调响应

接收回调后返回 JSON 应答。响应体的 code 为 0 表示处理成功;处理异常时,文档约定 code 为 500 或 4xx。

参数 类型 必需 说明
code Number 必需 0 表示此次回调处理成功
message String 可选 具体描述信息
{
  "code": 0
}

失败处理

请保证接收接口稳定可用。推送失败时按 10 秒间隔推送 3 次,第三次仍失败则停止推送;可通过检测结果查询主动获取结果。