logo
当前页

文件转码状态回调


注意
回调服务不能保证完全可靠,请慎重考虑使用回调方案构建核心业务流程的风险。

描述

当开发者希望获取文件转码完成的事件通知时,可以联系 ZEGO 技术配置回调地址,文件转码服务器将会以 POST 的形式对回调地址进行请求。

回调说明

  • 请求方法:POST
  • 请求地址:请联系 ZEGO 技术支持配置
  • 传输协议:HTTPS

请求参数

参数类型描述
appidNumberAppId。
eventString回调事件,此回调返回值为 cvt_finish。
nonceString随机数字符串。
signatureString检验串,请参考 检验说明
timestampNumber服务器当前时间,Unix 时间戳。
dataObject响应对象。
└file_idString转码成功后返回的文件 ID。
└task_idString文件转码任务 ID。
└statusNumber文件转码状态,详情请参考下文中 status 字段说明表。

status 字段取值说明如下

状态码描述
16转码成功。
32转码失败。
64转码任务已取消。
128受密码保护的文档。
256文件内容过大。
512Excel 文件标签数过多。
1024文件内容为空。例如:PPT 内无幻灯片。
2048转码服务器打开文件失败。
4096不支持的目标文件类型。
8192源文件为只读文件。
16384

转码服务器下载源文件失败。 可能的原因如下:

  • 无法从请求参数中的源文件 URL 下载文件。
  • 请求参数中的文件哈希值不是 32 位的 MD5 哈希值。
  • 请求参数中的文件哈希值和根据文件计算的哈希值不匹配。
32768检测到源文件中包含了转码工具无法处理的元素,如墨迹涂鸦等,请去掉这些元素后再进行转码。
32769检测到 Word、Excel 和 PowerPoint 文件格式不合法,请确保源文件可以使用 Office 打开再进行转码。

数据示例

Untitled
{
    "appid": 123,
    "data": {
        "file_id": "ZYV-AFTrF6qnfFGW",
        "status": 16,
        "task_id": "9Y74yTsVd7e825-N"
    },
    "event": "cvt_finish",
    "nonce": "6990248315071153368",
    "signature": "1bb4db39726ee7f64c20ac0a71a730655b98ae2c",
    "timestamp": 1627544014
}
1
Copied!

检验说明

为提高数据安全性,开发者在收到 ZEGO 服务端发出的回调时,进行本地签名计算,并与 signature 进行对比,判断该请求是否合法。

加密/校验

加密/校验的使用流程如下:

参数说明如下:

参数说明
callbacksecret服务端校验密钥。在 ZEGO 控制台 注册项目时生成,可在 “控制台 > 项目配置 > 服务端API密钥” 中查看。
timestampUnix 时间戳。
nonce随机数。

示例代码

以下示例代码用于生成和检验 signature。

PHP 示例
Java 示例
// 从请求参数中获取到 signature, timestamp, nonce
$signature = $_POST["signature"];
$timestamp = $_POST["timestamp"];
$nonce = $_POST["nonce"];

$secret = callbacksecret;// 后台获取的 callbacksecret
$tmpArr = array($secret, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );

if( $tmpStr == $signature ){
    return true;
} else {
    return false;
}
1
Copied!
// 从请求参数中获取到 signature, timestamp, nonce
String signature = request.getParameter("signature");
long timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");

// 后台获取的 callbacksecret
String secret = callbacksecret;

String[] tempArr = {secret, ""+timestamp, nonce};
Arrays.sort(tempArr);

String tmpStr = "";
for (int i = 0; i < tempArr.length; i++) {
    tmpStr += tempArr[i];
}
tmpStr = org.apache.commons.codec.digest.DigestUtils.sha1Hex(tmpStr);

return tmpStr.equals(signature);
1
Copied!

输出示例

Untitled
$timestamp = 1470820198;
$nonce = 123412;
$secret = 'secret';

排序拼接后需要加密的原始串为:1234121470820198secret
加密的结果为:5bd59fd62953a8059fb7eaba95720f66d19e4517
1
Copied!

返回响应

返回 HTTP status code 为 2XX (例如 200)表示成功,其他响应都表示失败。

回调重试策略

如果 ZEGO 服务器没有收到响应,会在 15 秒后发起重试,最多重试两次。

Previous

删除文件

Next

设置房间权限