智能多媒体服务

  • 智能多媒体 > 使用指南 > 开发指南 >任务通知

    任务通知

    最近更新时间:2020-12-30 11:10:24

    支持对任务处理后的结果,及时进行消息通知。任务通知是异步进行的,不影响正常的操作。支持以回调方式将消息推送到指定URL。

    • 任务执行成功
    • 任务执行失败

    消息格式

    通过工作流创建的任务,任务处理完成后的回调通知内容,消息体是JSON格式。

    注意:

    此处为V3版本的回调内容,可查看 老版V2回调内容

    下面介绍详细的字段名称、类型、描述。

    • 基本属性

      是一个JSON对象。定义:{当前任务的基本属性},字段如下。

      字段名称 说明
      version 版本号,新版本统一都为“v3”
      id 任务ID
      reqid 云处理请求的请求id,主要用于七牛技术人员的问题排查。
      pipeline 默认使用队列为:default.sys
      created_at 任务创建的时间戳,单位为毫秒
    • 任务处理对象

      是一个JSON对象。定义:{input},字段如下。

      字段名称 说明
      bucket 输入文件,当前仅支持kodo文件,待处理文件所在存储空间
      key 待处理文件名
      hash 云处理结果保存在服务端的唯一hash标识
    • 任务结果

      是一个JSON对象。定义:{任务处理结果},字段如下。

      字段名称 说明
      code 返回码, 0成功、1等待处理、2处理中、3失败、5已取消(删除pipeline时,并且有任务还在等待中)
      desc 返回信息描述,例如: success
    • 工作流节点处理详情

      是一个JSON对象组,所有工作流节点处理的详情。定义:{ops},字段如下。

      "ops": [
            {
                "id": "<opid>", // 具体执行的操作,fop与cond只会有一个非空,fop为计算节点、cond为条件判断节点
                "fop": {                    // 表示具体的音视频计算节点信息
                    "cmd": "xxx",           // 计算的命令
                    "input_from": "<opid>", // 计算的输入文件,"__origin__"表示来源于触发的主输入文件,其它表示来源于某个节点的处理结果
                    "result": {             // 处理结果
                        "code": 0,          // 0成功、1等待处理、2处理中、3处理失败、5任务被取消、6跳过、7无效
                        "desc": "...",      // 处理结果描述
                        "has_output": true, // 表示是否存在输出文件,如果是中间临时节点为false
                        "kodo_file": {      // 具体输出文件信息
                            "bucket": "aaa",
                            "key": "abc.mp4",
                            "hash": "..."
                        }
                    }
                },
                "depends": ["<opid>",...] // 依赖的前置处理节点
            },
            {
                "id": "<opid>",
                "cond": {                              // 条件节点信息
                    "expression": "xxx",               // 条件表达式,当前为“go template expression”
                    "result": {                        // 条件表达式的执行结果
                        "code": 0,                     // 0成功、1等待处理、2处理中、3处理失败、5任务被取消、6跳过、7无效
                        "desc": "...",                 // 处理结果描述
                        "output": "<opid>,<opid>,..."  // 输出信息,为允许执行的后置节点名称列表
                    }
                },
                "depends": ["<opid>",...] // 依赖的前置处理节点
            },
            ...
        ],
    }
    

    示例

    如果请求成功,返回包含如下内容的JSON字符串(已格式化,便于阅读):

    {
        "version": "v3",
        "id": "z0.01z001c7n9d3q0nylt000001jm0001d4",
        "reqid": "zVcAAFE4Z742sE4W",
        "pipeline": "2002.default.sys",
        "input": {
            "kodo_file": {
                "bucket": "dora-async-test",
                "key": "upload.mp4"
            }
        },
        "code": 0,
        "desc": "successfully completed",
        "ops": [
            {
                "id": "A",
                "fop": {
                    "cmd": "avinfo",
                    "input_from": "__origin__",
                    "result": {
                        "code": 0,
                        "desc": "successfully completed",
                        "has_output": false
                    }
                }
            },
            {
                "id": "B",
                "cond": {
                    "expression": "C",
                    "result": {
                        "code": 0,
                        "desc": "successfully completed",
                        "output": "C"
                    }
                },
                "depends": [
                    "A"
                ]
            },
            {
                "id": "C",
                "fop": {
                    "cmd": "avthumb/mp4",
                    "input_from": "__origin__",
                    "result": {
                        "code": 3,
                        "desc": "failed to parse result",
                        "has_output": false
                    }
                },
                "depends": [
                    "B"
                ]
            },
            {
                "id": "D",
                "fop": {
                    "cmd": "saveas/ZG9yYS1hc3luYy10ZXN0OnVwbG9hZF9vdXRwdXQubXA0/jsonQuery/eyJidWNrZXQiOiJ7ey5idWNrZXR9fSIsImtleV90ZW1wbGF0ZSI6Int7LmZuYW1lfX1fb3V0cHV0e3suZXh0fX0ifQ==",
                    "input_from": "C",
                    "result": {
                        "code": 0,
                        "desc": "successfully completed",
                        "has_output": true,
                        "kodo_file": {
                            "bucket": "dora-async-test",
                            "key": "upload_output.mp4",
                            "hash": "FuBWVXNCdqNQxgrtSkERZqLDz5Yp"
                        }
                    }
                },
                "depends": [
                    "C"
                ]
            },
            {
                "id": "E",
                "fop": {
                    "cmd": "avthumb/mp4",
                    "input_from": "__origin__",
                    "result": {
                        "code": 6,
                        "desc": "skipped",
                        "has_output": false
                    }
                },
                "depends": [
                    "B"
                ]
            },
            {
                "id": "F",
                "fop": {
                    "cmd": "saveas/YWJjZDp1cGxvYWRfb3V0XzIubXA0/jsonQuery/eyJidWNrZXQiOiJhYmNkIiwia2V5X3RlbXBsYXRlIjoie3suZm5hbWV9fV9vdXRfMnt7LmV4dH19In0=",
                    "input_from": "E",
                    "result": {
                        "code": 6,
                        "desc": "skipped",
                        "has_output": false
                    }
                },
                "depends": [
                    "E"
                ]
            }
        ],
        "created_at": 1607415851017
    }
    

    备注:

    任务的输出文件信息,V2和V3版本存在差异。

    兼容通过pfop/老版回调 V2方式发起的 多张截图(vsample) 任务处理,产生的多输出情况,新版回调 V3 产生的任务不适用。

    • 老版回调V2,如下:
    "kodo_files": [ // 具体输出文件信息
                            {
                                "bucket": "aaa",
                                "key": "abc.png"
                            },
                            ...
    
    • 新版回调V3,如下:
    "kodo_file": {      // 具体输出文件信息
                            "bucket": "aaa",
                            "key": "abc.mp4",
                            "hash": "..."
                        },
    

    常见问题

    Q1:回调超时,重试几次?重试间隔多久?

    A:重试次数:13;重试间隔依次为:1s 2s 4s 8s 16s 32s …. 最大不超过3600s;重试条件: 回调超时或者客户回调服务器返回 5xx。

    Q2:没有收到回调该如何排查?

    A:首先需要在 【控制台 -> 工作流】,进入工作流详情页面,查看是否填写了回调地址。

    ​ 如果填写了回调地址,还是没有收到回调,则排查回调地址接收服务是否有问题。或者 提交工单 给我们。

    以上内容是否对您有帮助?
  • Qvm free helper
    Close