如果您有多个环境(如开发、测试和生产等环境)需要接收回调消息,或者希望将同一类型的事件通知发送到多个不同的服务器地址进行处理,则可以通过API/SDK设置UserData参数来指定不同的回调地址,通过UserData既支持HTTP回调,也支持轻量消息队列(原 MNS)回调。本文介绍如何设置多个回调地址来接收视频点播产生的回调消息。
背景信息
视频点播提供了全局的事件通知功能,每个服务地域可以单独配置事件通知的回调方式和回调地址,但每个服务地域下仅能配置一种回调方式和一个回调地址。由于部分用户有对多环境区分的诉求,视频点播提供UserData参数,通过参数透传,可以让用户自定义参数传递,通过在UserData参数中指定回调地址从而让用户能使用不同的回调地址来接收回调消息。
设置点播全局事件通知
使用限制
如果需要使用轻量消息队列(原 MNS)回调,则需授权视频点播服务VOD访问轻量消息队列(原 MNS),可访问云资源访问授权页面进行授权。
使用说明
视频点播提供了针对全局的事件通知功能,支持HTTP回调和轻量消息队列(原 MNS)回调两种方式。视频点播支持多个服务地域,每个服务地域下仅支持设置一种回调方式和一个回调地址,当在视频点播服务中执行上传媒资文件(音/视频或图片)、发起媒体处理(转码、审核等)等操作触发相应回调事件时,视频点播会根据服务地域配置的回调方式和回调地址及时通知。
配置方法
全局的事件通知支持通过点播控制台和API/SDK方式设置,详细的操作步骤及使用限制等信息,请参见HTTP回调和MNS回调。
上传时在UserData中指定回调地址
使用限制
使用说明
通过视频点播的服务端SDK或上传SDK上传媒资文件到视频点播中时,支持在UserData中设置回调地址。此回调地址会和媒资源文件进行绑定,之后对此媒资进行转码、审核等媒体处理时,产生的回调事件都会回调到此回调地址上,而回调哪些类型的事件则以在全局设置的回调事件类型为准。如果将此媒资源文件删除,则后续的事件回调会使用全局设置的回调地址。
相关API
使用服务端SDK或上传SDK上传的详细操作,请参见服务端SDK和上传SDK。
支持设置UserData参数的上传相关API如下:
媒体处理时在UserData中指定回调地址
使用限制
使用说明
在视频点播中,通过API/SDK方式对媒资主动发起转码、截图、审核、剪辑等媒体处理时,支持在UserData中设置回调地址。
媒体处理时在UserData设置的回调地址只对单次发起事件生效;若此时不设置回调地址,则优先按上传时在UserData中设置的回调地址生效,其次按在全局配置的回调地址生效。
相关API
支持设置UserData参数的媒体处理相关API如下:
UserData参数示例
UserData参数结构的定义及详细介绍,请参见UserData。结构示例如下:
{
"Extend":{
"width":1280,
"id":"028a8e56b*****1ebf6bb7afc74",
"height":720
},
"AccelerateConfig":{
"Type":"oss",
"Domain":"https://oss-accelerate.aliyuncs.com"
},
"MessageCallback":{
"CallbackURL":"https://xxxxx.com/2016-08-15/proxy/httpcallback/testcallback/",
"CallbackType":"http"
}
}
构建UserData的示例代码如下:
public static String buildUserData() {
JSONObject userData = new JSONObject();
//消息回调设置
JSONObject messageCallback = new JSONObject();
messageCallback.put("CallbackType", "http");
messageCallback.put("CallbackURL", "https://xxxxx.com/2016-08-15/proxy/httpcallback/testcallback/");
userData.put("MessageCallback", messageCallback);
//透传字段(可以透传用户自定义参数)
JSONObject extend = new JSONObject();
extend.put("id", "028a8e56b*****1ebf6bb7afc74");
extend.put("width", 1280);
extend.put("height", 720);
userData.put("Extend", extend);
//上传加速设置 (上传时需要使用加速服务才设置)(按需设置,需单独申请开通)
JSONObject accelerateConfig = new JSONObject();
accelerateConfig.put("Type", "oss");
accelerateConfig.put("Domain", "https://oss-accelerate.aliyuncs.com");
userData.put("AccelerateConfig", accelerateConfig);
return userData.toJSONString();
}