结果回调接口

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

POSTcallbackUrl

针对于审核服务 .../check/submit 异步接口的回调,用于将异步检测审核结果推送给客户,客户需要按照以下规范实现接收结果的接口。

回调配置

结果将以 taskId 为维度,将审核结果推送给客户。如需使用回调功能,

  • 方式1:请在控制台-服务配置配置回调URL(http协议),回调区域,回调密钥在配置完回调参数后自动生成。
  • 方式2:在.../check/submit接口提交任务时,携带对应的回调参数。见点播音频submit接口/直播音频submit接口。

需要注意使用方式2的优先级大于方式1,如在提交任务时使用接口入参方式会使控制台配置的回调参数失效,请确保入参正确。另外在接口入参时需保证回调url,回调密钥不为空,否则回调不生效。 客户方需保证回调接收接口的可用性和稳定性,确保能正常接收推送过来的结果数据。

回调签名

客户可通过配置完回调参数后分配的密钥信息字段进行接口鉴权。具体方式如下:

  • 签名算法

    1> 将接受的的请求体参数按照ASCII码表升序顺序排序。

    2> 将排序好的参数 append 成字符串。格式为:key1 + value1 +key2 + value2…。

    3> 将配置完回调参数后生成的密钥 append 到 2> 步骤生成的字符串后。

    4> 将 3> 步骤生成的字符串使用 UTF-8 进行编码,使用 MD5 进行加密生成 signature 参数值,并将其放入 请求 header 中。

签名示例

/**
 * 生成签名
 * @param secretKey 后台密钥
 * @param params 接口请求参数名和参数值map,不包括signature参数名
 * @return
 */
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);

    try {
      return DigestUtils.md5Hex(signBuilder.toString().getBytes("UTF-8"));
    } catch (UnsupportedEncodingException e) {
      // error
    }
    return null;
}

接入说明

  • 协议说明:客户方需提供支持 http 协议的 post 请求方式的接口。

  • 接口性能:客户需保持接口的稳定性与可靠性。

  • 失败重试:我们在收到客户回调响应后,如果不符合规定的接受成功规范,则认为此次推送失败。将以规定间隔时间 10s 推送 3 次,如果第三次继续失败将不再继续推送。如要获取结果则调用主动查询结果接口。

请求参数

  • 请求地址及方式
名称 值
callbackUrl 回调地址url(http协议)
HTTP_METHOD POST

请求头

名称 类型 必填 说明
Content-Type String 是 固定值:application/json
signature String 是 签名,验证请求的合法性,参照鉴权算法

请求体

名称 类型 说明
appId String 所属项目ID
taskId String 提交异步审核时,返回的任务id
result String 审核结果
checkType String 检测项目标识,如视频 video-check,音频 audio-check,超时断流回调 stream-closed

请求示例

直播断流回调

断流的判断逻辑:http连接断掉,或按标准http chunk的协议:最后收到一个chunk size=0 + CRLF 的行

{
    "appId":"91200001",
    "taskId":"test_024c3621-4ee6-4d5d-9de8-5d553e319f90_1669957244196",
    "result":"{\"streamUrl\":\"rtmp://xxx.com/stream/103\",\"streamClosed\":true}",
    "checkType":"stream-closed"
}

点播回调

{
    "appId": "91100001",
    "taskId": "Telnet-aaaaa",
    "result": "{\"errorCode\":0,\"code\":0,\"result\":0,\"taskId\":\"Telnet-aaaaa\",\"audioSpams\":[{\"startTime\":0.0,\"endTime\":10.03,\"text\":\"\"}],\"language\":\"zh-CN\"}",
    "checkType": "audio-check",
    "userId": "12345678"
}

HTTP 响应

客户接口接收到我们回调的结果后,需要返回应答信息,接口响应 code 状态码为 0,当回调处理异常时,应答的 code 状态码应为 500,或者 4xx; 应答信息为json格式,字段定义如下:

名称 类型 必填 说明
code Number 是 应答code,code 值为 0 代表此次回调成功
message String 否 具体描述信息