如果您有多个环境(如开发、测试和生产等环境)需要接收回调消息,或者希望将同一类型的事件通知发送到多个不同的服务器地址进行处理,则可以通过视频点播的HTTP方式回调来实现,通过API/SDK设置UserData参数来指定不同的回调地址。本文介绍如何通过HTTP回调方式设置多个回调地址来接收视频点播产生的回调消息。
背景信息
视频点播提供了全局的事件通知功能,每个服务地域可以单独配置事件通知的回调方式和回调地址,但每个服务地域下仅能配置一种回调方式和一个回调地址。由于部分用户有对多环境区分的诉求,视频点播提供UserData参数,通过参数透传,可以让用户自定义参数传递,通过在UserData参数中指定回调地址从而让用户能使用不同的回调地址来接收回调消息。
设置点播全局回调地址
使用限制
如果后续需要使用UserData参数来指定回调地址,则全局的回调配置必须为HTTP方式的回调并选择配置对应的回调事件类型;若全局的回调配置为MNS回调方式,则UserData中设置的HTTP回调地址将不生效。
如果需要使用MNS回调,则需授权视频点播服务VOD访问消息服务MNS,可访问云资源访问授权页面进行授权。
使用说明
视频点播提供了针对全局的事件通知功能,支持HTTP回调和MNS回调两种方式。视频点播支持多个服务地域,每个服务地域下仅支持设置一种回调方式和一个回调地址,当在视频点播服务中执行上传媒资文件(音/视频或图片)、发起媒体处理(转码、审核等)等操作触发相应回调事件时,视频点播会根据服务地域配置的回调方式和回调地址及时通知。
全局的事件通知支持通过点播控制台和API/SDK方式设置,详细的操作步骤及使用限制等信息,请参见HTTP回调事件通知和MNS回调事件通知。
上传时在UserData中指定回调地址
使用限制
您需要先将视频点播的全局回调,配置为HTTP方式的回调并选择配置对应的回调事件类型,否则在UserData中的回调设置将不会生效。
使用说明
通过视频点播的服务端SDK或上传SDK上传媒资文件到视频点播中时,支持在UserData中设置回调地址。此回调地址会和媒资源文件进行绑定,之后对此媒资进行转码、审核等媒体处理时,产生的回调事件都会回调到此回调地址上,而回调哪些类型的事件则以在全局设置的回调事件类型为准。如果将此媒资源文件删除,则后续的事件回调会使用全局设置的回调地址。
媒体处理时在UserData中指定回调地址
使用限制
需要先将视频点播的全局回调配置为HTTP方式的回调并选择配置对应的回调事件类型,否则在UserData中的回调设置将不会生效。
使用说明
在视频点播中,通过API/SDK方式对媒资主动发起转码(SubmitTranscodeJobs - 提交媒体转码作业)、截图(SubmitSnapshotJob - 提交媒体截图作业)、审核(SubmitAIMediaAuditJob - 提交音视频智能审核作业)、剪辑(ProduceEditingProjectVideo - 视频合成)等媒体处理时,支持在UserData中设置回调地址。
媒体处理时在UserData设置的回调地址只对单次发起事件生效;若此时不设置回调地址,则优先按上传时在UserData中设置的回调地址生效,其次按在全局配置的回调地址生效。
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();
}
相关文档
- 本页导读 (1)