回调通知

流程说明:

1、欢拓请求合作方接口
2、合作方获取POST过去的参数
3、调用SDK内部的 generateSign 方法生成签名,并校验签名是否合法
4、获取cmd参数,判断回调的业务类型并进行相应的处理
5、返回一个json结果数据,如果没有正常返回,欢拓将重试3次

协议说明

1、使用HTTP协议进行信息交互,字符编码统一采用UTF-8

2、除非特殊说明,接口地址统一为合作方填写的API接口地址

3、除非特殊说明,需同时支持GET和POST两种参数传递方式

4、除非特殊说明,返回信息为json格式

5、除了sign外,其余所有请求参数值都需要进行URL编码

6、参数表中,类型一栏声明的定义为:int 代表整数类型;string 代表字符串类型,如果后面有括号,括号中的数字代表该参数的最大长度;array表示数组类型

请求参数说明

名称 类型 描述
openID string 合作方唯一标识码
timestamp string 当前Unix时间戳
cmd string 调用的api接口名称
params string 参数json格式字符串
ver string 协议版本号,统一 1.0
sign string 欢拓根据以上参数与openToken进行生成
  • sign生成规则可以分为4个步骤:

    1、把其它所有参数按key升序排序。

    2、把key和它对应的value拼接成一个字符串。按步骤1中顺序,把所有键值对字符串拼接成一个字符串。

    3、把分配给的openToken拼接在第2步骤得到的字符串后面。

    4、计算第3步骤字符串的md5值,使用md5值的16进制字符串作为sign的值。

返回参数说明

名称 类型 描述
code int 状态值:0表示操作成功;其它值表示失败
msg string 状态说明
data array 返回具体信息

调用代码示例

PHP:

$handler = new ExampleHandler();
$handlerMethod = 'handler';

$MTCloud = new MTCloud();
$MTCloud->registerCallbackHandler(array($handler,$handlerMethod));
$MTCloud->callbackService();        

class ExampleHandler {
    function handler($cmd,$params){
        if($cmd === 'live.start'){
            ...
        }else if($cmd === 'live.stop'){
            ...
        }
        ...

        return $response;
    }
}

Java:

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody; 

import com.mtcloud.sdk.CommonResult;
import com.mtcloud.sdk.MTCloud;

@Controller
@RequestMapping(value = "/callback")
public class CallbackExampleAct {

    @RequestMapping(value = "/api", method = RequestMethod.POST, produces = "application/json;charset=utf-8")
    @ResponseBody
    public CommonResult callbackApi(HttpServletRequest request, HttpServletResponse response) {

        //获取请求参数
        Map<String, String> reqParams = new HashMap<String, String>();
        reqParams.put("openID", request.getParameter("openID"));
        reqParams.put("timestamp", request.getParameter("timestamp"));
        reqParams.put("cmd", request.getParameter("cmd"));
        reqParams.put("params", request.getParameter("params"));
        reqParams.put("ver", request.getParameter("ver"));
        //reqParams.put("sign", request.getParameter("sign"));
        String sign = request.getParameter("sign");

        MTCloud talkfunSDK = new MTCloud("My openID","My openToken");

        if(!talkfunSDK.generateSign(reqParams).equals(sign)) {
            //签名验证失败
            return CommonResult.Builder.FAIL().initErrCodeAndMsg(MTCloud.CODE_SIGN_ERROR, "sign validate fail");
        }

        // 解析params
        String jsonStr = URLDecoder.decode(reqParams.get("params"), "UTF-8");
        JSONObject params = JSONObject.fromObject(jsonStr);

        //签名验证成功
        if(reqParams.get("cmd").equals("live.start")){
            ...
        }else if(reqParams.get("cmd").equals("live.stop")){
            ...
        }else{
            ...
        }
        return CommonResult.Builder.SUCC().initSuccCodeAndMsg(MTCloud.CODE_SUCCESS,"suc").initSuccData("response data");
    }
}

直播状态事件通知

  • 调用方式:异步

  • 1.直播开始

    api名称:live.start

    功能描述:通知直播开始

    params参数说明:

名称 类型 描述
title string 直播主题
liveid string 直播记录ID
bid string 主播账号
thirdAccount string 第三方账号
roomid string 房间ID
startTime int 直播开始时间
endTime int 直播结束时间
duration int 直播时长
course_id int 课程ID
  • 2.直播结束

    api名称:live.stop

    params参数说明:同直播开始

  • 3.直播回放生成

    api名称:live.playback

    params参数说明:同直播开始 以及 增加 url 参数,url参数为直播回放页面地址

  • 4.上传文档

    api名称:live.document.add

    params参数说明:

名称 类型 描述
id int 文档ID
ext string 文件后缀
name string 文档名称
size int 文档大小
md5 string 文档md5
time int 文档上传时间
  • 5.视频转码

    api名称:video.convert

    params参数说明:

名称 类型 描述
videoId int 视频ID
status int 转码状态,0转码成功,1转换中,3转换失败
filesize int 转换成功后的文件大小
convertMd5 string 转换后的文件MD5
doneTime string 转换成功时间
  • 5.视频删除

    api名称:video.delete

    params参数说明:

名称 类型 描述
videoId int 视频ID
Copyright Talkfun all right reserved,powered by Gitbook修订时间: 2024-09-19 10:13:12

results matching ""

    No results matching ""