181 lines
5.3 KiB
JavaScript
Executable File
181 lines
5.3 KiB
JavaScript
Executable File
/**
|
|
* ezuikit-talk v0.0.1-beta
|
|
*/
|
|
(function (global, factory) {
|
|
|
|
"use strict";
|
|
|
|
if (typeof module === "object" && typeof module.exports === "object") {
|
|
module.exports = global.document ?
|
|
factory(global, true) :
|
|
function (w) {
|
|
if (!w.document) {
|
|
throw new Error("EZUIPlayer requires a window with a document");
|
|
}
|
|
return factory(w);
|
|
};
|
|
} else {
|
|
factory(global);
|
|
}
|
|
|
|
// Pass this if window is not defined yet
|
|
})(typeof window !== "undefined" ? window : this, function (window, noGlobal) {
|
|
// 加载js
|
|
function addJs(filepath, callback) {
|
|
var oJs = document.createElement("script");
|
|
oJs.setAttribute("src", filepath);
|
|
oJs.onload = callback;
|
|
document.getElementsByTagName("head")[0].appendChild(oJs);
|
|
}
|
|
// 通用请求方法
|
|
function request(url, method, params, header, success, error) {
|
|
var _url = url;
|
|
var http_request = new XMLHttpRequest();
|
|
http_request.onreadystatechange = function () {
|
|
if (http_request.readyState == 4) {
|
|
if (http_request.status == 200) {
|
|
var _data = JSON.parse(http_request.responseText);
|
|
success(_data);
|
|
}
|
|
}
|
|
};
|
|
http_request.open(method, _url, true);
|
|
// http_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
|
|
var data = new FormData();
|
|
for (i in params) {
|
|
data.append(i, params[i]);
|
|
}
|
|
http_request.send(data);
|
|
};
|
|
var EZUITalk = function (params) {
|
|
console.log("params",params);
|
|
// this.opt = {
|
|
// apiDomain: 'https://test12open.ys7.com/api/lapp/live/talk/url'
|
|
// }
|
|
this.opt = {
|
|
apiDomain: 'https://open.ys7.com/api/lapp/live/talk/url',
|
|
filePath: '',
|
|
accessToken: undefined,
|
|
deviceSerial: undefined,
|
|
channelNo: undefined,
|
|
talkLink: '',
|
|
rtcUrl: '',
|
|
ttsUrl: '',
|
|
stream: '',
|
|
}
|
|
if(params.accessToken){
|
|
this.opt.accessToken = params.accessToken;
|
|
}
|
|
if(params.url){
|
|
this.opt.deviceSerial = params.url.split("/")[3];
|
|
this.opt.channelNo = params.url.split("/")[4].split(".")[0];
|
|
}
|
|
if(params.filePath){
|
|
this.opt.filePath = params.filePath;
|
|
}
|
|
var _this = this;
|
|
function apiSuccess(data){
|
|
console.log("data",data);
|
|
if(data.code == 200){
|
|
var apiResult = data.data;
|
|
if(apiResult){
|
|
// 临时将https转换为websocket
|
|
var rtcTrunk = apiResult.rtcUrl;
|
|
if(rtcTrunk.indexOf("ws") === -1){
|
|
rtcTrunk = rtcTrunk.replace("https","wss").replace("rtcgw","rtcgw-ws");
|
|
}
|
|
_this.opt.rtcUrl = rtcTrunk;
|
|
_this.opt.ttsUrl = "tts://" + apiResult.ttsUrl;
|
|
var talk = "talk://" + _this.opt.deviceSerial + ":0:" + _this.opt.channelNo + ":cas.ys7.com:6500";
|
|
_this.opt.talkLink = _this.opt.ttsUrl + "/" + talk;
|
|
_this.opt.stream = apiResult.stream;
|
|
console.log("_this.opt",_this.opt)
|
|
// 加载依赖
|
|
// this.init();
|
|
var adapeterJS = _this.opt.filePath + '/adapeter.js';
|
|
var janusJS = _this.opt.filePath + '/janus.js';
|
|
var ttsJS = _this.opt.filePath + '/tts.js';
|
|
console.log("加载jquery.js");
|
|
addJs(adapeterJS,function(){
|
|
console.log("加载adapeter.js");
|
|
addJs(janusJS,function(){
|
|
console.log("加载janus.js");
|
|
addJs(ttsJS,function(){
|
|
console.log("加载tts.js");
|
|
// 文件加载完毕;
|
|
|
|
})
|
|
})
|
|
})
|
|
}
|
|
|
|
}
|
|
}
|
|
function apiError(err){
|
|
if(params.handleError){
|
|
params.handleError(err);
|
|
}
|
|
|
|
}
|
|
request(
|
|
this.opt.apiDomain,
|
|
'POST',
|
|
{
|
|
accessToken: this.opt.accessToken,
|
|
deviceSerial: this.opt.deviceSerial,
|
|
channelNo: this.opt.channelNo
|
|
},
|
|
'',
|
|
apiSuccess,
|
|
apiError
|
|
);
|
|
|
|
console.log("this.opt",this.opt)
|
|
}
|
|
// EZUITalk.prototype.init = function () {
|
|
// console.log();
|
|
|
|
// $.ajax({
|
|
// type: 'POST',
|
|
// url: 'https://test12open.ys7.com/api/lapp/live/talk/url',
|
|
// // contentType: "application/json;charset=utf-8",
|
|
// dataType: 'json',
|
|
// data: {
|
|
// accessToken: accessToken,
|
|
// deviceSerial: serial,
|
|
// channelNo: channelNo,
|
|
// },
|
|
// success: function (data) {
|
|
// log("对讲api调用成功" + JSON.stringify(data));
|
|
// if (data.code == 200) {
|
|
// var result = data.data;
|
|
// ttsUrl = result.ttsUrl,
|
|
// rtcUrl = "wss://test12.ys7.com/rtcgw-ws", //result.ttsUrl
|
|
// stream = result.stream;
|
|
// $('#tts_url').attr("value", matchTalkLink);
|
|
// $("#start").attr('disabled', false);
|
|
// } else {
|
|
// }
|
|
// },
|
|
// error: function (err) {
|
|
// },
|
|
// })
|
|
// }
|
|
|
|
// this.prototype.init = function(){
|
|
// var adapeterJS = this.opt.filepath + '/js/adapeter.js';
|
|
// addJs(adapeterJS,function(){
|
|
// console.log("加载adapeter.js")
|
|
// })
|
|
// }
|
|
EZUITalk.prototype.startTalk = function(){
|
|
window.startTalk();
|
|
}
|
|
EZUITalk.prototype.stopTalk = function(){
|
|
window.stopTalk();
|
|
}
|
|
if (!noGlobal) {
|
|
window.EZUITalk = EZUITalk;
|
|
}
|
|
return EZUITalk;
|
|
}) |