事件通知
网盘与相册服务(PDS)提供事件通知功能,支持多种文件操作事件的实时通知。用户可在PDS管理控制台配置通知订阅,通过MNS接收事件消息。事件类型包括文件创建、更新、移动、删除等,每种事件均有详细的消息体结构。配置后5分钟生效,适用于实时监控和响应文件变化场景。
您可以在网盘与相册服务PDS管理控制台中,找到域列表,点开对应的域,编辑通知订阅,配置好MNS信息以及需要关注的事件。
使用说明
您在配置好通知订阅之后,需要过5分钟时间才会生效。 配置生效后,您在PDS触发的相应操作,PDS都将通过MNS把事件消息发送到您配置的MNS Topic中。具体流程如下图所示:
事件类型
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"
},
...
]
}
相关文档
网盘与相册提供结合轻量消息队列实现事件通知订阅示例。具体操作,请参见教程示例。