使用须知
功能介绍
架构和流程
开发者搭建一个 HTTP 服务,接收来自智能创作的事件通知请求。本文档以该服务通过对 Storage.NewFileCreated 的处理,实现获取用户在用户端上传视频的媒体 ID 及云点播 FileId 等其它信息为例,来介绍事件通知服务的实现方法。
系统主要由三个部分组成:用户端、事件接收服务、智能创作,其中事件接收服务是本文档需要实现及部署的服务。其架构如下图所示:
具体业务流程为:
1. 用户端上传一个视频到智能创作。
2. 智能创作后台发起
Storage.NewFileCreated
事件通知请求给事件接收服务。3. 事件接收服务解析事件通知内容,将新文件的媒体 ID 及云点播 FileId 打印到日志中。
接口约定
本教程中约定,事件接收服务暴露的接口形式如下:
事件接收服务的 URL 地址为
https://api.example.com/callback
。智能创作以 HTTP POST 方式发起事件通知,通过 BODY 传递事件通知内容。
准备工作
案例中所用到的素材
创建智能创作平台
注意
若已创建智能创作平台,请忽略此步骤。
快速部署事件通知接收服务
步骤1:部署后端服务框架
Lighthouse:搭建 Node.js 开发环境。
SCF:快速部署 Koa 框架。
事件通知服务的主框架代码如下:
const Koa = require('koa')const Router = require('koa-router')const bodyparser = require('koa-bodyparser');const app = new Koa()const router = new Router()// 示例请求路由代码,后续会将其用正式路由替换router.post('/hello', (ctx, next) => {ctx.body = 'world'})app.use(bodyparser());app.use(router.routes())app.listen(80)
部署服务,并访问
http://api.example.com/hello
,接口将返回文本 world
。步骤2:开发事件接收服务接口(Callback)
主要流程如下:
1. 接收请求,从 BODY 中解析出新文件的媒体 ID 及云点播 FileId。
2. 在日志中输出媒体 ID 及云点播 FileId。
3. 组装应答。
在 App 的路由部分增加如下代码,来支持
Callback
路径的路由:const fileCreatedEventType = "Storage.NewFileCreated"router.post('/Callback', async cxt => {//获取post传递的数据const body = cxt.request.bodyconst eventtype = body.EventTypeif (eventtype === null) {console.log("invalid EventType")ctx.body = {Code: "Failed",}return}switch (eventtype) {case fileCreatedEventType:const event = body.StorageNewFileCreatedEventconsole.log("MaterialId: " + event.MaterialId)console.log("FileId: " + event.FileId)default:console.log("EventType: " + eventtype)}ctx.body = {Code: "Success",}});
注意
智能创作只判断 HTTP 返回码,如果是 200 即认为成功,否则会重试回调三次。
步骤3:配置事件通知地址
步骤4:测试事件接收服务
注意