事件通知

更新时间: 2025-05-22 10:34:43

网盘与相册服务(PDS)提供事件通知功能,支持多种文件操作事件的实时通知。用户可在PDS管理控制台配置通知订阅,通过MNS接收事件消息。事件类型包括文件创建、更新、移动、删除等,每种事件均有详细的消息体结构。配置后5分钟生效,适用于实时监控和响应文件变化场景。

您可以在网盘与相册服务PDS管理控制台中,找到域列表,点开对应的域,编辑通知订阅,配置好MNS信息以及需要关注的事件。

使用说明

您在配置好通知订阅之后,需要过5分钟时间才会生效。 配置生效后,您在PDS触发的相应操作,PDS都将通过MNS把事件消息发送到您配置的MNS Topic中。具体流程如下图所示:

1643017753227-05b1ff60-9793-4567-a904-d03cd4ba344b

事件类型

1. 通用消息体

{
    "event_name":"事件名",
    "event_source":"",
    "event_time":"",
    "event_version":"",
    "content":{ // 消息体
    }
}

通用文件信息结构体:EventFileInfo

{
    "drive_id":"",
    "parent_file_id":"",
    "file_id":"",
    "head_revision_id":"",
    "name":"",
    "type":"folder",
    "size":1024,
    "taken_at":"2019-08-20T06:51:27.292Z",
    "local_created_at":"2019-08-20T06:51:27.292Z",
    "file_path":"",
    "file_extension":"",
    "file_category":"",
    "stream_meta":"",
    "content_hash_list":[
      {"hash_name":"","hash_hex_str":"","size":0,"md5":""}
    ]
}

通用任务事件消息结构体:TaskEventContent

{
  // 任务相关域 id,非空
  "domain_id": "domain_id",
  // 任务相关空间 id
  "drive_id": "drive_id",
  // 任务相关文件 id
  "file_id": "file_id",
  // 任务 id,非空
  "task_id": "task_id",
  // 任务状态,非空,枚举值,可选值为 [Succeeded, Failed, PartialSucceeded, Running]
  "state": "Succeeded",
  // 任务失败错误码
  "error_code": "",
  // 任务失败错误信息
  "error_message": "",
  // 任务创建时间,UTC 毫秒级时间戳
  "created_at": 1747709923123,
  // 任务完成时间,UTC 毫秒级时间戳
  "finished_at": 1747729923123,
  // 任务结果信息,根据任务类型不同而不同
  "task_result": "{\"transcode_type\":\"VideoTranscode\",\"transcode_results\":[{\"template_id\":\"264_480p\",\"status\":\"finished\"}]}",
  // 任务类型,非空,枚举值,详细参考下文任务类事件介绍
  "task_type": "OfflineTranscode"
}

2.文件类事件

触发时机:上传文件(创建文件夹、文件)

事件名:FILE.CREATED

消息体:

{
    "domain_id":"",
    "xxx":"参考上面的 EventFileInfo 字段",
    "client_ip":"",
    "umid_token":""
}

触发时机:更新文件元信息

事件名:FILE.UPDATED

消息体:

{
    "domain_id":"",
    "xxx":"参考上面的 EventFileInfo 字段",
    "updated_labels":["xxx"],
    "attributes":["name","xxxx"] // 被更新字段
}

触发时机:移动文件到回收站,包括后台异步移动的所有子目录文件

事件名:FILE.TRASHED

消息体:

{
    "domain_id":"",
    "drive_id":"",
    "file_list":[
      {
         "xxx":"参考上面的 EventFileInfo 字段"
      }
    ]
}

触发时机:从回收站恢复文件,包括后台异步还原的所有子目录文件

事件名:FILE.RESTORED

消息体:

{
    "domain_id":"",
    "drive_id":"",
    "file_list":[
      {
         "xxx":"参考上面的 EventFileInfo 字段"
      }
    ]
}

触发时机:删除单文件

事件名:FILE.DELETED

消息体:

{
    "domain_id":"",
    "drive_id":"",
    "xxx":"参考上面的 EventFileInfo 字段"
}

触发时机:批量删除文件

事件名:FILE.BATCHDELETED

消息体:

{
    "domain_id":"",
    "drive_id":"",
    "delete_file_list":[
      {    
        "xxx":"参考上面的 EventFileInfo 字段"
      }
    ]
}

触发时机:复制文件,包括后台异步复制的所有文件,每个文件一条消息

事件名:FILE.COPIED

消息体:

{
    "domain_id":"",
    "src_file":{
      "xxx":"参考上面的 EventFileInfo 字段"
    },
    "tgt_file":{
      "xxx":"参考上面的 EventFileInfo 字段"
    }
}

触发时机:移动文件

事件名:FILE.MOVED

消息体:

{
    "domain_id":"",
    "src_file":{
      "xxx":"参考上面的 EventFileInfo 字段"
    },
    "tgt_file":{
      "xxx":"参考上面的 EventFileInfo 字段"
    }
}

触发时机:跨 Drive 移动文件

会发送两条消息,一条删除文件消息和一条复制文件消息

触发时机:文件审核结束。若同时送审了多个内容相同的文件,该文件内容在审核结束时会为每个文件都产生一条消息,此时消息限500条。

事件名:FILE.INVESTIGATED

消息体:

{
    "domain_id":"",
    "drive_id":"",
    "file_id":"",
    "revision_id":"",
    "content_hash_list":[
      {"hash_name":"","hash_hex_str":"","size":0,"md5":""}
    ],
    "investigation_info":{
      "xxx":"参考数据结构InvestigationInfo"
    }
}

3.任务类事件

任务类事件的消息体均为TaskEventContent。根据任务类型不同,消息体中的任务类型(task_type)字段和任务结果信息(task_result)字段也会发生变化。其中任务结果信息字段的值为对应任务结果信息结构的 JSON 序列化结果。以下是现有的任务类事件。

离线转码任务事件

任务类型:OfflineTranscode

任务结果信息结构:OfflineTranscodeTaskResult

{
  // 离线转码类型,非空,枚举值,可选值为 [VideoTranscode, AudioTranscode]
  "transcode_type": "VideoTranscode",
  // 离线转码结果列表
  "transcode_results": [
    {
      // 离线转码模板 ID,非空
      "template_id": "264_480p",
      // 离线转码模板转码结果,非空,枚举值,可选值为 [running, finished, failed]
      "status": "finished"
    },
    ...
  ]
}

相关文档

网盘与相册提供结合轻量消息队列实现事件通知订阅示例。具体操作,请参见教程示例

上一篇: Revision 下一篇: 教程示例:结合轻量消息队列(原 MNS)实现PDS事件通知订阅
阿里云首页 网盘与相册服务 相关技术圈