/* eslint-disable no-undef */ function _registerEvent(target, eventType, cb) { const eventListener = target.addEventListener || target.attachEvent; eventListener.call(target, eventType, cb); return { remove: function () { const eventRemover = target.removeEventListener || target.detachEvent; eventRemover.call(target, eventType, cb); }, }; } function openUriWithTimeoutHack(uri, failCb, successCb, timeoutDuration) { let timeout = setTimeout(function () { failCb(); handler.remove(); }, timeoutDuration); let target = window; while (target !== target.parent) { target = target.parent; } let handler = _registerEvent(target, 'blur', onBlur); function onBlur() { clearTimeout(timeout); handler.remove(); successCb(); } var iframe = document.createElement('iframe'); iframe.style.display = 'none'; document.body.appendChild(iframe); iframe.src = uri; } /** * CloudICP 22.0 * version: ICP eAPP610_TD V100R022C00SPC620 */ var sdkVersion = "022.650.191"; var cloudICP; (function(root, factory) { if (typeof define === 'function' && define.amd) { // AMD. Register as an anonymous module. define([], factory); } else if (typeof exports === 'object') { // Node. Does not work with strict CommonJS, but // only CommonJS-like environments that support module.exports, // like Node. module.exports = factory(); } else if (this == undefined) { window.ICPSDK = factory(); } else { // Browser globals (root is window) root.ICPSDK = factory(); } }(this, function() { /** * * @param {*} config { * serverAddress: "", //eg: * serverWSPort: "8015", // * serverHttpPort : "9898", * debugMode: "false", * localMediaServiceAudioPort : "", * localMediaServiceVideoPort : "", * localMediaServiceWSPort : "", * localMediaDataServiceWSPort : "", * localDeamonServiceWSPort : "", * sdkStatusNotify: * } */ function ICPSDK(config) { this.util = new ICPSDK_Util(); if (!config["serverAddress"] || !this.util.checkIp(config["serverAddress"])) { this.util.log({ "logLevel": "error", "logMsg": "serverAddress is invalid" }); throw new Error("serverAddress is invalid"); return; } if (!config["serverDomain"]) { config["serverDomain"] = "171.221.254.50"; } if (undefined == config["sdkStatusNotify"] || typeof config["sdkStatusNotify"] != "function") { this.util.log({ "logLevel": "error", "logMsg": "sdkStatusNotify is invalid" }); throw new Error("sdkStatusNotify is invalid"); return; } if (undefined == config["videoResizeMode"]) { config["videoResizeMode"] = 0; } else { config["videoResizeMode"] = config["videoResizeMode"]; } if (undefined == config["videoConfLocalWindow"]) { config["videoConfLocalWindow"] = true; } else { config["videoConfLocalWindow"] = config["videoConfLocalWindow"]; } if (undefined == config["demo_wssflow_enable"]) { config["demo_wssflow_enable"] = false; } else { config["demo_wssflow_enable"] = config["demo_wssflow_enable"]; } if (!config["serverWSPort"] || !this.util.checkPort(config["serverWSPort"])) { config["serverWSPort"] = "8015"; } if (!config["serverHttpPort"] || !this.util.checkPort(config["serverHttpPort"])) { config["serverHttpPort"] = "8015"; } if (!config["debugMode"] || (config["debugMode"] != "true" && config["debugMode"] != "false")) { config["debugMode"] = "false"; } if (!config["localMediaServiceAudioPort"] || !this.util.checkPort(config["localMediaServiceAudioPort"])) { config["localMediaServiceAudioPort"] = "8002"; } if (!config["localMediaServiceVideoPort"] || !this.util.checkPort(config["localMediaServiceVideoPort"])) { config["localMediaServiceVideoPort"] = "8002"; } if (!config["localMediaServiceWSPort"] || !this.util.checkPort(config["localMediaServiceWSPort"])) { config["localMediaServiceWSPort"] = "17802"; } if (!config["localMediaDataServiceWSPort"] || !this.util.checkPort(config["localMediaDataServiceWSPort"])) { config["localMediaDataServiceWSPort"] = "17803"; } if (!config["localDeamonServiceWSPort"] || !this.util.checkPort(config["localDeamonServiceWSPort"])) { config["localDeamonServiceWSPort"] = "17801"; } if (!config["mrsServerIP"] || !this.util.checkIp(config["mrsServerIP"])) { config["mrsServerIP"] = ""; } if (!config["mode"]) { config["mode"] = "window"; } if (!config["ringFlag"]) { config["ringFlag"] = "0"; } if (!config["HDVideoMode"]) { config["HDVideoMode"] = false; } // 录音录像路径 默认为: MSP安装目录下的\data\rec目录中 if (undefined == config["localRecordPath"]) { config["localRecordPath"] = ""; } else { config["localRecordPath"] = config["localRecordPath"]; } // 本地录音录像文件所在的硬盘的最小空间大小 单位 GB; if (undefined == config["localRecordMinDiskCap"]) { config["localRecordMinDiskCap"] = 5; } else { config["localRecordMinDiskCap"] = config["localRecordMinDiskCap"]; } config["mspVersion"] = sdkVersion; config["sdkServerHttpTimeout"] = "60000"; this.config = config; this.loginFlag = false; this.grpList = []; this.grpCidList = {}; this.grpVolumeList = {}; this.dispatch = {}; this.dispatch.auth = new ICPSDK_Dispatch_Auth(); this.dispatch.event = new ICPSDK_Dispatch_Event(); this.dispatch.gis = new ICPSDK_Dispatch_GIS(); this.dispatch.sms = new ICPSDK_Dispatch_Sms(); this.dispatch.voice = new ICPSDK_Dispatch_Voice(); this.dispatch.video = new ICPSDK_Dispatch_Video(); this.dispatch.group = new ICPSDK_Dispatch_Group(); this.dispatch.webSocket = new ICPSDK_Dispatch_WebSocket(); this.dispatch.device = new ICPSDK_Dispatch_Device(); this.dispatch.query = new ICPSDK_Dispatch_Query(); this.dispatch.conf = new ICPSDK_Dispatch_Conf(); this.dispatch.broadcastinfo = new ICPSDK_Dispatch_BroadCastInfo(); this.userInfo = { "session": "", "isdn": "", "sdkVersion": sdkVersion }; this.dispatchSdkStatus = "-1"; cloudICP = this; // 建立一个定时器,监控是否离线 setInterval(function() { if (!navigator.onLine) { logoutCleanUp(); var event = {}; event["eventName"] = "OnDisConnection"; event["moduleType"] = "3"; cloudICP.dispatch.event.EVENT_LIST["ModuleNotify"]["OnDisConnection"](event); } }, 10 * 1000); this.dispatch.webSocket.connectToLocalDeamon(); }; /** * @param data { * "status" : "" 0//sdk初始化成功; 1: sdk连接mediaserver的守护进程失败;2: sdk连接mediaserver的业务进程失败;3: sdk获取本地ip失败 * "desc" : "" * } */ ICPSDK.prototype.reportDispatchSdkStatus = function(data) { cloudICP.util.log(mainPageId, { "logLevel": "info", "logMsg": "sdkStatusNotify: sdkstatus is " + JSON.stringify(data) }); this.dispatchSdkStatus = data["status"]; if (undefined == this.config["sdkStatusNotify"] || typeof this.config["sdkStatusNotify"] != "function") { return; } this.config["sdkStatusNotify"](data); } ICPSDK.prototype.getSdkServerUrl = function() { return "https://" + this.config["serverDomain"] + ":" + this.config["serverHttpPort"] + "/sdkserver"; } ICPSDK.prototype.getSdkServerWssUrl = function() { return "wss://" + this.config["serverDomain"] + ":" + this.config["serverWSPort"] + "/sdkserver?agentVersion=2.0&wsClientID=" + cloudICP.userInfo["loginUserName"]; } ICPSDK.prototype.getMediaServerUrl = function () { if ((undefined == cloudICP.config["ssl_enable"]) || (cloudICP.config.ssl_enable == true)) { return "wss://localhost.cloudicp.huawei.com:" + this.config["localMediaServiceWSPort"]; } else { return "ws://localhost.cloudicp.huawei.com:" + this.config["localMediaServiceWSPort"]; } } ICPSDK.prototype.getMediaDataServerUrl = function() { if ((undefined == cloudICP.config["ssl_enable"]) || (cloudICP.config.ssl_enable == true)) { return "wss://localhost.cloudicp.huawei.com:" + this.config["localMediaDataServiceWSPort"]; } else { return "ws://localhost.cloudicp.huawei.com:" + this.config["localMediaDataServiceWSPort"]; } } ICPSDK.prototype.getLocalDeamonUrl = function () { if ((undefined == cloudICP.config["ssl_enable"]) || (cloudICP.config.ssl_enable == true)) { return "wss://localhost.cloudicp.huawei.com:" + this.config["localDeamonServiceWSPort"]; } else { return "ws://localhost.cloudicp.huawei.com:" + this.config["localDeamonServiceWSPort"]; } } return ICPSDK; })); // 普通版本该函数JSSDK不做任何处理,定义该函数只是为了避免报错 function sendEvent2Page(tabPageId, func) { if (typeof func == 'function') { func(func["event"]); return true; } return false; }; // 普通版本该函数JSSDK不做任何处理,定义该函数只是为了避免报错 function sendMsg2Page(tabPageId, type, param) { return false; }; // 普通版本该函数JSSDK不做任何处理,定义该函数只是为了避免报错 // 将消息广播给每一个页面 broadcast = function(type, jsonMsg) { return false; }; /** * msp返回事件通知,UMP多窗口版本注释196610事件的创建内嵌窗口 */ ICPSDK_Dispatch_Event.prototype.delMSPNotify = function(event) { var reqId = event.reqId; if (reqId == null || reqId == undefined) {reqId = "0";} switch (event["rsp"]) { case 196612: var retEvent = { "eventName": "OnGetResolutionResult", "rsp": event["result"], "value": { "mainScreen": event["mainScreen"], "totalScreen": event["totalScreen"], "screenNum": event["screenNum"] } } this.EVENT_LIST["MSPNotify"]["OnGetResolutionResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnGetResolutionResult"]); break; case 196610: //窗口创建成功 var videoEvent = cloudICP.util.callStatusMgr.videoMediaInfoBuf[event["resID"].toString()]; if (undefined == videoEvent) { if (undefined != event["userWindowId"]) { //创建用户窗口成功 cloudICP.util.callStatusMgr.videoMediaInfoBuf[event["userWindowId"].toString()] = {}; cloudICP.util.callStatusMgr.videoMediaInfoBuf[event["userWindowId"].toString()]["value"] = {}; cloudICP.util.callStatusMgr.videoMediaInfoBuf[event["userWindowId"].toString()]["value"][ "windowHandle" ] = event["windowHandle"]; cloudICP.util.callStatusMgr.videoMediaInfoBuf[event["userWindowId"].toString()]["value"][ "windowId" ] = event["userWindowId"]; var retEvent = { "eventName": "OnCreateWindowResult", "rsp": event["result"].toString(), "value": { "userWindowId": event["userWindowId"], "windowHandle": event["windowHandle"], "width": event["width"], "height": event["height"], "posX": event["posX"], "posY": event["posY"], "showToolbar": event["showToolbar"], "buttonIDs": event["buttonIDs"], "hide": event["hide"], "enableDrag": event["enableDrag"] } } this.EVENT_LIST["MSPNotify"]["OnCreateWindowResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnCreateWindowResult"]); } return; } var value = videoEvent["value"]; //通知上层OnCallConnect事件 var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[value["cid"]]; // 处理二次视频监控时call为NULL,导致返回给二开的calltype被设置为video的问题,应设置为monitor var isRepeatMonitor = false; if (parseInt(value["cid"]) >= 2000001001 && parseInt(value["cid"]) <= 2000002000) { if (typeof value["cild"] == 'number') { value["cid"] = value["cid"].toString(); } isRepeatMonitor = true; } var newEvent = { "eventName": "", "rsp": value["rsp"], "value": { "callee": value["callee"], "caller": value["caller"], "cid": value["cid"], "fmt": value["fmt"] } } var strWssUrl = ""; var strFmtType = value["fmtType"]; if ((value["winMode"] == "wssflow") && (undefined != event["wssflowSslEnable"])) { if (event["wssflowSslEnable"] == true) { strWssUrl = "wss://localhost.cloudicp.huawei.com:" + event["wssflowPort"].toString(); newEvent["value"]["wssUrl"] = strWssUrl; } else { strWssUrl = "ws://localhost.cloudicp.huawei.com:" + event["wssflowPort"].toString(); newEvent["value"]["wssUrl"] = strWssUrl; } } var bNeedNotify = true; if ((call && call.callType == callStatusMgr.MONITOR) || isRepeatMonitor) { newEvent["value"]["calltype"] = "monitor"; if (undefined != value["userWindowId"]) { newEvent["value"]["userWindowId"] = value["userWindowId"]; } } else if (call && call.callType == callStatusMgr.VIDEOCONF) { newEvent["value"]["confId"] = call["confId"]; newEvent["value"]["isVideo"] = "true"; newEvent["eventName"] = "OnConfConnect"; this.EVENT_LIST["PhoneConfNotify"]["OnConfConnect"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfConnect"]); var ajaxCfg = { "type": "POST", "url": cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"], "data": { "opt": "sub", "reqId": reqId, "confId": call["confId"] }, "callback": function(data) { if (data["rsp"] != "0") { var retEvent = { "eventName": "OnSubscribeConfFailure", "rsp": data["rsp"], } this.EVENT_LIST["PhoneConfNotify"]["OnSubscribeConfFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnSubscribeConfFailure"]); } else { cloudICP.util.callStatusMgr.confSubMgr[call["confId"]] = true; } } } cloudICP.util.ajax(ajaxCfg); bNeedNotify = false; } else if (call && call.callType == callStatusMgr.VIDEODISPATCH) { newEvent["value"]["calltype"] = "dispatch"; newEvent["value"]["src"] = value["uri"]; newEvent["value"]["direction"] = "in"; newEvent["value"]["ptz"] = value["ptz"]; newEvent["value"]["mute"] = value["mute"]; newEvent["eventName"] = "OnCallConnect"; this.EVENT_LIST["VoiceNotify"]["OnCallConnect"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallConnect"]); bNeedNotify = false; } else { newEvent["value"]["calltype"] = "video"; } if (true == bNeedNotify) { newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = value["direction"]; newEvent["value"]["ptz"] = value["ptz"]; newEvent["value"]["mute"] = value["mute"]; newEvent["eventName"] = "OnCallConnect"; this.EVENT_LIST["VoiceNotify"]["OnCallConnect"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallConnect"]); } //完成通知 var user = cloudICP.userInfo["isdn"]; var peerUser = value["callee"]; if (user == peerUser) { peerUser = value["caller"]; } var recvOnly = false; if (videoEvent["value"]["camera"] != "-1" && videoEvent["value"]["camera"] != "0") { recvOnly = true; } var iPort = -1; var iWidth = 176; var iHeight = 144; if ((event["mode"] == "wssflow") && (event["wssflowPort"] != undefined)) { iPort = parseInt(event["wssflowPort"]); iWidth = parseInt(event["width"]); iHeight = parseInt(event["height"]); // ----/////////////////////////////////// 调用——start if (!!cloudICP.config["demo_wssflow_enable"]) { if (!window.yuvIndex) { window.yuvIndex = 1; } else { window.yuvIndex++; window.yuvIndex %= 17; window.yuvIndex = window.yuvIndex == 0 ? 1 : window.yuvIndex; } const notifyMSP = function () { console.info("调用改变分辨率接口"); }; const box = document.getElementById(`yuv-player-00${window.yuvIndex}`); console.info('box---------', box) var baseWidth = 16; var baseHeight = 9; var baseWidthHeight = parseInt(iWidth * 9 / 16); var baseHeightWidth = parseInt(iHeight * 16 / 9); if (baseWidthHeight <= iHeight) { baseWidth = iWidth; baseHeight = baseWidthHeight; } else if (baseHeightWidth <= iWidth) { baseWidth = baseHeightWidth; baseHeight = iHeight; } box.style.width = baseWidth + 'px'; box.style.height = baseHeight + 'px'; var demo = new CREATE_PLAYER_DEMO({ wsUrl: strWssUrl, port: iPort, box, sharpType: { width: iWidth, height: iHeight }, cid: value["cid"], changeCB: notifyMSP, }); cloudICP.util.callStatusMgr.addWssflowDemoMap(event["resID"], demo); } // ----///////////////////////////////////——end } if (value && value["cid"] != undefined) { var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[value["cid"]]; if (call && call.callType == callStatusMgr.VIDEOCONF) { recvOnly = false; } if (call && (call.callType == callStatusMgr.MONITOR || call.callType == callStatusMgr .VIDEODISPATCH)) { recvOnly = true; } } cloudICP.util.callStatusMgr.videoMediaInfoBuf[event["resID"].toString()]["hwnd"] = event[ "windowHandle"]; var bHide = false; if (undefined != event["hide"]) { bHide = event["hide"]; } let localArr = value["local_video"].split(","); let serverArr = value["server_video"].split(","); var videoConfLocalWindow = true; if (undefined != value["videoConfLocalWindow"]) { videoConfLocalWindow = value["videoConfLocalWindow"]; } if (value["rts_ssrc"] != undefined) { if (undefined != event["repeatsMonitor"]) { param = "{\"description\":\"msp_create_video_channel\", \"cmd\": 65557, \"param\":{\"resID\":{0}, \"winHandle\":{9}, \"mediaInfo\":{\"localIP\":\"{1}\", \"localPort\":{2}, \"remoteIP\":\"{3}\",\"remotePort\":{4}, \"playload\":{5}, \"ssrc\":{6}, \"fmt\":\"{7}\", \"recvOnly\":{8}, \"rtsSSrc\": {10}, \"user\":\"{11}\", \"peerUser\":\"{12}\", \"mode\":\"{13}\", \"port\":{14}, \"fmtType\":\"{15}\", \"width\": {16}, \"height\": {17}, \"videoConfLocalWindow\": {18}, \"videoResizeMode\": {19}, \"HDVideoMode\": {20} }}}" .format( parseInt(value["cid"]), cloudICP.config.localIP, localArr[1], serverArr[0], serverArr[ 1], parseInt(value["video"]), parseInt(value["video_ssrc"]), value["fmt"], recvOnly, parseInt(event["windowHandle"]), value["rts_ssrc"], user, peerUser, event["mode"], iPort, strFmtType, iWidth, iHeight, videoConfLocalWindow, event["videoResizeMode"], cloudICP.config["HDVideoMode"] ); } else if (undefined != event["userWindowId"]) { param = "{\"description\":\"msp_create_video_channel\", \"cmd\": 65539, \"param\":{\"resID\":{0}, \"winHandle\":{9}, \"mediaInfo\":{\"localIP\":\"{1}\", \"localPort\":{2}, \"remoteIP\":\"{3}\",\"remotePort\":{4}, \"playload\":{5}, \"ssrc\":{6}, \"fmt\":\"{7}\", \"recvOnly\":{8}, \"rtsSSrc\": {10}, \"user\":\"{11}\", \"peerUser\":\"{12}\", \"mode\":\"{13}\", \"port\":{14}, \"fmtType\":\"{15}\", \"width\": {16}, \"height\": {17}, \"videoConfLocalWindow\": {18}, \"userWindowId\":{19}, \"videoResizeMode\": {20}, \"HDVideoMode\": {21} }}}" .format( parseInt(value["cid"]), cloudICP.config.localIP, localArr[1], serverArr[0], serverArr[ 1], parseInt(value["video"]), parseInt(value["video_ssrc"]), value["fmt"], recvOnly, parseInt(event["windowHandle"]), value["rts_ssrc"], user, peerUser, event["mode"], iPort, strFmtType, iWidth, iHeight, videoConfLocalWindow, event["userWindowId"], event["videoResizeMode"], cloudICP.config["HDVideoMode"] ); } else { param = "{\"description\":\"msp_create_video_channel\", \"cmd\": 65539, \"param\":{\"resID\":{0}, \"winHandle\":{9}, \"mediaInfo\":{\"localIP\":\"{1}\", \"localPort\":{2}, \"remoteIP\":\"{3}\",\"remotePort\":{4}, \"playload\":{5}, \"ssrc\":{6}, \"fmt\":\"{7}\", \"recvOnly\":{8}, \"rtsSSrc\": {10}, \"user\":\"{11}\", \"peerUser\":\"{12}\", \"mode\":\"{13}\", \"port\":{14}, \"fmtType\":\"{15}\", \"width\": {16}, \"height\": {17}, \"videoConfLocalWindow\": {18}, \"videoResizeMode\": {19}, \"HDVideoMode\": {20} }}}" .format( parseInt(value["cid"]), cloudICP.config.localIP, localArr[1], serverArr[0], serverArr[ 1], parseInt(value["video"]), parseInt(value["video_ssrc"]), value["fmt"], recvOnly, parseInt(event["windowHandle"]), value["rts_ssrc"], user, peerUser, event["mode"], iPort, strFmtType, iWidth, iHeight, videoConfLocalWindow, event["videoResizeMode"], cloudICP.config["HDVideoMode"] ); } } else { if (undefined != event["repeatsMonitor"]) { param = "{\"description\":\"msp_create_video_channel\", \"cmd\": 65557, \"param\":{\"resID\":{0}, \"winHandle\":{9}, \"mediaInfo\":{\"localIP\":\"{1}\", \"localPort\":{2}, \"remoteIP\":\"{3}\",\"remotePort\":{4}, \"playload\":{5}, \"ssrc\":{6}, \"fmt\":\"{7}\", \"recvOnly\":{8}, \"user\":\"{10}\", \"peerUser\":\"{11}\", \"mode\":\"{12}\", \"port\":{13}, \"fmtType\":\"{14}\", \"width\": {15}, \"height\": {16}, \"videoConfLocalWindow\": {17}, \"videoResizeMode\": {18}, \"HDVideoMode\": {19} }}}" .format( parseInt(value["cid"]), cloudICP.config.localIP, localArr[1], serverArr[0], serverArr[ 1], parseInt(value["video"]), parseInt(value["video_ssrc"]), value["fmt"], recvOnly, parseInt(event["windowHandle"]), user, peerUser, event["mode"], iPort, strFmtType, iWidth, iHeight, videoConfLocalWindow, event["videoResizeMode"], cloudICP.config["HDVideoMode"] ); } else if (undefined != event["userWindowId"]) { param = "{\"description\":\"msp_create_video_channel\", \"cmd\": 65539, \"param\":{\"resID\":{0}, \"winHandle\":{9}, \"mediaInfo\":{\"localIP\":\"{1}\", \"localPort\":{2}, \"remoteIP\":\"{3}\",\"remotePort\":{4}, \"playload\":{5}, \"ssrc\":{6}, \"fmt\":\"{7}\", \"recvOnly\":{8}, \"user\":\"{10}\", \"peerUser\":\"{11}\", \"mode\":\"{12}\", \"port\":{13}, \"fmtType\":\"{14}\", \"width\": {15}, \"height\": {16}, \"videoConfLocalWindow\": {17}, \"userWindowId\":{18}, \"videoResizeMode\": {19}, \"HDVideoMode\": {20} }}}" .format( parseInt(value["cid"]), cloudICP.config.localIP, localArr[1], serverArr[0], serverArr[ 1], parseInt(value["video"]), parseInt(value["video_ssrc"]), value["fmt"], recvOnly, parseInt(event["windowHandle"]), user, peerUser, event["mode"], iPort, strFmtType, iWidth, iHeight, videoConfLocalWindow, event["userWindowId"], event["videoResizeMode"], cloudICP.config["HDVideoMode"] ); } else { param = "{\"description\":\"msp_create_video_channel\", \"cmd\": 65539, \"param\":{\"resID\":{0}, \"winHandle\":{9}, \"mediaInfo\":{\"localIP\":\"{1}\", \"localPort\":{2}, \"remoteIP\":\"{3}\",\"remotePort\":{4}, \"playload\":{5}, \"ssrc\":{6}, \"fmt\":\"{7}\", \"recvOnly\":{8}, \"user\":\"{10}\", \"peerUser\":\"{11}\", \"mode\":\"{12}\", \"port\":{13}, \"fmtType\":\"{14}\", \"width\": {15}, \"height\": {16}, \"videoConfLocalWindow\": {17}, \"videoResizeMode\": {18}, \"HDVideoMode\": {19} }}}" .format( parseInt(value["cid"]), cloudICP.config.localIP, localArr[1], serverArr[0], serverArr[ 1], parseInt(value["video"]), parseInt(value["video_ssrc"]), value["fmt"], recvOnly, parseInt(event["windowHandle"]), user, peerUser, event["mode"], iPort, strFmtType, iWidth, iHeight, videoConfLocalWindow, event["videoResizeMode"], cloudICP.config["HDVideoMode"] ); } } cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); cloudICP.util.callStatusMgr.videoMediaInfoBuf[event["resID"].toString()]["isCreateWindowComplete"] = true; break; case 196618: if (undefined != event["userWindowId"]) { var meidaSDKparam = "{\"description\":\"msp_stop_use_userWindow\", \"cmd\": 196618, \"param\":{\"userWindowId\":{0}}}" .format( parseInt(event["userWindowId"]) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); if ("-1" == event["userWindowId"].toString()) { //清除全部媒体面时触发 Object.keys(cloudICP.util.callStatusMgr.windowInfos).forEach(function(key) { if (cloudICP.util.callStatusMgr.windowInfos[key]["userWindowId"] != undefined) { delete cloudICP.util.callStatusMgr.windowInfos[key]; } }); } } break; case 131077: var retEvent = { "eventName": "OnGetSoundDeviceResult", "rsp": "0", "value": { "speaker": event["output"], "mic": event["input"] } } this.EVENT_LIST["MSPNotify"]["OnGetSoundDeviceResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnGetSoundDeviceResult"]); break; case 131082: var retEvent = { "eventName": "OnSetRingVolumeResult", "rsp": "0", "value": { "volume": event["newVolume"], } } this.EVENT_LIST["MSPNotify"]["OnSetRingVolumeResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnSetRingVolumeResult"]); break; case 65556: var retEvent = { "eventName": "OnVideoStreamSPSEvent", "value": { "width": event["width"].toString(), "height": event["height"].toString(), "video": event["video"].toString() } } this.EVENT_LIST["MSPNotify"]["OnVideoStreamSPSEvent"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnVideoStreamSPSEvent"]); break; case 65555: var retEvent = { "eventName": "PSTNBroadcastOnceSendOverNotify", "value": { "cid": event["cid"].toString() } } this.EVENT_LIST["VoiceNotify"]["PSTNBroadcastOnceSendOverNotify"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["PSTNBroadcastOnceSendOverNotify"]); break; case 65554: var retEvent = { "eventName": "stop_LocalRecord", "rsp": event["result"], "value": { "cid": event["cid"].toString() } } this.EVENT_LIST["MSPNotify"]["OnStopLocalRecordEvent"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnStopLocalRecordEvent"]); break; case 65553: var retEvent = { "eventName": "start_LocalRecord", "rsp": event["result"], "value": { "cid": event["cid"].toString() } } this.EVENT_LIST["MSPNotify"]["OnStartLocalRecordEvent"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnStartLocalRecordEvent"]); break; case 65544: var retEvent = { "eventName": "OnGetVolumeResult", "rsp": event["result"] == 0 ? "0" : "-1", "value": { "VolumeDesc": event["AudioVolume"], "cid": event["resID"].toString() } } this.EVENT_LIST["MSPNotify"]["OnGetVolumeResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnGetVolumeResult"]); break; case 65545: var retEvent = { "eventName": "OnSetVolumeResult", "rsp": event["result"] == 0 ? "0" : "-1", "value": { "cid": event["resID"].toString(), "Volume": event["newVolume"].toString(), } } if(event["result"] == 0){ cloudICP.grpVolumeList[event["peerID"]] = event["newVolume"].toString(); } this.EVENT_LIST["MSPNotify"]["OnSetVolumeResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnSetVolumeResult"]); break; case 65543: if (event["quiet"] && event["quiet"] == true) { var retEvent = { "eventName": "OnMuteSpeakerResult", "rsp": event["result"] == 0 ? "0" : "-1", "value": { "cid": event["resID"].toString() } } this.EVENT_LIST["MSPNotify"]["OnMuteSpeakerResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnMuteSpeakerResult"]); } else { var retEvent = { "eventName": "OnUnmuteSpeakerResult", "rsp": event["result"] == 0 ? "0" : "-1", "value": { "cid": event["resID"].toString() } } this.EVENT_LIST["MSPNotify"]["OnUnmuteSpeakerResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnUnmuteSpeakerResult"]); } break; case 65546: var retEvent = { "eventName": "OnAssignSoundDeviceResult", "rsp": event["result"] == 0 ? "0" : "-1", "value": { "outputDev": event["mediaInfo"]["outputDev"], "inputDev": event["mediaInfo"]["inputDev"] } } this.EVENT_LIST["MSPNotify"]["OnAssignSoundDeviceResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnAssignSoundDeviceResult"]); break; case 65547: var retEvent = { "eventName": "OnQuerySoundDeviceResult", "rsp": event["result"] == 0 ? "0" : "-1", "value": { "devices": event["assignList"] } } this.EVENT_LIST["MSPNotify"]["OnQuerySoundDeviceResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnQuerySoundDeviceResult"]); break; case 65542: if (event["mute"] != undefined && event["mute"] == false) { var retEvent = { "eventName": "OnUnmuteMicResult", "rsp": event["result"] == 0 ? "0" : "-1", "value": { "cid": event["resID"].toString() } } this.EVENT_LIST["MSPNotify"]["OnUnmuteMicResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnUnmuteMicResult"]); } else { var retEvent = { "eventName": "OnMuteMicResult", "rsp": event["result"] == 0 ? "0" : "-1", "value": { "cid": event["resID"].toString() } } this.EVENT_LIST["MSPNotify"]["OnMuteMicResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnMuteMicResult"]); } break; case 65548: cloudICP.dispatch.device.isDTMFDone = true; var retEvent = { "eventName": "OnSendToDTMFResult", "rsp": event["result"] == 0 ? "0" : "-1", "value": { "cid": event["resID"].toString(), "function": event["functionCode"].toString() } } this.EVENT_LIST["MSPNotify"]["OnSendToDTMFResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnSendToDTMFResult"]); break; case 16384: //0x4000 if (event["resID"] == undefined) return; //不检查组呼 //其它 var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[event["resID"]]; if (call) { if (call.callType == callStatusMgr.VOICE || call.callType == callStatusMgr.VIDEO || call.callType == callStatusMgr.HALFVOICE || call.callType == callStatusMgr.DISCREET || call.callType == callStatusMgr.MONITOR || call.callType == callStatusMgr.AMBIENCE) { var retEvent = { "eventName": "OnCallException", "rsp": "20000", "value": { "callee": call["callee"], "caller": call["caller"], "cid": event["resID"].toString(), "calltype": callStatusMgr.callTypeStr[call.callType] } } this.EVENT_LIST["VoiceNotify"]["OnCallException"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallException"]); } if (call.callType == callStatusMgr.VOICECONF || call.callType == callStatusMgr.VIDEOCONF) { var retEvent = { "eventName": "OnConfException", "rsp": "20000", "value": { "cid": event["resID"].toString(), "confId": call["confId"] } } this.EVENT_LIST["PhoneConfNotify"]["OnConfException"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfException"]); } } break; case 20480: //收到点击窗口关闭按键事件 var mediaParam = cloudICP.util.callStatusMgr.mediaModeMap.get(parseInt(event["cid"])) if (undefined != mediaParam) { var meidaSDKparam = "{\"description\":\"setMediaMode\", \"cmd\": 65561, \"param\":{\"cid\":{0}, \"type\":{1}, \"switch\":0}}".format( parseInt(event["cid"]), parseInt(mediaParam["type"]) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); } var resID; Object.keys(cloudICP.util.callStatusMgr.videoMediaInfoBuf).forEach(function(key) { if (undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"][ "repeatsMonitor" ] && cloudICP.util.callStatusMgr.videoMediaInfoBuf[key].hwnd == event["windowHandle"]) { resID = key; } }); if (undefined != resID) { //如果释放的是重复视频监控的业务 不支持用户窗口 if (cloudICP.util.callStatusMgr.videoMediaInfoBuf[resID]["value"]["repeatsMonitor"] == true) { // 删除视频媒体通道 var cid = cloudICP.util.callStatusMgr.videoMediaInfoBuf[resID]["value"]["cid"]; var createReleaseTag = false; var createId; // 20480是JSSDK登陆时MSP返回的事件,因为是MSP主动推送的,reqId为undefined,此处设置为0 if (reqId == undefined || typeof reqId == 'undefined') { reqId = 0; } param = "{\"description\":\"msp_delete_video_channel\", \"cmd\": 65540, \"param\":{\"resID\":{0}}, \"reqId\": \"{1}\"}" .format( parseInt(resID), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); //通知上层OnCallRelease消息 var newEvent = { "eventName": "", "rsp": "3009", "value": {} } newEvent["value"]["caller"] = cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]["value"]["caller"]; newEvent["value"]["callee"] = cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]["value"]["callee"]; newEvent["value"]["cid"] = cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]["value"]["cid"]; newEvent["value"]["fmt"] = cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]["value"]["fmt"]; newEvent["value"]["calltype"] = "monitor"; newEvent["value"]["releasetype"] = "other"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "out"; newEvent["eventName"] = "OnCallRelease"; cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(reqId, cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); cloudICP.util.callStatusMgr.delMediaModeInfo(newEvent["value"]); var videoMediaWorkingInfo = cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]; if (undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]["value"]["createId"]) { createId = cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]["value"]["createId"]; } createReleaseTag = cloudICP.util.getCopyMonitorReleaseTag(newEvent["value"]["caller"], newEvent["value"]["callee"]); if (undefined != videoMediaWorkingInfo) { // 该视频窗口有业务正在使用 delete cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]; } if (createReleaseTag && undefined != createId) { cloudICP.util.log(undefined, { "logLevel": "info", "logMsg": "createId : " + createId + " createReleaseTag: " + createReleaseTag }); var requestParam = { "cid": String(createId), "callback": function(data) {;} }; cloudICP.dispatch.video.release(requestParam); } } return; } Object.keys(cloudICP.util.callStatusMgr.videoMediaInfoBuf).forEach(function(key) { if (cloudICP.util.callStatusMgr.videoMediaInfoBuf[key].hwnd == event["windowHandle"]) { resID = key; } }); if (resID == undefined) { if (undefined != event["userWindowId"] && undefined != event["isNeedDestroyWindow"] && true == event["isNeedDestroyWindow"]) { // 20480是JSSDK登陆时MSP返回的事件,因为是MSP主动推送的,reqId为undefined,此处设置为0 if (reqId == undefined || typeof 'undefined') { reqId = 0; } var meidaSDKparam = "{\"description\":\"msp_delete_close_userWindow\", \"cmd\": 196613, \"param\":{\"userWindowId\":{0}}, \"reqId\": \"{1}\"}" .format( parseInt(event["userWindowId"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); if ("-1" == event["userWindowId"].toString()) { //去除用户窗被业务使用,但未创建媒体面的标记 Object.keys(cloudICP.util.callStatusMgr.windowInfos).forEach(function(key) { if (cloudICP.util.callStatusMgr.windowInfos[key]["userWindowId"] != undefined) { delete cloudICP.util.callStatusMgr.windowInfos[key]; } }); } } return; } var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[resID]; if (call) { var param = { cid: resID, tabPageId: reqId, callback: function(data) { setTimeout(function() { cloudICP.util.sendLogOut({"logLevelNum" : 1, "logMsg" : "close [" + resID + "] window rsp: " + JSON.stringify(data)}); }, 0); } } if (call.callType == callStatusMgr.VIDEO || call.callType == callStatusMgr.MONITOR || call .callType == callStatusMgr.VIDEODISPATCH) { cloudICP.dispatch.video.release(param); return; } if (call.callType == callStatusMgr.VIDEOCONF) { var confInfo = cloudICP.util.callStatusMgr.confMgr[cloudICP.util.callStatusMgr .currentGoingConf]; if (confInfo != undefined) { if (cloudICP.userInfo["isdn"] == confInfo["value"]["confStatus"]["chair"]) { param.confId = cloudICP.util.callStatusMgr.currentGoingConf; cloudICP.dispatch.conf.endConf(param); return; } } cloudICP.dispatch.conf.exitVideoConf(param); } } break; case 20481: delete cloudICP.util.callStatusMgr.videoMediaInfoBuf[event["userWindowId"].toString()]; var retEvent = { "eventName": "OnDestroyWindowResult", "rsp": event["result"].toString(), "value": { "windowHandle": event["windowHandle"] } } this.EVENT_LIST["MSPNotify"]["OnDestroyWindowResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnDestroyWindowResult"]); break; case 196614: var retEvent = { "eventName": "OnWindowOnTopResult", "rsp": event["result"], "value": { "cid": event["cid"], "isOnTop": event["isOnTop"] } } this.EVENT_LIST["MSPNotify"]["OnWindowOnTopResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnWindowOnTopResult"]); break; case 131084: var retEvent = { "eventName": "OnUpgradeMspVersionResult", "rsp": event["result"], "value": event["deamonResultParams"] } this.EVENT_LIST["MSPNotify"]["OnUpgradeMspVersionResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnUpgradeMspVersionResult"]); break; case 196615: var retEvent = { "eventName": "OnWindowDragEnableResult", "rsp": event["result"], "value": { "cid": event["cid"], "isDrag": event["isDrag"] } } this.EVENT_LIST["MSPNotify"]["OnWindowDragEnableResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnWindowDragEnableResult"]); break; case 196616: var retEvent = { "eventName": "OnHideVideoWindowResult", "rsp": event["result"], "value": { "cid": event["cid"] } } this.EVENT_LIST["MSPNotify"]["OnHideVideoWindowResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnHideVideoWindowResult"]); break; case 196617: var retEvent = { "eventName": "OnWindowShowBorderResult", "rsp": event["result"], "value": { "resID": event["resID"], "border": event["border"] } } this.EVENT_LIST["MSPNotify"]["OnWindowShowBorderResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnWindowShowBorderResult"]); break; case 258049: var retEvent = { "eventName": "OnWindowOperateNotify", "rsp": event["result"], "value": { "cid": event["param"]["cid"], "eventID": event["param"]["eventID"] } } this.EVENT_LIST["MSPNotify"]["OnWindowOperateNotify"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnWindowOperateNotify"]); break; case 258050: var retEvent = { "eventName": "OnDownloadProgressEvent", "rsp": event["result"], "value": event["param"] } this.EVENT_LIST["MSPNotify"]["OnDownloadProgressEvent"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnDownloadProgressEvent"]); break; case 258051: var retEvent = { "eventName": "OnDownloadProgressEvent", "rsp": event["result"], "value": event["param"] } this.EVENT_LIST["MSPNotify"]["OnDownloadProgressEvent"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnDownloadProgressEvent"]); var retEvent = { "eventName": "OnInstallMspEvent", "status": "begin" } cloudICP.config["installMspStatus"] = "begin"; this.EVENT_LIST["MSPNotify"]["OnInstallMspEvent"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnInstallMspEvent"]); break; case 65559: var infostr; if (event["result"] == 0) infostr = "Success"; else if (event["result"] == 6) infostr = "Can not find windowName"; else if (event["result"] == 3) infostr = "Can't find cid"; else if (event["result"] == 1) infostr = "Failed,local camera not detected"; else if (event["result"] == 4) infostr = "Failed,windowName is not visible"; var retEvent = { "eventName": "OnStartWindowShare", "rsp": event["result"].toString(), "value": { "cid": event["cid"].toString(), "info": infostr } } this.EVENT_LIST["MSPNotify"]["OnStartWindowShare"](retEvent); break; case 65561: if (event["result"] == 0) { if (event["switch"] == 1) { cloudICP.util.callStatusMgr.addMediaModeInfo(event); } else { cloudICP.util.callStatusMgr.delMediaModeInfo(event); } } var retEvent = { "eventName": "OnSetMediaModeResult", "rsp": event["result"] == 0 ? "0" : "-1" } this.EVENT_LIST["MSPNotify"]["OnSetMediaModeResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnSetMediaModeResult"]); break; case 655611: var retEvent = { "eventName": "OnMediaNotifyEvent", "rsp": event["result"] == 0 ? "0" : "-1", "value": { "cid": event["cid"], "format": event["format"], "data": event["data"] } } this.EVENT_LIST["MSPNotify"]["onMediaNotify"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["onMediaNotify"]); break; default: break; } }; /** * @param { * eventType: * eventName: * callback: * } */ ICPSDK_Dispatch_Event.prototype.register = function(param) { var eventType = param["eventType"]; var eventName = param["eventName"]; var callback = param["callback"]; if (!eventType) { cloudICP.util.log(0, { "logLevel": "error", "logMsg": "register: register failed. Because eventType is invalid." }); return; } if (!eventName) { cloudICP.util.log(0, { "logLevel": "error", "logMsg": "register: register failed. Because eventName is invalid." }); return; } if (typeof callback != "function") { cloudICP.util.log(0, { "logLevel": "error", "logMsg": "register: register failed. Because callback is not a function." }); return; } var eventTypeObject = this.EVENT_LIST[eventType]; if (undefined == eventTypeObject) { cloudICP.util.log(0, { "logLevel": "error", "logMsg": "register: register failed. Because eventType is invalid." }); return; } var eventObject = eventTypeObject[eventName]; if (undefined == eventObject) { cloudICP.util.log(0, { "logLevel": "error", "logMsg": "register: register failed. Because eventName is invalid." }); return; } this.EVENT_LIST[eventType][eventName] = function(data) { cloudICP.util.sendLogOut({"logLevelNum" : 1, "logMsg" : "ICPSDK event: " + JSON.stringify(data)}); callback(data); } }; ICPSDK_Dispatch_Event.prototype.printEvent = function (data) { cloudICP.util.sendLogOut({"logLevelNum" : 1, "logMsg" : "ICPSDK event: " + JSON.stringify(data)}); }; /** * @param cfg { * "type" : "POST|PUT|DELETE|GET" * "url" : * "async" : * "timeout" : * "contentType" : * "data" : //post和put请求时设置 * "callback" : * } */ ICPSDK_Util.prototype.ajax = function (cfg) { var settings = {}; settings.type = cfg.type; settings.timeout = parseInt(cloudICP.config["sdkServerHttpTimeout"]); settings.async = cfg.async != false; var methodName = null; var moduleName = null; var user = ""; if (cfg.data) { settings.data = JSON.stringify(cfg.data); user = cfg.data["loginUser"]; // 打印接口发送日志 var tmpStr; try { throw new Error(); } catch (n) { tmpStr = n.stack.split("\n"); } for (var index = 0; index < tmpStr.length; index++) { if (tmpStr[index].indexOf("ICPSDK_Dispatch") != -1) { methodName = tmpStr[index].split(/\W/)[6]; moduleName = tmpStr[index].split(/\W/)[5]; if (moduleName != "ICPSDK_Dispatch_Event") { cloudICP.util.sendLogOut({"logLevelNum" : 1, "logMsg" : "ICPSDK request: " + "[interface: " + methodName + ", param: " + settings.data + " ]"}); } break; } } } settings.contentType = cfg.contentType || "application/json"; if (typeof cfg.callback === "function") { settings.success = function (data) { var jsonObject = JSON.parse(data); if (undefined != jsonObject["cmd"]) { delete jsonObject.cmd; } if (undefined == jsonObject["desc"]) { jsonObject["desc"] = ""; } if (undefined != jsonObject["list"] && jsonObject["list"] != null) { for (var index = 0; index < jsonObject["list"].length; index++) { if (undefined != jsonObject["list"][index]["vpnid"]) { delete jsonObject["list"][index]["vpnid"]; } if (undefined != jsonObject["list"][index]["vpnin"]) { delete jsonObject["list"][index]["vpnin"]; } if (undefined != jsonObject["list"][index]["vpnout"]) { delete jsonObject["list"][index]["vpnout"]; } } } if (undefined != jsonObject["value"] && jsonObject["value"] != null) { if (undefined != jsonObject["value"]["vpnid"]) { delete jsonObject["value"]["vpnid"]; } if (undefined != jsonObject["value"]["vpnin"]) { delete jsonObject["value"]["vpnin"]; } if (undefined != jsonObject["value"]["vpnout"]) { delete jsonObject["value"]["vpnout"]; } } if (moduleName != null && moduleName != "ICPSDK_Dispatch_Event") { cloudICP.util.sendLogOut({"logLevelNum" : 1, "logMsg" : "ICPSDK request: " + "[interface: " + methodName + ", response: " + JSON.stringify(jsonObject) + " ]"}); } cfg.callback(jsonObject); } settings.error = function (data) { var result = { "rsp": "-1", "desc": "unkown exception when send request. See the brower's console." }; cfg.callback(result); cloudICP.util.log(undefined, { "logLevel": "error", "logMsg": "unkown exception when send request. See the brower's console." + JSON.stringify(data) }); } } else { settings.error = function (data) { cloudICP.util.log(undefined, { "logLevel": "error", "logMsg": "unkown exception when send request. See the brower's console." }); } } settings.beforeSend = function (XMLHttpRequest) { var session = cloudICP.userInfo["session"]; if (session) { XMLHttpRequest.setRequestHeader("session", session); } if(user){ XMLHttpRequest.setRequestHeader("WS-CLIENT-ID", user); } else { XMLHttpRequest.setRequestHeader("WS-CLIENT-ID", cloudICP.userInfo["loginUserName"]); } }; settings.cache = false; $.ajax(cfg["url"], settings); } ICPSDK_Dispatch_WebSocket.prototype.getModifyMdcip = function (data) { if (0 == data["mdc_result"]) { cloudICP.config["mdcip"] = data["mdcip"]; cloudICP.reportDispatchSdkStatus({ "status": "0", "desc": "modify mdcip success !" }); } else { cloudICP.reportDispatchSdkStatus({ "status": "3", "desc": "modify mdcip failure !" }); } this.getLocalIp({ callback: this.getLocalIpCallBack }); } function ICPSDK_Dispatch_Auth() { this.USER_SEND_HEART_INTERVAL = 30000; //心跳间隔时间30s this.VDM_SESSION_TOKEN_INTERVAL = 600000; //心跳间隔时间60s this.MAX_PASSWORD_LENGTH = 18; //最大密码长度 this.errorHeartNumber = 0; //异常心跳次数 this.USER_SEND_HEART_MAX_TRY = 3; //最大尝试次数 this.sendHeartbeatTimeOutId = ""; this.vdmtokenRefresh = ""; this.sdkserverVersion = ""; }; /** * unifiedLogin() unified Login * @param {Object} param { * user: , * password: , * force: , * callback: , * } */ ICPSDK_Dispatch_Auth.prototype.unifiedLogin = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "unifiedLogin: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "unifiedLogin: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (cloudICP.dispatchSdkStatus == "-1") { result["rsp"] = "-3"; result["desc"] = "unifiedLogin: sdk is doing init. please wait"; param["callback"](result); return; } if (undefined == cloudICP.config["localIP"] || "" == cloudICP.config["localIP"]) { result["rsp"] = "-4"; result["desc"] = "unifiedLogin: sdk init failed. so cannot get localIP."; param["callback"](result); return; } if (undefined == cloudICP.config["cameraInfo"]) { result["rsp"] = "-5"; result["desc"] = "unifiedLogin: sdk init failed. so cannot get cameraInfo."; param["callback"](result); return; } var loginParam = {}; var result = { "rsp": "-2", "desc": "" }; if (!cloudICP.util.checkUserName(param["user"])) { result["desc"] = "unifiedLogin: user is invalid"; param["callback"](result); return; } if (!(param["password"] && param["password"].length >= 1 && param["password"].length <= this .MAX_PASSWORD_LENGTH)) { result["desc"] = "unifiedLogin: password is invalid"; param["callback"](result); return; } loginParam["password"] = param["password"]; loginParam["localip"] = cloudICP.config["localIP"]; if (undefined != param["logintype"]) { loginParam["logintype"] = param["logintype"]; } if (param["force"] && param["force"] == "true") { loginParam["force"] = param["force"]; } loginParam["ringFlag"] = cloudICP.config["ringFlag"]; if (undefined != cloudICP.config["udcIP"] && undefined != cloudICP.config["udcPort"]) { loginParam["serverip"] = cloudICP.config["udcIP"]; loginParam["serverport"] = cloudICP.config["udcPort"]; } else { loginParam["serverip"] = ""; loginParam["serverport"] = ""; } param["user"] = encodeURIComponent(param["user"]); loginParam["reqId"] = tabPageId; loginParam["loginUser"] = param["user"]; var url = cloudICP.getSdkServerUrl() + "/v1/register/" + param["user"] + "/unifilogin"; // 在登录成功后,自动注册websocket的事件通知,故要对login的callbacl进行封装 var ajaxCfg = { "type": "PUT", "url": url, "async": false, "data": loginParam, "callback": function(data) { if (data["rsp"] == "4011") { logoutCleanUp(); data["rsp"] = "0"; // login success, 保存session并删除,防止暴露给用户 cloudICP.userInfo["session"] = data["session"]; if (undefined != data["session"]) { delete data.session; } var urlArray = url.split("/"); // cloudICP.userInfo["isdn"] = param["isdn"]; cloudICP.userInfo["isdn"] = data["isdn"] cloudICP.userInfo["loginUserName"] = param["user"]; // delete data["isdn"] cloudICP.userInfo["isUnified"] = true; cloudICP.userInfo["serverVersion"] = data["version"] //登录成功, 启动心跳 clearTimeout(cloudICP.dispatch.auth.sendHeartbeatTimeOutId); cloudICP.dispatch.auth.errorHeartNumber = 0; cloudICP.dispatch.auth.sendHeartbeatTimeOutId = setTimeout(function() { sendHeartbeat(); }, cloudICP.dispatch.auth.USER_SEND_HEART_INTERVAL); //连接websocket cloudICP.dispatch.webSocket.connectToSDKServer(); clearInterval(cloudICP.dispatch.auth.vdmtokenRefresh); cloudICP.dispatch.auth.vdmtokenRefresh = setInterval(function() { var murl = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo[ "isdn"] + "/vmdsession"; var majaxCfg = { "type": "GET", "url": murl, "data": null, "callback": function(mdata) {} } cloudICP.util.ajax(majaxCfg); }, cloudICP.dispatch.auth.VDM_SESSION_TOKEN_INTERVAL); } else if (data["rsp"] == "104") { cloudICP.userInfo["session"] = data["session"]; } var checkSDKServerWebSocketIsConnectedFunc = function(callback, data) { var count = 4; var loginWaitTime = setInterval(function() { if (cloudICP.loginFlag) { cloudICP.util.log(tabPageId, { "logLevel": "info", "logMsg": 'SDKServer WebSocket is Connected return.' }); clearInterval(loginWaitTime); //清理无效视频相关业务的缓存 var iResult; Object.keys(cloudICP.util.callStatusMgr.windowInfos).forEach(function( keyWindowInfos) { iResult = false; if (undefined == cloudICP.util.callStatusMgr.windowInfos[ keyWindowInfos]["cid"]) { //没有cid delete cloudICP.util.callStatusMgr.windowInfos[ keyWindowInfos]; } else { if ("" == JSON.stringify(cloudICP.util.callStatusMgr .videoMediaInfoBuf) || "{}" == JSON.stringify( cloudICP.util.callStatusMgr.videoMediaInfoBuf )) { iResult = true; } else { Object.keys(cloudICP.util.callStatusMgr .videoMediaInfoBuf).forEach(function(key) { if (key == cloudICP.util.callStatusMgr .windowInfos[keyWindowInfos]["cid"] ) { iResult = true; return; } }); } } if (true == iResult) { //业务还没有成功 delete cloudICP.util.callStatusMgr.windowInfos[ keyWindowInfos]; } }); callback(data); return; } else { count--; cloudICP.util.log(tabPageId, { "logLevel": "info", "logMsg": "SDKServer WebSocket is not Connected, count=" + count.toString() }); if (count <= 0) { clearInterval(loginWaitTime); callback(data); return; } } }, 1000); }; checkSDKServerWebSocketIsConnectedFunc(param["callback"], data); } } cloudICP.util.ajax(ajaxCfg); } /** * unifiedLogout() unified logout * @param {Object} param { * callback: , * } */ ICPSDK_Dispatch_Auth.prototype.unifiedLogout = function(param) { cloudICP.util.LogInputParam(param); cloudICP.util.callStatusMgr.cleanWssflowDemoMap(); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "unifiedLogout: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "unifiedLogout: callback is not a function" }); return; } var loginParam = {}; var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "unifiedLogout: User not logged."; param["callback"](result); return; } if (cloudICP.userInfo["isUnified"] && !cloudICP.userInfo["isUnified"]) { result["desc"] = "logoutFromMDC: User not logged by unifiedLogin."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/register/" + cloudICP.userInfo["isdn"] + "/unifilogout"; var logoutParam = {}; logoutParam["reqId"] = tabPageId; var ajaxCfg = { "type": "DELETE", "url": url, "async": false, "data": logoutParam, "callback": function(data) { //如果登出成功,清理用户信息 delete data["user"] delete data["ipccserveripport"] if (data["rsp"] == "4012" || data["rsp"] == "4017") { data["rsp"] = "0"; logoutCleanUp(); } param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * unifiPasswordChange() change password of user * @param {Object} param { * user: , * newPassword: , * oldPassword: , * callback: , * } */ ICPSDK_Dispatch_Auth.prototype.unifiPasswordChange = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "unifiPasswordChange: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "unifiPasswordChange: callback is not a function" }); return; } var unifiPasswordChangeParam = {}; var result = { "rsp": "-2", "desc": "" }; if (!cloudICP.util.checkUserName(param["user"])) { result["desc"] = "unifiPasswordChange: user is invalid."; param["callback"](result); return; } if (!(param["newPassword"] && param["newPassword"].length >= 1 && param["newPassword"].length <= this .MAX_PASSWORD_LENGTH)) { result["desc"] = "unifiPasswordChange: newPassword is invalid"; param["callback"](result); return; } if (!(param["oldPassword"] && param["oldPassword"].length >= 1 && param["oldPassword"].length <= this .MAX_PASSWORD_LENGTH)) { result["desc"] = "unifiPasswordChange: oldPassword is invalid"; param["callback"](result); return; } unifiPasswordChangeParam["newPassword"] = param["newPassword"]; unifiPasswordChangeParam["oldPassword"] = param["oldPassword"]; unifiPasswordChangeParam["reqId"] = tabPageId; var url = cloudICP.getSdkServerUrl() + "/v1/register/" + param["user"] + "/unifipassword"; var ajaxCfg = { "type": "POST", "url": url, "async": false, "data": unifiPasswordChangeParam, "callback": function(data) { delete data["externs"]; delete data["isdn"]; delete data["method"]; delete data["user"]; param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } ICPSDK_Dispatch_Auth.prototype.GetLoginStatus = function (param) { cloudICP.util.LogInputParam(param); var result = { "rsp": "0", "loginStatus":"1", "session":"" }; if (param["value"] != undefined) { param = param.value; } result["loginStatus"] = Boolean(cloudICP.userInfo["isUnified"])?"0":"1"; if (undefined != cloudICP.userInfo["session"]){ result["session"] = cloudICP.userInfo["session"]; } param["callback"](result); } /** * 发送心跳 */ function sendHeartbeat() { if (!cloudICP.userInfo["isdn"]) { cloudICP.util.log(0, { "logLevel": "error", "logMsg": "sendHeartbeat: User not logged." }); return; } var url = cloudICP.getSdkServerUrl() + "/v1/heartbeat/" + cloudICP.userInfo["isdn"]; var ajaxCfg = { "type": "POST", "url": url, "callback": function(data) { if (data["rsp"] == "0") { cloudICP.dispatch.auth.errorHeartNumber = 0; } else if (data["rsp"] == "10000") { //鉴权失败 cloudICP.userInfo["isdn"] = ""; cloudICP.userInfo["session"] = ""; cloudICP.util.log(0, { "logLevel": "error", "logMsg": "sendHeartbeat: send failed. the data is " + JSON.stringify(data) }); logoutCleanUp(); var event = {}; event["eventName"] = "OnDisConnection"; event["moduleType"] = "5"; cloudICP.dispatch.event.EVENT_LIST["ModuleNotify"]["OnDisConnection"].event = event; sendEvent2Page(0, cloudICP.dispatch.event.EVENT_LIST["ModuleNotify"]["OnDisConnection"]); return; } else { cloudICP.dispatch.auth.errorHeartNumber++; cloudICP.util.log(0, { "logLevel": "error", "logMsg": "sendHeartbeat: send failed. the data is " + JSON.stringify(data) }); } if (cloudICP.dispatch.auth.errorHeartNumber > cloudICP.dispatch.auth.USER_SEND_HEART_MAX_TRY) { logoutCleanUp(); var event = {}; event["eventName"] = "OnDisConnection"; event["moduleType"] = "5"; cloudICP.dispatch.event.EVENT_LIST["ModuleNotify"]["OnDisConnection"].event = event; sendEvent2Page(0, cloudICP.dispatch.event.EVENT_LIST["ModuleNotify"]["OnDisConnection"]); return; } cloudICP.dispatch.auth.sendHeartbeatTimeOutId = setTimeout(function() { sendHeartbeat(); }, cloudICP.dispatch.auth.USER_SEND_HEART_INTERVAL); } } cloudICP.util.ajax(ajaxCfg); }; function logoutCleanUp() { delete cloudICP.userInfo["isdn"]; cloudICP.userInfo["session"] = ""; delete cloudICP.userInfo["isUnified"]; clearTimeout(cloudICP.dispatch.auth.sendHeartbeatTimeOutId); clearInterval(cloudICP.dispatch.auth.vdmtokenRefresh); var callStatusMgr = cloudICP.util.callStatusMgr; if (cloudICP.dispatch.webSocket.isMSPConflicted != true) { // 停止振铃音 var param = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}}".format( parseInt(callStatusMgr.callingCid) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); // 删除所有振铃 var param = "{\"description\":\"msp_clean_tone\", \"cmd\": 131076}"; cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); // 删除所有通道 var param = "{\"description\":\"msp_clean_channel\", \"cmd\": 65550}"; cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } else { cloudICP.dispatch.webSocket.isMSPConflicted = false; } callStatusMgr.cleanUp(); cloudICP.dispatch.conf.chairName = "chairman"; cloudICP.dispatch.gis.subList = []; cloudICP.dispatch.device.isDTMFDone = true; cloudICP.dispatch.group.current_groupcall_num = 0; cloudICP.dispatch.group.isCurrentPtt = { "grpid": "-1", "isPtt": false }; cloudICP.dispatch.video.currentVideoAbility = 0; }; function ICPSDK_Dispatch_BroadCastInfo() { }; /** * startBroadCast * @param { * "text" : * "toNumber" : * callback : * } */ ICPSDK_Dispatch_BroadCastInfo.prototype.startBroadCast = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "startBroadCast: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "startBroadCast: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "startBroadCast: The user does not logined"; param["callback"](result); return; } var requestParam = { "opt": "startBroadCast", "to" : "1", "param": { "text" : param["text"], "toNumber" : param["toNumber"] } }; var url = cloudICP.getSdkServerUrl() + "/v1/broadcastInfo/" + cloudICP.userInfo["isdn"] + "/start"; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * stopBroadCast * @param { * "callGroup" : * callback : * } */ ICPSDK_Dispatch_BroadCastInfo.prototype.stopBroadCast = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "stopBroadCast: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "stopBroadCast: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "stopBroadCast: The user does not logined"; param["callback"](result); return; } var requestParam = { "opt": "stopBroadCast", "to" : "1", "param": { "callGroup" : param["callGroup"] } }; var url = cloudICP.getSdkServerUrl() + "/v1/broadcastInfo/" + cloudICP.userInfo["isdn"] + "/stop"; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); } /** * getBroadCastList * @param { * callback : * } */ ICPSDK_Dispatch_BroadCastInfo.prototype.getBroadCastList = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "getBroadCastList: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "getBroadCastList: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "getBroadCastList: The user does not logined"; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/broadcastInfo/" + cloudICP.userInfo["isdn"] + "/getInfo"; var ajaxCfg = { "type": "GET", "url": url, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); };function ICPSDK_Dispatch_Conf() { this.MAX_CONF_ID = "9223372036854775807"; this.chairName = "chairman"; this.MAX_CONF_NUM = 1; this.MAX_MEMBER_NUM = 244; }; /** * createConf * @param { * isVideo : * memberInfos : [ * { * "number": * "name": * "isCamera": * "isWatchOnly" * "h265" * } * ] * callback: * } */ ICPSDK_Dispatch_Conf.prototype.createConf = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "createConf: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "createConf: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!param["fmt"]) { cloudICP.util.callStatusMgr.fmt = "1080P"; } else { cloudICP.util.callStatusMgr.fmt = param["fmt"]; } if (!cloudICP.userInfo["isdn"]) { result["desc"] = "createConf: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (cloudICP.util.callStatusMgr.currentCallState == cloudICP.util.callStatusMgr.RINGING && undefined == param["time"] && undefined == param["timeZone"]) { result["rsp"] = "-4"; result["desc"] = "createConf: There is a call is ringing." param["callback"](result); return; } var strWindowinfo = {}; if (param["windowInfo"] == undefined || undefined == param["windowInfo"]["mode"] || !cloudICP.util.checkmode( param["windowInfo"]["mode"])) { cloudICP.util.log(tabPageId, { "logLevel": "warn", "logMsg": "createConf: The mode is invalid, use defult value " + cloudICP.config["mode"] }); strWindowinfo["mode"] = cloudICP.config["mode"]; } if (param["windowInfo"] != undefined) { strWindowinfo["mode"] = param["windowInfo"]["mode"]; strWindowinfo["showToolbar"] = param["windowInfo"]["showToolbar"]; strWindowinfo["buttonIDs"] = param["windowInfo"]["buttonIDs"]; strWindowinfo["posX"] = param["windowInfo"]["posX"]; strWindowinfo["posY"] = param["windowInfo"]["posY"]; strWindowinfo["width"] = param["windowInfo"]["width"]; strWindowinfo["height"] = param["windowInfo"]["height"]; strWindowinfo["videoResizeMode"] = param["windowInfo"]["videoResizeMode"]; if ("wssflow" == strWindowinfo["mode"]) { //推流模式 if (undefined !=cloudICP.util.callStatusMgr.wssflowModeCids && Object.keys(cloudICP.util.callStatusMgr.wssflowModeCids).length >= 16) { result["desc"] = "createConf: the number of window in wssflow mode is greater than 16."; param["callback"](result); return; } if (undefined == param["windowInfo"]["width"] || !cloudICP.util.isNumber(param["windowInfo"][ "width" ]) || param["windowInfo"]["width"] > 2147483647 || param["windowInfo"]["width"] < 0) { result["desc"] = "createConf: The width is invalid."; param["callback"](result); return; } if (undefined == param["windowInfo"]["height"] || !cloudICP.util.isNumber(param["windowInfo"][ "height" ]) || param["windowInfo"]["height"] > 2147483647 || param["windowInfo"]["height"] < 0) { result["desc"] = "createConf: The height is invalid."; param["callback"](result); return; } } else if ("window" == strWindowinfo["mode"]) { //弹窗模式 if (!cloudICP.util.checkWindowParam(param["windowInfo"]["posX"])) { result["desc"] += "createConf: The posX is invalid, use defult value 400; "; strWindowinfo["posX"] = 400; } if (!cloudICP.util.checkWindowParam(param["windowInfo"]["posY"])) { result["desc"] += "createConf: The posY is invalid, use defult value 400; "; strWindowinfo["posY"] = 400; } if (!cloudICP.util.checkWindowParam(param["windowInfo"]["width"])) { result["desc"] += "createConf: The width is invalid, use defult value 640; "; strWindowinfo["width"] = 640; } if (!cloudICP.util.checkWindowParam(param["windowInfo"]["height"])) { result["desc"] += "createConf: The height is invalid, use defult value 480; "; strWindowinfo["height"] = 480; } if (undefined == param["windowInfo"]["showToolbar"] || !cloudICP.util.checkshowToolbar(param[ "windowInfo"]["showToolbar"])) { result["desc"] += "createConf: The showToolbar is invalid, use defult value 1; "; strWindowinfo["showToolbar"] = 1; } if (undefined == param["windowInfo"]["buttonIDs"] || !cloudICP.util.checkbuttonIDs(param["windowInfo"][ "buttonIDs" ])) { result["desc"] += "createConf: The buttonIDs is invalid, use defult value 0; "; strWindowinfo["buttonIDs"] = 0; } } else { result["desc"] = "createConf: The mode is invalid."; param["callback"](result); return; } } else { strWindowinfo["showToolbar"] = 1; strWindowinfo["buttonIDs"] = 0; strWindowinfo["width"] = 800; strWindowinfo["height"] = 450; } if (undefined == param["time"] && undefined == param["timeZone"]) { cloudICP.util.callStatusMgr.windowInfos[2147483647] = strWindowinfo; } var callStatusMgr = cloudICP.util.callStatusMgr; if (callStatusMgr.currentGoingConf != 0 && undefined == param["time"] && undefined == param["timeZone"]) { result["rsp"] = "-5"; result["desc"] = "createConf: The number of conf is limited to " + this.MAX_CONF_NUM; param["callback"](result); return; } if (param["isVideo"] != "false" && undefined == param["time"] && undefined == param["timeZone"]) { if (callStatusMgr.numberOfCall[callStatusMgr.VIDEO] + callStatusMgr.numberOfCall[callStatusMgr.VIDEOCONF] >= cloudICP.dispatch.video.MAX_VIDEO_DIAL_NUM || cloudICP.dispatch.video.currentVideoAbility >= cloudICP.dispatch.video.MAX_VIDEO_ABILITY) { result["rsp"] = "-7"; result["desc"] = "createConf: The ability of video conf is limited"; param["callback"](result); return; } } if (callStatusMgr.isAnyCallExisted() && undefined == param["time"] && undefined == param["timeZone"]) { result["rsp"] = "-6"; result["desc"] = "createConf: This call is conflicted with other calls"; param["callback"](result); return; } var tmpMemberInfos = param["memberInfos"].slice(); var tmpArr = [] var isHaveChairMan = false; for (var index = 0; index < tmpMemberInfos.length; index++) { if (tmpMemberInfos[index]["number"] == cloudICP.userInfo["isdn"]) { isHaveChairMan = true; } else { if (tmpMemberInfos[index]["isWatchOnly"] == "true") { result["rsp"] = "-2"; result["desc"] = "createConf: memberInfos is invalid"; param["callback"](result); return; } } } if (!isHaveChairMan) { tmpMemberInfos.push({ "number": cloudICP.userInfo["isdn"], "name": cloudICP.dispatch.conf.chairName, "isCamera": "false", "isWatchOnly": "false", "h265": "false" }); } for (var index = 0; index < tmpMemberInfos.length; index++) { tmpArr.push(tmpMemberInfos[index]["number"]); } var retArr = cloudICP.util.findDuplicates(tmpArr); if (retArr.length != 0) { result["rsp"] = "-2"; result["desc"] = "createConf: memberInfos is invalid"; param["callback"](result); return; } if (tmpMemberInfos.length > cloudICP.dispatch.conf.MAX_MEMBER_NUM) { result["rsp"] = "-8"; result["desc"] = "createConf: memberInfos is out of size"; param["callback"](result); return; } var requestParam = { "opt": "create", "param": { "confInfo": { "isVideo": param["isVideo"], "isRecorded": "false", "confrate": param["confRate"], }, "memberInfos": tmpMemberInfos } }; if (undefined != param["time"]) { requestParam["param"]["confInfo"]["time"] = param["time"]; } if (undefined != param["timeZone"]) { requestParam["param"]["confInfo"]["timeZone"] = param["timeZone"]; } if (undefined != param["timeZoneName"]) { requestParam["param"]["confInfo"]["timeZoneName"] = param["timeZoneName"]; } if (undefined != param["casConfParam"]) { requestParam["param"]["casConfParam"] = param["casConfParam"]; } var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * joinConf * @param { * confId : , * fmt : , * unifiedAccessCode: , * passcode: , * isVideo: * callback : * } */ ICPSDK_Dispatch_Conf.prototype.joinConf = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "joinConf: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "joinConf: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "joinConf: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "joinConf: confId is invalid"; param["callback"](result); return; } if (!cloudICP.util.isNumber(param["unifiedAccessCode"])) { result["desc"] = "joinConf: unifiedAccessCode is invalid"; param["callback"](result); return; } if (param["passcode"] != "" && !cloudICP.util.isNumber(param["passcode"])) { result["desc"] = "joinConf: passcode is invalid"; param["callback"](result); return; } if (!cloudICP.util.isBool(param["isVideo"])) { result["desc"] = "joinConf: isVideo is invalid"; param["callback"](result); return; } if (!param["fmt"]) { param["fmt"] = "1080P"; } var fmts = ["4K","2K","1080P", "720P", "D1", "CIF", "QCIF", "GCIF"]; if (param["fmt"] && !cloudICP.util.includes(fmts, param["fmt"])) { result["desc"] = "joinConf: The fmt is invalid"; param["callback"](result); return; } var strWindowinfo = {}; if (param["windowInfo"] == undefined || undefined == param["windowInfo"]["mode"] || !cloudICP.util.checkmode( param["windowInfo"]["mode"])) { cloudICP.util.log(tabPageId, { "logLevel": "warn", "logMsg": "joinConf: The mode is invalid, use defult value " + cloudICP.config["mode"] }); strWindowinfo["mode"] = cloudICP.config["mode"]; } if (param["windowInfo"] != undefined) { strWindowinfo["mode"] = param["windowInfo"]["mode"]; strWindowinfo["showToolbar"] = param["windowInfo"]["showToolbar"]; strWindowinfo["buttonIDs"] = param["windowInfo"]["buttonIDs"]; strWindowinfo["posX"] = param["windowInfo"]["posX"]; strWindowinfo["posY"] = param["windowInfo"]["posY"]; strWindowinfo["width"] = param["windowInfo"]["width"]; strWindowinfo["height"] = param["windowInfo"]["height"]; strWindowinfo["videoResizeMode"] = param["windowInfo"]["videoResizeMode"]; if ("wssflow" == strWindowinfo["mode"]) { //推流模式 if (undefined == param["windowInfo"]["width"] || !cloudICP.util.isNumber(param["windowInfo"][ "width" ]) || param["windowInfo"]["width"] > 2147483647 || param["windowInfo"]["width"] < 0) { result["desc"] = "joinConf: The width is invalid."; param["callback"](result); return; } if (undefined == param["windowInfo"]["height"] || !cloudICP.util.isNumber(param["windowInfo"][ "height" ]) || param["windowInfo"]["height"] > 2147483647 || param["windowInfo"]["height"] < 0) { result["desc"] = "joinConf: The height is invalid."; param["callback"](result); return; } } else if ("window" == strWindowinfo["mode"]) { //弹窗模式 if (!cloudICP.util.checkWindowParam(param["windowInfo"]["posX"])) { result["desc"] += "joinConf: The posX is invalid, use defult value 400; "; strWindowinfo["posX"] = 400; } if (!cloudICP.util.checkWindowParam(param["windowInfo"]["posY"])) { result["desc"] += "joinConf: The posY is invalid, use defult value 400; "; strWindowinfo["posY"] = 400; } if (!cloudICP.util.checkWindowParam(param["windowInfo"]["width"])) { result["desc"] += "joinConf: The width is invalid, use defult value 640; "; strWindowinfo["width"] = 640; } if (!cloudICP.util.checkWindowParam(param["windowInfo"]["height"])) { result["desc"] += "joinConf: The height is invalid, use defult value 480; "; strWindowinfo["height"] = 480; } if (undefined == param["windowInfo"]["showToolbar"] || !cloudICP.util.checkshowToolbar(param[ "windowInfo"]["showToolbar"])) { result["desc"] += "joinConf: The showToolbar is invalid, use defult value 1; "; strWindowinfo["showToolbar"] = 1; } if (undefined == param["windowInfo"]["buttonIDs"] || !cloudICP.util.checkbuttonIDs(param["windowInfo"][ "buttonIDs" ])) { result["desc"] += "joinConf: The buttonIDs is invalid, use defult value 0; "; strWindowinfo["buttonIDs"] = 0; } } else { result["desc"] = "joinConf: The mode is invalid."; param["callback"](result); return; } } if (cloudICP.util.callStatusMgr.currentCallState == cloudICP.util.callStatusMgr.RINGING) { result["rsp"] = "-4"; result["desc"] = "joinConf: There is a call is ringing." param["callback"](result); return; } var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.windowInfos[param["unifiedAccessCode"]] = strWindowinfo; if (callStatusMgr.currentGoingConf != 0) { result["rsp"] = "-5"; result["desc"] = "joinConf: The number of conf is limited to " + this.MAX_CONF_NUM; param["callback"](result); return; } if (param["isVideo"] != "false") { if (callStatusMgr.numberOfCall[callStatusMgr.VIDEO] + callStatusMgr.numberOfCall[callStatusMgr.VIDEOCONF] >= cloudICP.dispatch.video.MAX_VIDEO_DIAL_NUM || cloudICP.dispatch.video.currentVideoAbility >= cloudICP.dispatch.video.MAX_VIDEO_ABILITY) { result["rsp"] = "-7"; result["desc"] = "joinConf: The ability of video conf is limited"; param["callback"](result); return; } } if (callStatusMgr.isAnyCallExisted()) { result["rsp"] = "-6"; result["desc"] = "joinConf: This call is conflicted with other calls"; param["callback"](result); return; } var requestParam = { "opt": "join", "param": { "confId": param["confId"], "fmt": param["fmt"], "video_format": cloudICP.config.cameraInfo.toString(), "audio_format": "1", "unifiedAccessCode": param["unifiedAccessCode"], "passcode": param["passcode"], "isVideo": param["isVideo"] } }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * acceptAudioConf * @param { * cid : * callback : * } */ ICPSDK_Dispatch_Conf.prototype.acceptAudioConf = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "acceptAudioConf: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "acceptAudioConf: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "acceptAudioConf: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "acceptAudioConf: cid is invalid"; param["callback"](result); return; } var calls = cloudICP.util.callStatusMgr.allCalls; if (calls[param["cid"]] && calls[param["cid"]]["callState"] >= cloudICP.util.callStatusMgr.CONNECTING) { result["rsp"] = "-40002"; result["desc"] = ""; param["callback"](result); return; } var callStatusMgr = cloudICP.util.callStatusMgr; if (callStatusMgr.currentGoingConf != 0) { result["rsp"] = "-5"; result["desc"] = "acceptAudioConf: The number of conf is limited to " + this.MAX_CONF_NUM; param["callback"](result); return; } if (callStatusMgr.connectingCallMgr[callStatusMgr.VIDEO].length != 0 || callStatusMgr.connectingCallMgr[callStatusMgr.DISCREET].length != 0 || callStatusMgr.connectingCallMgr[callStatusMgr.HALFVOICE].length != 0 || callStatusMgr.connectingCallMgr[callStatusMgr.VIDEOCONF].length != 0 ) { result["rsp"] = "-4"; result["desc"] = "acceptAudioConf: The call is conflicted with other calls" param["callback"](result); return; }; var requestParam = { "opt": "audioAccept", "cid": param["cid"], }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * acceptVideoConf * @param { * cid : * windowInfo: { * width: * height: * posX: * posY: * } * callback : * } */ ICPSDK_Dispatch_Conf.prototype.acceptVideoConf = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "acceptVideoConf: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "acceptVideoConf: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "acceptVideoConf: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "acceptVideoConf: cid is invalid"; param["callback"](result); return; } var strWindowinfo = {}; if (param["windowInfo"] == undefined || undefined == param["windowInfo"]["mode"] || !cloudICP.util.checkmode( param["windowInfo"]["mode"])) { cloudICP.util.log(tabPageId, { "logLevel": "warn", "logMsg": "acceptVideoConf: The mode is invalid, use defult value " + cloudICP.config["mode"] }); strWindowinfo["mode"] = cloudICP.config["mode"]; } if (param["windowInfo"] != undefined) { strWindowinfo["mode"] = param["windowInfo"]["mode"]; strWindowinfo["showToolbar"] = param["windowInfo"]["showToolbar"]; strWindowinfo["buttonIDs"] = param["windowInfo"]["buttonIDs"]; strWindowinfo["posX"] = param["windowInfo"]["posX"]; strWindowinfo["posY"] = param["windowInfo"]["posY"]; strWindowinfo["width"] = param["windowInfo"]["width"]; strWindowinfo["height"] = param["windowInfo"]["height"]; strWindowinfo["videoResizeMode"] = param["windowInfo"]["videoResizeMode"]; if ("wssflow" == strWindowinfo["mode"]) { //推流模式 if (undefined == param["windowInfo"]["width"] || !cloudICP.util.isNumber(param["windowInfo"][ "width" ]) || param["windowInfo"]["width"] > 2147483647 || param["windowInfo"]["width"] < 0) { result["desc"] = "acceptVideoConf: The width is invalid."; param["callback"](result); return; } if (undefined == param["windowInfo"]["height"] || !cloudICP.util.isNumber(param["windowInfo"]["height"]) || param["windowInfo"]["height"] > 2147483647 || param["windowInfo"]["height"] < 0) { result["desc"] = "acceptVideoConf: The height is invalid."; param["callback"](result); return; } } else if ("window" == strWindowinfo["mode"]) {//弹窗模式 if (!cloudICP.util.checkWindowParam(param["windowInfo"]["posX"])) { result["desc"] += "acceptVideoConf: The posX is invalid, use defult value 400; "; strWindowinfo["posX"] = 400; } if (!cloudICP.util.checkWindowParam(param["windowInfo"]["posY"])) { result["desc"] += "acceptVideoConf: The posY is invalid, use defult value 400; "; strWindowinfo["posY"] = 400; } if (!cloudICP.util.checkWindowParam(param["windowInfo"]["width"])) { result["desc"] += "acceptVideoConf: The width is invalid, use defult value 640; "; strWindowinfo["width"] = 640; } if (!cloudICP.util.checkWindowParam(param["windowInfo"]["height"])) { result["desc"] += "acceptVideoConf: The height is invalid, use defult value 480; "; strWindowinfo["height"] = 480; } if (undefined == param["windowInfo"]["showToolbar"] || !cloudICP.util.checkshowToolbar(param["windowInfo"]["showToolbar"])) { result["desc"] += "acceptVideoConf: The showToolbar is invalid, use defult value 1; "; strWindowinfo["showToolbar"] = 1; } if (undefined == param["windowInfo"]["buttonIDs"] || !cloudICP.util.checkbuttonIDs(param["windowInfo"]["buttonIDs"])) { result["desc"] += "acceptVideoConf: The buttonIDs is invalid, use defult value 0; "; strWindowinfo["buttonIDs"] = 0; } } else { result["desc"] = "acceptVideoConf: The mode is invalid."; param["callback"](result); return; } strWindowinfo["iCid"] = param["cid"]; } else { strWindowinfo["showToolbar"] = 1; strWindowinfo["buttonIDs"] = 0; strWindowinfo["iCid"] = param["cid"]; strWindowinfo["width"] = 1280; strWindowinfo["height"] = 720; } var calls = cloudICP.util.callStatusMgr.allCalls; if (calls[param["cid"]] && calls[param["cid"]]["callState"] >= cloudICP.util.callStatusMgr.CONNECTING) { result["rsp"] = "-40002"; result["desc"] = ""; param["callback"](result); return; } var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.windowInfos[param["cid"]] = strWindowinfo; if (callStatusMgr.currentGoingConf != 0) { result["rsp"] = "-5"; result["desc"] = "acceptVideoConf: The number of conf is limited to " + this.MAX_CONF_NUM; param["callback"](result); return; } if (callStatusMgr.connectingCallMgr[callStatusMgr.VIDEO].length != 0 || callStatusMgr.connectingCallMgr[callStatusMgr.DISCREET].length != 0 || callStatusMgr.connectingCallMgr[callStatusMgr.HALFVOICE].length != 0 || callStatusMgr.connectingCallMgr[callStatusMgr.VIDEOCONF].length != 0 ) { result["rsp"] = "-4"; result["desc"] = "acceptVideoConf: The call is conflicted with other calls" param["callback"](result); return; }; var requestParam = { "opt": "videoAccept", "cid": param["cid"], "param": { "video_format": cloudICP.config.cameraInfo.toString(), "audio_format": "1" } }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * rejectAudioConf * @param { * cid : * callback : * } */ ICPSDK_Dispatch_Conf.prototype.rejectAudioConf = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "rejectAudioConf: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "rejectAudioConf: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "rejectAudioConf: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "rejectAudioConf: cid is invalid"; param["callback"](result); return; } var calls = cloudICP.util.callStatusMgr.allCalls; if (calls[param["cid"]] && calls[param["cid"]]["callState"] >= cloudICP.util.callStatusMgr.CONNECTING) { var str; if (calls[param["cid"]]["callState"] == cloudICP.util.callStatusMgr.CONNECTING) { str = "rejectAudioConf: The cid is answered"; } else if (calls[param["cid"]]["callState"] == cloudICP.util.callStatusMgr.HOLD) { str = "rejectAudioConf: The cid is holded"; } else if (calls[param["cid"]]["callState"] == cloudICP.util.callStatusMgr.RELEASE) { str = "rejectAudioConf: The cid is ended"; } else { str = "rejectAudioConf: The cid is invalid"; } result["rsp"] = "-4"; result["desc"] = str; param["callback"](result); return; } var requestParam = { "opt": "audioReject", "cid": param["cid"], }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { if (data["rsp"] == "0") { // 停止振铃音 var mediaParam = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}}".format( parseInt(param["cid"]) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(mediaParam, true); var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.VOICECONF, callStatusMgr.RELEASE, {"value": {"cid": param["cid"]}}); } param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * rejectVideoConf * @param { * cid : * callback : * } */ ICPSDK_Dispatch_Conf.prototype.rejectVideoConf = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "rejectVideoConf: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "rejectVideoConf: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "rejectVideoConf: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "rejectVideoConf: cid is invalid"; param["callback"](result); return; } var calls = cloudICP.util.callStatusMgr.allCalls; if (calls[param["cid"]] && calls[param["cid"]]["callState"] >= cloudICP.util.callStatusMgr.CONNECTING) { var str; if (calls[param["cid"]]["callState"] == cloudICP.util.callStatusMgr.CONNECTING) { str = "rejectVideoConf: The cid is answered"; } else if (calls[param["cid"]]["callState"] == cloudICP.util.callStatusMgr.HOLD) { str = "rejectVideoConf: The cid is holded"; } else if (calls[param["cid"]]["callState"] == cloudICP.util.callStatusMgr.RELEASE) { str = "rejectVideoConf: The cid is ended"; } else { str = "rejectVideoConf: The cid is invalid"; } result["rsp"] = "-4"; result["desc"] = str; param["callback"](result); return; } var requestParam = { "opt": "videoReject", "cid": param["cid"], }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { if (data["rsp"] == "0") { // 停止振铃音 var mediaParam = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}}".format( parseInt(param["cid"]) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(mediaParam, true); var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.VIDEOCONF, callStatusMgr.RELEASE, {"value": {"cid": param["cid"]}}); } param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * addConfMembers @param { * confId : * memberInfos : [ * { * "number": * "name": * "isCamera": * "isWatchOnly": * "h265": * } * ] * callback : * } */ ICPSDK_Dispatch_Conf.prototype.addConfMembers = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "addConfMembers: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "addConfMembers: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "addConfMembers: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "addConfMembers: confId is invalid"; param["callback"](result); return; } // TODO: 会议人数规格需要确认。 if (!(param["memberInfos"] && Array.isArray(param["memberInfos"]) && param["memberInfos"].length > 0)) { result["desc"] = "addConfMembers: memberInfos is invalid"; param["callback"](result); return; } var length = param["memberInfos"].length; for (var i = 0; i < length; i++) { var user = param["memberInfos"][i]; if (!cloudICP.util.checkIsdn(user["number"])) { result["desc"] = "addConfMembers: number is invalid"; param["callback"](result); return; } if (!user["name"]) { result["desc"] = "addConfMembers: name is invalid"; param["callback"](result); return; } if (!cloudICP.util.isBool(user["isCamera"])) { result["desc"] = "addConfMembers: isCamera is invalid"; param["callback"](result); return; } if (!cloudICP.util.isBool(user["isWatchOnly"])) { result["desc"] = "addConfMembers: isWatchOnly is invalid"; param["callback"](result); return; } if (!cloudICP.util.isBool(user["h265"])) { result["desc"] = "addConfMembers: h265 is invalid"; param["callback"](result); return; } } var tmpArr = [] var confInfo = cloudICP.util.callStatusMgr.confMgr[param["confId"]]; // 检查当前会议状态 if (confInfo != undefined) { if (cloudICP.userInfo["isdn"] != confInfo["value"]["confStatus"]["chair"]) { result["rsp"] = "-5"; result["desc"] = "addConfMembers: The permission of chairman is required."; param["callback"](result); return; } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-6"; result["desc"] = "addConfMembers: The chairman is leaved."; param["callback"](result); return; } if (confInfo["confMembersStatus"] && param["memberInfos"].length + confInfo["confMembersStatus"].length > cloudICP.dispatch.conf.MAX_MEMBER_NUM) { result["rsp"] = "-9"; result["desc"] = "addConfMembers: memberInfos is out of size"; param["callback"](result); return; } } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-6"; result["desc"] = "addConfMembers: The member is leaved."; param["callback"](result); return; } for (var index = 0; index < param["memberInfos"].length; index++) { if (param["memberInfos"][index]["number"] == cloudICP.userInfo["isdn"]) { result["rsp"] = "-2"; result["desc"] = "addConfMembers: memberInfos is invalid"; param["callback"](result); return; } else { if (param["memberInfos"][index]["isWatchOnly"] == "true") { result["rsp"] = "-2"; result["desc"] = "addConfMembers: memberInfos is invalid"; param["callback"](result); return; } } tmpArr.push(param["memberInfos"][index]["number"]); var userStatus = cloudICP.util.callStatusMgr.userStatusMgr[param["memberInfos"][index]["number"]]; if (userStatus != undefined && userStatus == "4021") { result["rsp"] = "-8"; result["desc"] = "addConfMembers: The member is rigning."; param["callback"](result); return; } } var retArr = cloudICP.util.findDuplicates(tmpArr); if (retArr.length != 0) { result["rsp"] = "-2"; result["desc"] = "addConfMembers: memberInfos is invalid"; param["callback"](result); return; } if (param["memberInfos"].length> cloudICP.dispatch.conf.MAX_MEMBER_NUM) { result["rsp"] = "-9"; result["desc"] = "addConfMembers: memberInfos is out of size"; param["callback"](result); return; } var requestParam = { "opt": "addMembers", "param": { "confId": param["confId"], "memberInfos": param["memberInfos"] } }; if (param["casConfParam"] != undefined) { requestParam["param"]["casConfParam"] = param["casConfParam"]; } var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * hangupConfMember @param { * confId : * memberInfo : { * "number": * } * callback : * } */ ICPSDK_Dispatch_Conf.prototype.hangupConfMember = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "hangupConfMember: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "hangupConfMember: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "hangupConfMember: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "hangupConfMember: confId is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkIsdn(param["memberInfo"]["number"])) { result["desc"] = "hangupConfMember: number is invalid"; param["callback"](result); return; } var confInfo = cloudICP.util.callStatusMgr.confMgr[param["confId"]]; if (confInfo != undefined) { if (cloudICP.userInfo["isdn"] != confInfo["value"]["confStatus"]["chair"]) { result["rsp"] = "-5"; result["desc"] = "hangupConfMember: The permission of chairman is required."; param["callback"](result); return; } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-6"; result["desc"] = "hangupConfMember: The chairman is leaved."; param["callback"](result); return; } for (var index = 0; index < confInfo["value"]["confMembersStatus"].length; index++) { var confMember = confInfo["value"]["confMembersStatus"][index]; if (confMember["number"] == param["memberInfo"]["number"] && (confMember["participantStatus"] == "Disconnected" || confMember["participantStatus"] == "Connecting")) { result["rsp"] = "-7"; result["desc"] = "hangupConfMember: The member is disconnected or connecting."; param["callback"](result); return; } } } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-6"; result["desc"] = "hangupConfMember: The member is leaved."; param["callback"](result); return; } if (param["memberInfo"]["number"] == cloudICP.userInfo["isdn"]) { result["rsp"] = "-2"; result["desc"] = "hangupConfMember: number is invalid"; param["callback"](result); return; } var requestParam = { "opt": "hangupMember", "param": { "confId": param["confId"], "memberInfo": param["memberInfo"] } }; if (param["casConfParam"] != undefined) { requestParam["param"]["casConfParam"] = param["casConfParam"]; } var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * callConfMember @param { * confId : * memberInfo : * { * "number": * } * callback : * } */ ICPSDK_Dispatch_Conf.prototype.callConfMember = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "callConfMember: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "callConfMember: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "callConfMember: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "callConfMember: confId is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkIsdn(param["memberInfo"]["number"])) { result["desc"] = "callConfMember: number is invalid"; param["callback"](result); return; } var confInfo = cloudICP.util.callStatusMgr.confMgr[param["confId"]]; if (confInfo != undefined) { if (cloudICP.userInfo["isdn"] != confInfo["value"]["confStatus"]["chair"]) { result["rsp"] = "-5"; result["desc"] = "callConfMember: The permission of chairman is required."; param["callback"](result); return; } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-8"; result["desc"] = "callConfMember: The chairman is leaved."; param["callback"](result); return; } for (var index = 0; index < confInfo["value"]["confMembersStatus"].length; index++) { var confMember = confInfo["value"]["confMembersStatus"][index]; if (confMember["number"] == param["memberInfo"]["number"] && (confMember["participantStatus"] == "Connected" || confMember["participantStatus"] == "Connecting")) { result["rsp"] = "-7"; result["desc"] = "callConfMember: The member is connected or connecting."; param["callback"](result); return; } } } var userStatus = cloudICP.util.callStatusMgr.userStatusMgr[param["memberInfo"]["number"]]; if (userStatus != undefined && userStatus == "4021") { result["rsp"] = "-6"; result["desc"] = "callConfMember: The member is already conference member or is ringing conference member."; param["callback"](result); return; } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-8"; result["desc"] = "callConfMember: The member is leaved."; param["callback"](result); return; } var requestParam = { "opt": "recallMember", "param": { "confId": param["confId"], "memberInfo": param["memberInfo"] } }; if (param["casConfParam"] != undefined) { requestParam["param"]["casConfParam"] = param["casConfParam"]; } var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * endConf @param { * confId : * callback : * } */ ICPSDK_Dispatch_Conf.prototype.endConf = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "endConf: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "endConf: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "endConf: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "endConf: confId is invalid"; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"] + "/close/" + param["confId"]; var requestParam = {}; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "DELETE", "url": url, "data": requestParam, "callback": function(data) { if (data["rsp"] == "0") { var confInfo = cloudICP.util.callStatusMgr.confMgr[param["confId"]]; if (confInfo) { confInfo["isEnding"] = true; } } param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * exitAudioConf * @param { * cid : * callback : * } */ ICPSDK_Dispatch_Conf.prototype.exitAudioConf = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "exitAudioConf: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "exitAudioConf: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "exitAudioConf: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "exitAudioConf: cid is invalid"; param["callback"](result); return; } var call = cloudICP.util.callStatusMgr.allCalls[param["cid"]]; if (call && call["caller"] != cloudICP.userInfo["isdn"] && call.callState == cloudICP.util.callStatusMgr.RINGING) { result["rsp"] = "-4"; result["desc"] = "exitAudioConf: The callee can't release a ringing call."; param["callback"](result); return; } var confInfo = cloudICP.util.callStatusMgr.confMgr[cloudICP.util.callStatusMgr.currentGoingConf]; if (confInfo != undefined) { if (cloudICP.userInfo["isdn"] == confInfo["value"]["confStatus"]["chair"]) { result["rsp"] = "-5"; result["desc"] = "exitAudioConf: The chairman can't leave conf."; param["callback"](result); return; } } var requestParam = { "opt": "audioLeave", "cid": param["cid"], }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { if (data["rsp"] == "1") { data["rsp"] = "0"; } param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * exitVideoConf * @param { * cid : * callback : * } */ ICPSDK_Dispatch_Conf.prototype.exitVideoConf = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "exitVideoConf: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "exitVideoConf: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "exitVideoConf: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "exitVideoConf: cid is invalid"; param["callback"](result); return; } var call = cloudICP.util.callStatusMgr.allCalls[param["cid"]]; if (call && call["caller"] != cloudICP.userInfo["isdn"] && call.callState == cloudICP.util.callStatusMgr.RINGING) { result["rsp"] = "-4"; result["desc"] = "exitVideoConf: The callee can't release a ringing call."; param["callback"](result); return; } var confInfo = cloudICP.util.callStatusMgr.confMgr[cloudICP.util.callStatusMgr.currentGoingConf]; if (confInfo != undefined) { if (cloudICP.userInfo["isdn"] == confInfo["value"]["confStatus"]["chair"]) { result["rsp"] = "-5"; result["desc"] = "exitVideoConf: The chairman can't leave conf."; param["callback"](result); return; } } var requestParam = { "opt": "videoLeave", "cid": param["cid"], }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { if (data["rsp"] == "1") { data["rsp"] = "0"; } param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * muteConfMember @param { * confId : * isMute : * number : * callback : * } */ ICPSDK_Dispatch_Conf.prototype.muteConfMember = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "muteConfMember: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "muteConfMember: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "muteConfMember: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "muteConfMember: confId is invalid"; param["callback"](result); return; } if (!cloudICP.util.isBool(param["isMute"])) { result["desc"] = "muteConfMember: isMute is invalid"; param["callback"](result); return; } // 判断 param["isQuiet"] 是否为空,为空通过,不为空检查其值 if (param["isQuiet"] === undefined || param["isQuiet"] === null) { } else if (!cloudICP.util.isBool(param["isQuiet"])) { // 如果 param["isQuiet"] 有值,则判断是否为布尔值 result["desc"] = "muteConfMember: isQuiet is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkIsdn(param["number"])) { result["desc"] = "muteConfMember: number is invalid"; param["callback"](result); return; } var confInfo = cloudICP.util.callStatusMgr.confMgr[param["confId"]]; if (confInfo != undefined) { if ((cloudICP.userInfo["isdn"] != param["number"]) && (cloudICP.userInfo["isdn"] != confInfo["value"]["confStatus"]["chair"])) { result["rsp"] = "-5"; result["desc"] = "muteConfMember: The permission of chairman is required."; param["callback"](result); return; } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-6"; result["desc"] = "muteConfMember: The current member is leaved."; param["callback"](result); return; } } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-6"; result["desc"] = "muteConfMember: The member is leaved."; param["callback"](result); return; } var requestParam = { "opt": "muteMember", "param": { "confId": param["confId"], "isMute": param["isMute"], "isQuiet":param["isQuiet"], "number": param["number"] } }; if (param["casConfParam"] != undefined) { requestParam["param"]["casConfParam"] = param["casConfParam"]; } var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * muteConf @param { * confId : * isMute : * callback : * } */ ICPSDK_Dispatch_Conf.prototype.muteConf = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "muteConf: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "muteConf: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "muteConf: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "muteConf: confId is invalid"; param["callback"](result); return; } if (!cloudICP.util.isBool(param["isMute"])) { result["desc"] = "muteConf: isMute is invalid"; param["callback"](result); return; } // 判断 param["isQuiet"] 是否为空,为空通过,不为空检查其值 if (param["isQuiet"] === undefined || param["isQuiet"] === null) { } else if (!cloudICP.util.isBool(param["isQuiet"])) { // 如果 param["isQuiet"] 有值,则判断是否为布尔值 result["desc"] = "muteConf: isQuiet is invalid"; param["callback"](result); return; } var confInfo = cloudICP.util.callStatusMgr.confMgr[param["confId"]]; if (confInfo != undefined) { if (cloudICP.userInfo["isdn"] != confInfo["value"]["confStatus"]["chair"]) { result["rsp"] = "-5"; result["desc"] = "muteConf: The permission of chairman is required."; param["callback"](result); return; } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-6"; result["desc"] = "muteConf: The chairman is leaved."; param["callback"](result); return; } } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-6"; result["desc"] = "muteConf: The member is leaved."; param["callback"](result); return; } var requestParam = { "opt": "muteConf", "param": { "confId": param["confId"], "isMute": param["isMute"], "isQuiet":param["isQuiet"] } }; if (undefined != param["casConfParam"]) { requestParam["param"]["casConfParam"] = param["casConfParam"]; } var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * watchConfMember @param { * confId : * number : * callback : * } */ ICPSDK_Dispatch_Conf.prototype.watchConfMember = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "watchConfMember: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "watchConfMember: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "watchConfMember: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "watchConfMember: confId is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkIsdn(param["number"])) { result["desc"] = "watchConfMember: number is invalid"; param["callback"](result); return; } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-6"; result["desc"] = "watchConfMember: The member is leaved."; param["callback"](result); return; } var requestParam = { "opt": "watchMember", "param": { "confId": param["confId"], "number": param["number"] } }; if (undefined != param["casConfParam"]) { requestParam["param"]["casConfParam"] = param["casConfParam"]; } var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * broadcastMixPicture @param { * confId : * mixPictureType : * memberInfos : [ * { * "number": * } * ] * callback : * } */ ICPSDK_Dispatch_Conf.prototype.broadcastMixPicture = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "broadcastMixPicture: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "broadcastMixPicture: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "broadcastMixPicture: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "broadcastMixPicture: confId is invalid"; param["callback"](result); return; } if (!param["mixPictureType"]) { result["desc"] = "broadcastMixPicture: The mixPictureType is invalid"; param["callback"](result); return; } // TODO: 会议人数规格需要确认。 if (!(param["memberInfos"] && Array.isArray(param["memberInfos"]) && param["memberInfos"].length > 0)) { result["desc"] = "broadcastMixPicture: memberInfos is invalid"; param["callback"](result); return; } var length = param["memberInfos"].length; for (var i = 0; i < length; i++) { var user = param["memberInfos"][i]; if (!cloudICP.util.checkIsdn(user["number"])) { result["desc"] = "broadcastMixPicture: number is invalid"; param["callback"](result); return; } } var confInfo = cloudICP.util.callStatusMgr.confMgr[param["confId"]]; if (confInfo != undefined) { if (cloudICP.userInfo["isdn"] != confInfo["value"]["confStatus"]["chair"]) { result["rsp"] = "-5"; result["desc"] = "broadcastMixPicture: The permission of chairman is required."; param["callback"](result); return; } } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-6"; result["desc"] = "broadcastMixPicture: The member is leaved."; param["callback"](result); return; } var requestParam = { "opt": "broadcastMix", "param": { "confId": param["confId"], "mixPictureType": param["mixPictureType"], "memberInfos": param["memberInfos"] } }; if (undefined != param["casConfParam"]) { requestParam["param"]["casConfParam"] = param["casConfParam"]; } var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * watchMixPicture @param { * confId : * mixPictureType : * memberInfos : [ * { * "number": * } * ] * callback : * } */ ICPSDK_Dispatch_Conf.prototype.watchMixPicture = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "watchMixPicture: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "watchMixPicture: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "watchMixPicture: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "watchMixPicture: confId is invalid"; param["callback"](result); return; } if (!param["mixPictureType"]) { result["desc"] = "watchMixPicture: The mixPictureType is invalid"; param["callback"](result); return; } // TODO: 会议人数规格需要确认。 if (!(param["memberInfos"] && Array.isArray(param["memberInfos"]) && param["memberInfos"].length > 0)) { result["desc"] = "watchMixPicture: memberInfos is invalid"; param["callback"](result); return; } var length = param["memberInfos"].length; for (var i = 0; i < length; i++) { var user = param["memberInfos"][i]; if (!cloudICP.util.checkIsdn(user["number"])) { result["desc"] = "watchMixPicture: number is invalid"; param["callback"](result); return; } } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-6"; result["desc"] = "watchMixPicture: The member is leaved."; param["callback"](result); return; } // 2.0会议系统进入,限制非主席调用选看多画面;3.0会议系统则放开,非主席也能调用选看多画面 if (cloudICP.util.isNumber(param["confId"])) { var confInfo = cloudICP.util.callStatusMgr.confMgr[param["confId"]]; if (confInfo != undefined) { if (cloudICP.userInfo["isdn"] != confInfo["value"]["confStatus"]["chair"]) { result["rsp"] = "-5"; result["desc"] = "watchMixPicture: The permission of chairman is required."; param["callback"](result); return; } } } var requestParam = { "opt": "watchMix", "param": { "confId": param["confId"], "mixPictureType": param["mixPictureType"], "memberInfos": param["memberInfos"] } }; if (undefined != param["casConfParam"]) { requestParam["param"]["casConfParam"] = param["casConfParam"]; } var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * broadcastConfMember @param { * confId : * number : * callback : * } */ ICPSDK_Dispatch_Conf.prototype.broadcastConfMember = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "broadcastConfMember: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "broadcastConfMember: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "broadcastConfMember: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "broadcastConfMember: confId is invalid"; param["callback"](result); return; } var confInfo = cloudICP.util.callStatusMgr.confMgr[param["confId"]]; if (confInfo != undefined) { if (cloudICP.userInfo["isdn"] != confInfo["value"]["confStatus"]["chair"]) { result["rsp"] = "-5"; result["desc"] = "broadcastConfMember: The permission of chairman is required."; param["callback"](result); return; } } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-6"; result["desc"] = "broadcastConfMember: The member is leaved."; param["callback"](result); return; } var requestParam = { "opt": "broadcastMember", "param": { "confId": param["confId"], "number": param["number"] } }; if (undefined != param["casConfParam"]) { requestParam["param"]["casConfParam"] = param["casConfParam"]; } var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * cancelBroadcastConfMember @param { * confId : * number : * callback : * } */ ICPSDK_Dispatch_Conf.prototype.cancelBroadcastConfMember = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "cancelBroadcastConfMember: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "cancelBroadcastConfMember: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "cancelBroadcastConfMember: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "cancelBroadcastConfMember: confId is invalid"; param["callback"](result); return; } var confInfo = cloudICP.util.callStatusMgr.confMgr[param["confId"]]; if (confInfo != undefined) { if (cloudICP.userInfo["isdn"] != confInfo["value"]["confStatus"]["chair"]) { result["rsp"] = "-5"; result["desc"] = "cancelBroadcastConfMember: The permission of chairman is required."; param["callback"](result); return; } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-6"; result["desc"] = "cancelBroadcastConfMember: The chairman is leaved."; param["callback"](result); return; } // 限制只能取消广播正在广播中的成员 if (confInfo["value"]["confStatus"]["broadcast"] != param["number"]) { result["rsp"] = "-7"; result["desc"] = "cancelBroadcastConfMember: The member is not broadcasting."; param["callback"](result); return; } } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-6"; result["desc"] = "cancelBroadcastConfMember: The member is leaved."; param["callback"](result); return; } var requestParam = { "opt": "cancelBroadcastMember", "param": { "confId": param["confId"], "number": param["number"] } }; if (undefined != param["casConfParam"]) { requestParam["param"]["casConfParam"] = param["casConfParam"]; } var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * cancelBroadcastMixPicture @param { * confId : * callback : * } */ ICPSDK_Dispatch_Conf.prototype.cancelBroadcastMixPicture = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "cancelBroadcastMixPicture: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "cancelBroadcastMixPicture: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "cancelBroadcastMixPicture: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "cancelBroadcastMixPicture: confId is invalid"; param["callback"](result); return; } var confInfo = cloudICP.util.callStatusMgr.confMgr[param["confId"]]; if (confInfo != undefined) { if (cloudICP.userInfo["isdn"] != confInfo["value"]["confStatus"]["chair"]) { result["rsp"] = "-5"; result["desc"] = "cancelBroadcastMixPicture: The permission of chairman is required."; param["callback"](result); return; } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-6"; result["desc"] = "cancelBroadcastMixPicture: The chairman is leaved."; param["callback"](result); return; } } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-6"; result["desc"] = "cancelBroadcastMixPicture: The member is leaved."; param["callback"](result); return; } var requestParam = { "opt": "cancelBroadcastMix", "param": { "confId": param["confId"] } }; if (undefined != param["casConfParam"]) { requestParam["param"]["casConfParam"] = param["casConfParam"]; } var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * startConfUploadWall * @param { * confId : * number : * layerInfo : * { * "xPos": * "yPos": * "width": * "height": * "decoder": * "termType": * "termName": * } * * callback: * } */ ICPSDK_Dispatch_Conf.prototype.startConfUploadWall = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "startConfUploadWall: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "startConfUploadWall: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "startConfUploadWall: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "startConfUploadWall: confId is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkIsdn(param["number"])) { result["desc"] = "startConfUploadWall: number is invalid"; param["callback"](result); return; } if (!param["layerInfo"]) { result["desc"] = "startConfUploadWall: layerInfo is invalid"; param["callback"](result); return; } var layerInfo = param["layerInfo"]; if (!layerInfo["xPos"] || !cloudICP.util.isNumber(layerInfo["xPos"])) { result["desc"] = "startConfUploadWall: xPos is invalid"; param["callback"](result); return; } if (!layerInfo["yPos"] || !cloudICP.util.isNumber(layerInfo["yPos"])) { result["desc"] = "startConfUploadWall: yPos is invalid"; param["callback"](result); return; } if (!layerInfo["width"] || !cloudICP.util.isNumber(layerInfo["width"])) { result["desc"] = "startConfUploadWall: width is invalid"; param["callback"](result); return; } if (!layerInfo["height"] || !cloudICP.util.isNumber(layerInfo["height"])) { result["desc"] = "startConfUploadWall: height is invalid"; param["callback"](result); return; } if (undefined == layerInfo["decoder"] || !cloudICP.util.isStrInArray(layerInfo["decoder"], ["ivs", "elte", "te", "dec", "custom"])) { result["desc"] = "startConfUploadWall: decoder is invalid"; param["callback"](result); return; } if (!layerInfo["termType"] || !cloudICP.util.isStrInArray(layerInfo["termType"], ["ivs_camera", "elte_phone", "voip", "pc", "dec_site"])) { result["desc"] = "startConfUploadWall: termType is invalid"; param["callback"](result); return; } if (!layerInfo["termName"] || !cloudICP.util.checkIsdn(layerInfo["termName"])) { result["desc"] = "startConfUploadWall: termName is invalid"; param["callback"](result); return; } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-6"; result["desc"] = "startConfUploadWall: The current member is leaved."; param["callback"](result); return; } var confInfo = cloudICP.util.callStatusMgr.confMgr[param["confId"]]; if (confInfo != undefined) { if (cloudICP.userInfo["isdn"] != confInfo["value"]["confStatus"]["chair"]) { result["rsp"] = "-7"; result["desc"] = "startConfUploadWall: The permission of chairman is required."; param["callback"](result); return; } } var murl = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/vmdsession"; var majaxCfg = { "type": "GET", "url": murl, "data": null, "callback": function(mdata) { if (mdata["rsp"] == "0") { var requestParam = { "opt": "wallStart", "param": { "confId": param["confId"], "number": param["number"], "layerInfo": param["layerInfo"] } }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } else { param["callback"]({"rsp": "-1", "desc": ""}); } } } cloudICP.util.ajax(majaxCfg); }; /** * stopConfUploadWall * @param { * layerID: * termName: * owner: * callback: * } */ ICPSDK_Dispatch_Conf.prototype.stopConfUploadWall = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "stopConfUploadWall: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "stopConfUploadWall: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "stopConfUploadWall: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!param["layerID"]) { result["desc"] = "stopConfUploadWall: layerID is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkIsdn(param["owner"])) { result["desc"] = "stopConfUploadWall: owner is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkIsdn(param["termName"])) { result["desc"] = "stopConfUploadWall: termName is invalid"; param["callback"](result); return; } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-6"; result["desc"] = "stopConfUploadWall: The member is leaved."; param["callback"](result); return; } var murl = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/vmdsession"; var majaxCfg = { "type": "GET", "url": murl, "data": null, "callback": function(mdata) { if (mdata["rsp"] == "0") { var requestParam = { "opt": "wallStop", "param": { "layerID": param["layerID"], "owner": param["owner"], "termName": param["termName"] } }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } else { param["callback"]({"rsp": "-1", "desc": ""}); } } } cloudICP.util.ajax(majaxCfg); }; /** * holdConf * @param { * cid: * callback: * } */ ICPSDK_Dispatch_Conf.prototype.holdConf = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "holdConf: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "holdConf: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "holdConf: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "holdConf: The cid is invalid"; param["callback"](result); return; } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-6"; result["desc"] = "holdConf: The current member is leaved."; param["callback"](result); return; } var requestParam = { "opt": "hold", "param": { type: "1", cid: param["cid"], reqId: tabPageId } }; var url = cloudICP.getSdkServerUrl() + "/v1/voicecall/" + cloudICP.userInfo["isdn"]; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { if (data["rsp"] == "0") { cloudICP.util.callStatusMgr.holdMgr.push(param["cid"]); } param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * unholdConf * @param { * cid: * callback: * } */ ICPSDK_Dispatch_Conf.prototype.unholdConf = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "unholdConf: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "unholdConf: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "unholdConf: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "unholdConf: The cid is invalid"; param["callback"](result); return; } if (cloudICP.util.callStatusMgr.currentGoingConf == 0) { result["rsp"] = "-6"; result["desc"] = "unholdConf: The current member is leaved."; param["callback"](result); return; } var callStatusMgr = cloudICP.util.callStatusMgr; if (callStatusMgr.numberOfCall[callStatusMgr.VIDEO] + callStatusMgr.numberOfCall[callStatusMgr.VIDEOCONF] > 0) { result["rsp"] = "-7"; result["desc"] = "unholdConf: There is a video existed"; param["callback"](result); return; } var requestParam = { "opt": "unhold", "param": { type: "1", cid: param["cid"] } }; var url = cloudICP.getSdkServerUrl() + "/v1/voicecall/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { if (data["rsp"] == "0") { cloudICP.util.callStatusMgr.holdMgr.push(param["cid"]); } param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * queryRecordURLByConfID * @param { * confId: * callback: * } */ ICPSDK_Dispatch_Conf.prototype.queryRecordURLByConfID = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "queryRecordURLByConfID: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "queryRecordURLByConfID: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryRecordURLByConfID: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "queryRecordURLByConfID: The confId is invalid"; param["callback"](result); return; } var requestParam = { "opt": "queryRecord", "param": { confId: param["confId"], } }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * queryConfListByAttendee * @param { * number: * callback: * } */ ICPSDK_Dispatch_Conf.prototype.queryConfListByAttendee = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "queryConfListByAttendee: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "queryConfListByAttendee: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryConfListByAttendee: The user does not logined"; param["callback"](result); return; } //check param valid //result["rsp"] = "-2"; // if (!cloudICP.util.checkIsdn(param["number"])) { // result["desc"] = "queryConfListByAttendee: The number is invalid"; // param["callback"](result); // return; // } var requestParam = { "opt": "queryByAttendee", "param": { number: cloudICP.userInfo["isdn"] } }; if (undefined != param["confID"]) { requestParam["param"]["confID"] = param["confID"]; } if (undefined != param["queryType"]) { requestParam["param"]["queryType"] = param["queryType"]; } var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * queryVWallDisplayMatrixInfo * @param { * callback: * } */ ICPSDK_Dispatch_Conf.prototype.queryVWallDisplayMatrixInfo = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "queryVWallDisplayMatrixInfo: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "queryVWallDisplayMatrixInfo: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryVWallDisplayMatrixInfo: The user does not logined"; param["callback"](result); return; } var murl = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/vmdsession" + "?reqId=" + tabPageId; var majaxCfg = { "type": "GET", "url": murl, "data": null, "callback": function(mdata) { if (mdata["rsp"] == "0") { var requestParam = { "opt": "queryVwallDisplay", }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } else { param["callback"]({ "rsp": "-1", "desc": "" }); } } } cloudICP.util.ajax(majaxCfg); }; /** * queryConfWallInfo * @param { * callback: * } */ ICPSDK_Dispatch_Conf.prototype.queryConfWallInfo = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "queryConfWallInfo: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "queryConfWallInfo: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryConfWallInfo: The user does not logined"; param["callback"](result); return; } var murl = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/vmdsession" + "?reqId=" + tabPageId; var majaxCfg = { "type": "GET", "url": murl, "data": null, "callback": function(mdata) { if (mdata["rsp"] == "0") { var requestParam = { "opt": "queryVwallLayer", }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } else { param["callback"]({ "rsp": "-1", "desc": "" }); } } } cloudICP.util.ajax(majaxCfg); }; /** * setChairmanName * @param { * name: , * callback: , * } */ ICPSDK_Dispatch_Conf.prototype.setChairmanName = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "setChairmanName: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "setChairmanName: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "setChairmanName: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!param["name"] || typeof(param["name"]) != "string" || param["name"].length > 32) { result["desc"] = "setChairmanName: The name is invalid"; param["callback"](result); return; } cloudICP.dispatch.conf.chairName = param["name"]; param["callback"]({"rsp": "0", "desc": ""}); }; /** * setSpokenMember * @param { * confId: , * member: , * } */ ICPSDK_Dispatch_Conf.prototype.setSpokenMember = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "setSpokenMember: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "setSpokenMember: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "setSpokenMember: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "setSpokenMember: confId is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkIsdn(param["member"])) { result["desc"] = "setSpokenMember: member is invalid"; param["callback"](result); return; } if (!cloudICP.util.isBool(param["isSpoken"])) { result["desc"] = "setSpokenMember: isSpoken is invalid"; param["callback"](result); return; } var requestParam = { "opt": "SetSpokenMember", "param": { "confId": param["confId"], "member": param["member"], "isSpoken": param["isSpoken"] } }; if (undefined != param["casConfParam"]) { requestParam["param"]["casConfParam"] = param["casConfParam"]; } var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * delConfMember @param { * confId : * memberInfo : { * "number": * } * callback : * } */ ICPSDK_Dispatch_Conf.prototype.delConfMember = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "delConfMember: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "delConfMember: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "delConfMember: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "delConfMember: confId is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkIsdn(param["memberInfo"]["number"])) { result["desc"] = "delConfMember: number is invalid"; param["callback"](result); return; } var requestParam = { "opt": "delMember", "param": { "confId": param["confId"], "memberInfo": param["memberInfo"] } }; if (param["casConfParam"] != undefined) { requestParam["param"]["casConfParam"] = param["casConfParam"]; } var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * proxyFloorGroup * @param { * confId: , * member: , * } */ ICPSDK_Dispatch_Conf.prototype.proxyFloorGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "proxyFloorGroup: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "proxyFloorGroup: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; param["type"] = "0"; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "proxyFloorGroup: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "proxyFloorGroup: confId is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkIsdn(param["member"])) { result["desc"] = "proxyFloorGroup: member is invalid"; param["callback"](result); return; } if (!param["operation"] || typeof param["operation"] != "string") { result["desc"] = "proxyFloorGroup: operation is invalid"; param["callback"](result); return; } var requestParam = { "opt": "proxyFloor", "param": param }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * proxyFloorGateway * @param { * confId: , * member: , * } */ ICPSDK_Dispatch_Conf.prototype.proxyFloorGateway = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "proxyFloorGateway: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "proxyFloorGateway: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; param["type"] = "1"; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "proxyFloorGateway: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "proxyFloorGateway: confId is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkIsdn(param["member"])) { result["desc"] = "proxyFloorGateway: member is invalid"; param["callback"](result); return; } if (!param["operation"] || typeof param["operation"] != "string") { result["desc"] = "proxyFloorGateway: operation is invalid"; param["callback"](result); return; } var requestParam = { "opt": "proxyFloor", "param": param }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * queryContinuousPresenceInfo * @param { * confId: , * member: , * } */ ICPSDK_Dispatch_Conf.prototype.queryContinuousPresenceInfo = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "queryContinuousPresenceInfo: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "queryContinuousPresenceInfo: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryContinuousPresenceInfo: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "queryContinuousPresenceInfo: confId is invalid"; param["callback"](result); return; } var requestParam = { "opt": "queryContinuousPresenceInfo", "param": param }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * AcceptApplyFloor * @param { * confId: , * applier: , * } */ ICPSDK_Dispatch_Conf.prototype.acceptApplyFloor = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "AcceptApplyFloor: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "AcceptApplyFloor: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "AcceptApplyFloor: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "AcceptApplyFloor: confId is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkIsdn(param["applier"])) { result["desc"] = "AcceptApplyFloor: applier is invalid"; param["callback"](result); return; } var requestParam = { "opt": "acceptApplyFloor", "param": param }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * RejectApplyFloor * @param { * confId: , * applier: , * } */ ICPSDK_Dispatch_Conf.prototype.rejectApplyFloor = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "rejectApplyFloor: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "rejectApplyFloor: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "rejectApplyFloor: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "rejectApplyFloor: confId is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkIsdn(param["applier"])) { result["desc"] = "rejectApplyFloor: applier is invalid"; param["callback"](result); return; } var requestParam = { "opt": "rejectApplyFloor", "param": param }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * applyFloor * @param { * confId: , * applier: , * } */ ICPSDK_Dispatch_Conf.prototype.applyFloor = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "applyFloor: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "applyFloor: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "applyFloor: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "applyFloor: confId is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkIsdn(param["applier"])) { result["desc"] = "applyFloor: applier is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkIsdn(param["floorType"])) { result["desc"] = "applyFloor: floorType is invalid"; param["callback"](result); return; } var requestParam = { "opt": "applyFloor", "param": param }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * setChairman 切换会议主席 * @param { * confId: , * applier: , * } */ ICPSDK_Dispatch_Conf.prototype.setChairman = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "setChairman: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "setChairman: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "setChairman: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "applyFloor: confId is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkIsdn(param["applier"])) { result["desc"] = "applyFloor: applier is invalid"; param["callback"](result); return; } var requestParam = { "opt": "setChairman", "param": param }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * prolongConfTime 延长会议时间 * @param { * confId: , * applier: , * } */ ICPSDK_Dispatch_Conf.prototype.prolongConfTime = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "prolongConfTime: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "prolongConfTime: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "prolongConfTime: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "applyFloor: confId is invalid"; param["callback"](result); return; } var body = {}; Object.keys(param).forEach(function (key) { if ("callback" != key) { body[key] = param[key]; } }); var requestParam = { "opt": "prolongConf", "param": body }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/prolong/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function (data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * queryVDCAddressBook 查询VDC通讯录 * @param { * currentPage: , * } */ ICPSDK_Dispatch_Conf.prototype.queryVDCAddressBook = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "queryVDCAddressBook: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "queryVDCAddressBook: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryVDCAddressBook: The user does not logined"; param["callback"](result); return; } var requestParam = { "opt": "vdcaddressbook", "param": param }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]+ "/vdcaddressbook"; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function (data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * queryConfereeAddressBook 查询与会通讯录 * @param { * querytype: , * } */ ICPSDK_Dispatch_Conf.prototype.queryConfereeAddressBook = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "queryConfereeAddressBook: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "queryConfereeAddressBook: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryConfereeAddressBook: The user does not logined"; param["callback"](result); return; } if (undefined == param["querytype"]) { param["querytype"] = "users"; } var requestParam = { "opt": "queryaddressbook", "param": param }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function (data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * queryConferenceList() query Conference list * @param {Object} param { * "callback": , * } */ ICPSDK_Dispatch_Conf.prototype.queryConferenceList = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryConferenceList": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryConferenceList": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryConferenceList: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; var requestParam = { "opt": "queryConferenceList", "param": {} }; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "async": true, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * queryConferenceInfo() query Conference list * @param {Object} param { * "confId": , * "callback": , * } */ ICPSDK_Dispatch_Conf.prototype.queryConferenceInfo = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryConferenceInfo": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryConferenceInfo": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryConferenceInfo: User not logged."; param["callback"](result); return; } if ("" == param["confId"] || undefined == param["confId"]) { result["desc"] = "queryConferenceInfo: confId is null."; param["callback"](result); return; } result["rsp"] = "-2"; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; var body = {}; Object.keys(param).forEach(function (key) { if ("callback" != key) { body[key] = param[key]; } }); var requestParam = { "opt": "queryConferenceInfo", "param": body }; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "async": true, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * lockVideoSource 锁定视频源 * @param { * confId: , * memberInfos: { * number: , * isLock: , * } * } */ ICPSDK_Dispatch_Conf.prototype.lockVideoSource = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "lockVideoSource: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "lockVideoSource: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "lockVideoSource: The user does not logined"; param["callback"](result); return; } var requestParam = { "opt": "lockVideoSource", "param": param }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function (data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * lockConf 锁定会议 * @param { * confId: , * isLock: , * } * } */ ICPSDK_Dispatch_Conf.prototype.lockConf = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "lockConf: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "lockConf: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "lockConf: The user does not logined"; param["callback"](result); return; } var requestParam = { "opt": "lockConf", "param": param }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function (data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * queryConferenceById 根据外部会议ID查询内部会议ID * @param { * confCode: , * requireConfCtrl: , * } * } */ ICPSDK_Dispatch_Conf.prototype.queryConferenceById = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "queryConferenceById: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "queryConferenceById: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryConferenceById: The user does not logined"; param["callback"](result); return; } var requestParam = { "opt": "queryConferenceById", "param": param }; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function (data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * modConf 修改会议 * @param { * confID: , * time: 预约会议时间, * timeZone: 时区ID, * timeZoneName: 时区名 * } * @returns */ ICPSDK_Dispatch_Conf.prototype.modConf = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "modConf: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "modConf: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "modConf: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confInfo"]["confID"])) { result["desc"] = "modConf: confId is invalid"; param["callback"](result); return; } if (undefined == param["confInfo"]["time"] || undefined == param["confInfo"]["timeZone"] || undefined == param["confInfo"]["timeZoneName"]) { result["desc"] = "modConf: time/timeZone/timeZoneName is invalid"; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; var tmpMemberInfos = param["memberInfos"].slice(); var requestParam = { "opt": "modify", "param": { "confInfo": { "isVideo": param["confInfo"]["isVideo"], "isRecorded": "false", "confrate": param["confInfo"]["confRate"], "confID" : param["confInfo"]["confID"] }, "memberInfos": tmpMemberInfos } }; if (undefined != param["confInfo"]["time"]) { requestParam["param"]["confInfo"]["time"] = param["confInfo"]["time"]; } if (undefined != param["confInfo"]["timeZone"]) { requestParam["param"]["confInfo"]["timeZone"] = param["confInfo"]["timeZone"]; } if (undefined != param["confInfo"]["timeZoneName"]) { requestParam["param"]["confInfo"]["timeZoneName"] = param["confInfo"]["timeZoneName"]; } if (undefined != param["casConfParam"]) { requestParam["param"]["casConfParam"] = param["casConfParam"]; } requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } }; cloudICP.util.ajax(ajaxCfg); }; /** * delConf * @param { * confId : * callback : * } */ ICPSDK_Dispatch_Conf.prototype.delConf = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "delConf: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "delConf: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "delConf: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "delConf: confId is invalid"; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; var requestParam = { "opt": "delete", "param": param }; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { if (data["rsp"] == "0") { var confInfo = cloudICP.util.callStatusMgr.confMgr[param["confId"]]; // TODO if (confInfo) { confInfo["isEnding"] = true; } } param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * query cas conferences information 查询级联会议信息 * @param {*} param * @returns */ ICPSDK_Dispatch_Conf.prototype.queryCasConfInfos = function(param) { if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log({ "logLevel": "error", "queryCasConfInfos": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log({ "logLevel": "error", "queryCasConfInfos": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryCasConfInfos: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; var requestParam = { "opt": "queryCasConfInfos", "param":{ "confId": param["confId"] } }; var ajaxCfg = { "type": "POST", "url": url, "async": true, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * Querying the link for joining a conference 查询会议的入会链接 * @param {*} param * @returns */ ICPSDK_Dispatch_Conf.prototype.queryConfURL = function(param) { if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log({ "logLevel": "error", "queryConfURL": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log({ "logLevel": "error", "queryConfURL": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryConfURL: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "joinConf: confId is invalid"; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; var requestParam = { "opt": "queryConfURL", "param":{ "confId": param["confId"] } }; var ajaxCfg = { "type": "POST", "url": url, "async": true, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * queryOrgTree 查询组织树 * @param {*} param * @returns */ ICPSDK_Dispatch_Conf.prototype.queryOrgTree = function(param) { if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log({ "logLevel": "error", "queryOrgTree": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log({ "logLevel": "error", "queryOrgTree": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryOrgTree: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; var requestParam = { "opt": "queryOrgTree", "param":{ "placeholder": "no param needed" } }; var ajaxCfg = { "type": "POST", "url": url, "async": true, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * queryAreaOrgInfo 查询SMC信息 * @param {*} param * @returns */ ICPSDK_Dispatch_Conf.prototype.queryAreaOrgInfo = function(param) { if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log({ "logLevel": "error", "queryAreaOrgInfo": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log({ "logLevel": "error", "queryAreaOrgInfo": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryAreaOrgInfo: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; var requestParam = { "opt": "queryAreaOrgInfo", "param": param }; var ajaxCfg = { "type": "POST", "url": url, "async": true, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; function ICPSDK_Dispatch_Device() { this.isDTMFDone = true; }; /* * 设置会议字幕、横幅或短消息 * { * "opt": "setTextTips", "param": { "confId", "content", "type", "opType", "disPosition", "displayType" } * } */ ICPSDK_Dispatch_Conf.prototype.setTextTips = function(param) { cloudICP.util.LogInputParam(param); // 记录输入参数 var tabPageId = param.tabPageId; // 处理传入的参数,若 `param["value"]` 存在则赋值给 `param` if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "setTextTips: param is invalid" }); return; } // 验证 callback 是否为函数 if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "setTextTips: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; // 检查用户是否已登录 if (!cloudICP.userInfo["isdn"]) { result["desc"] = "setTextTips: The user is not logged in"; param["callback"](result); return; } // 验证 confId 是否有效 result["rsp"] = "-2"; if (!cloudICP.util.checkConfId(param["confId"])) { result["desc"] = "setTextTips: confId is invalid"; param["callback"](result); return; } // 验证 content 字段的长度是否合规 if (!param["content"] || param["content"].length > 2048) { result["desc"] = "setTextTips: content is invalid or too long"; param["callback"](result); return; } // 构建请求参数 var requestParam = { "opt": "setTextTips", "param": { "confId": param["confId"], "content": param["content"], // 设置的字幕或横幅内容 "type": param["type"] || "0", // 类型:字幕(0),横幅(1),短消息(2),默认0 "opType": param["opType"] || "SET", // 操作类型,枚举 SAVE,SET,CANCEL "disPosition": param["disPosition"] || "1", // 位置:顶部(1),中部(2),底部(3),默认1 "displayType": param["displayType"] || "1" // 显示方式,默认从下向上 } }; // 若有其他参数则附加 if (undefined != param["casConfParam"]) { requestParam["param"]["casConfParam"] = param["casConfParam"]; } // 构建请求的 URL var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; // 添加请求ID // 配置 AJAX 请求 var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } }; // 发送请求 cloudICP.util.ajax(ajaxCfg); }; function ICPSDK_Dispatch_Device() { this.isDTMFDone = true; this.recordsArr = []; }; /** * muteSpeaker * @param {Object} param { * cid: * callback: , * } */ ICPSDK_Dispatch_Device.prototype.muteSpeaker = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "muteSpeaker: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "muteSpeaker: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "muteSpeaker: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (param["cid"] != "-1") { if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "muteSpeaker: The cid is invalid"; param["callback"](result); return; }; } var meidaSDKparam = "{\"description\":\"msp_quite_audio_channel\", \"cmd\": 65543, \"param\":{\"resID\": {0}, \"quiet\":true}, \"reqId\":\"{1}\"}" .format( parseInt(param["cid"]), tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); } /** * unmuteSpeaker * @param {Object} param { * cid: * callback: , * } */ ICPSDK_Dispatch_Device.prototype.unmuteSpeaker = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "unmuteSpeaker: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "unmuteSpeaker: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "unmuteSpeaker: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (param["cid"] != "-1") { if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "unmuteSpeaker: The cid is invalid"; param["callback"](result); return; }; } var meidaSDKparam = "{\"description\":\"msp_quite_audio_channel\", \"cmd\": 65543, \"param\":{\"resID\": {0}, \"quiet\":false}, \"reqId\":\"{1}\"}" .format( parseInt(param["cid"]), tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); } /** * muteGroup * @param {Object} param { * cid: * callback: , * } */ ICPSDK_Dispatch_Device.prototype.muteGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "muteGroup: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "muteGroup: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "muteGroup: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= cloudICP.dispatch.group.MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= cloudICP.dispatch.group.MAX_DYNAMICGROUP_ID))) { result["rsp"] = "-2"; result["desc"] = "muteGroup: grpid is invalid."; param["callback"](result); return; } if(cloudICP.util.includes(cloudICP.grpList, param["grpid"])){ result["rsp"] = "-4"; result["desc"] = "muteGroup: This group has been muted."; param["callback"](result); cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "muteGroup: This group has been muted" }); return; } if(undefined != cloudICP.grpCidList[param["grpid"]]){ if(cloudICP.grpCidList[param["grpid"]] != "-1"){ var meidaSDKparam = "{\"description\":\"msp_quite_audio_channel\", \"cmd\": 65543, \"param\":{\"resID\": {0}, \"peerID\": {0}, \"quiet\":true}}".format( parseInt(cloudICP.grpCidList[param["grpid"]]), parseInt(param["grpid"]) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); } } cloudICP.grpList.push(param["grpid"]); param["callback"]({"rsp": "0", "desc": ""}); } /** * unmuteGroup * @param {Object} param { * cid: * callback: , * } */ ICPSDK_Dispatch_Device.prototype.unmuteGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "unmuteGroup: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "unmuteGroup: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "unmuteGroup: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= cloudICP.dispatch.group.MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= cloudICP.dispatch.group.MAX_DYNAMICGROUP_ID))) { result["rsp"] = "-2"; result["desc"] = "unmuteGroup: grpid is invalid."; param["callback"](result); return; } if(!cloudICP.util.includes(cloudICP.grpList, param["grpid"])){ result["rsp"] = "-4"; result["desc"] = "unmuteGroup: The Group does not muted."; param["callback"](result); cloudICP.util.log(tabPageId, { "logLevel": "info", "logMsg": "unmuteGroup: The Group does not muted" }); return; } if(undefined != cloudICP.grpCidList[param["grpid"]]){ if(cloudICP.grpCidList[param["grpid"]] != "-1"){ var meidaSDKparam = "{\"description\":\"msp_quite_audio_channel\", \"cmd\": 65543, \"param\":{\"resID\": {0}, \"peerID\": {0}, \"quiet\":false}}".format( parseInt(cloudICP.grpCidList[param["grpid"]]), parseInt(param["grpid"]) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); } } for (var index = 0; index < cloudICP.grpList.length; index++) { if (cloudICP.grpList[index] == param["grpid"]) { cloudICP.grpList.splice(index); index--; } } param["callback"]({"rsp": "0", "desc": ""}); } /** * setGroupVolume * @param {Object} param { * cid: , * volume: , * callback: , * } */ ICPSDK_Dispatch_Device.prototype.setGroupVolume = function (param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "setGroupVolume: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "setGroupVolume: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "setGroupVolume: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!param["grpid"]) { result["desc"] = "setGroupVolume: The grpid is invalid"; param["callback"](result); return; } if (param["grpid"] != "-1") { if (!cloudICP.util.checkGroupID(param["grpid"])) { result["desc"] = "setGroupVolume: The grpid is invalid"; param["callback"](result); return; }; } if (!param["volume"]) { result["desc"] = "setGroupVolume: The volume is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkRate(param["volume"])) { result["desc"] = "setGroupVolume: The volume is not number"; param["callback"](result); return; } if (parseInt(param["volume"]).toString() != param['volume']) { result["desc"] = "setGroupVolume: The volume is not Integer"; param["callback"](result); return; } var meidaSDKparam = "{\"description\":\"msp_set_audio_Volume\", \"cmd\": 65545, \"param\":{\"resID\": -1, \"peerID\": {0}, \"newVolume\": {1} }}".format( parseInt(param["grpid"]), parseFloat(param["volume"]) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); }; /** * muteMic * @param {Object} param { * cid: * callback: , * } */ ICPSDK_Dispatch_Device.prototype.muteMic = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "muteMic: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "muteMic: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "muteMic: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (param["cid"] != "-1") { if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "muteMic: The cid is invalid"; param["callback"](result); return; }; } var meidaSDKparam = "{\"description\":\"msp_mute_audio_channel\", \"cmd\": 65542, \"param\":{\"resID\": {0}, \"mute\":true}, \"reqId\":\"{1}\"}" .format( parseInt(param["cid"]), tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); } /** * unmuteMic * @param {Object} param { * cid: * callback: , * } */ ICPSDK_Dispatch_Device.prototype.unmuteMic = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "unmuteMic: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "unmuteMic: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "unmuteMic: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (param["cid"] != "-1") { if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "unmuteMic: The cid is invalid"; param["callback"](result); return; }; } var meidaSDKparam = "{\"description\":\"msp_mute_audio_channel\", \"cmd\": 65542, \"param\":{\"resID\": {0}, \"mute\":false}, \"reqId\":\"{1}\"}" .format( parseInt(param["cid"]), tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); } /** * 二次拨号 */ ICPSDK_Dispatch_Device.prototype.sendDTMF = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "sendDTMF: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "sendDTMF: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "sendDTMF: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "sendDTMF: The cid is invalid"; param["callback"](result); return; }; if (!param["function"]) { result["desc"] = "sendDTMF: The function is not exist"; param["callback"](result); return; } if (!cloudICP.dispatch.device.isDTMFDone) { result["rsp"] = "-4"; result["desc"] = "sendDTMF: last operation is not finished"; param["callback"](result); return; } else { cloudICP.dispatch.device.isDTMFDone = false; } var meidaSDKparam = "{\"description\":\"msp_dial_again\", \"cmd\": 65548, \"param\":{\"resID\": {0}, \"functionCode\":\"{1}\"}, \"reqId\":\"{2}\"}" .format( parseInt(param["cid"]), param["function"], tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); } /** * getSoundDevice * @param {Object} param { * callback: , * } */ ICPSDK_Dispatch_Device.prototype.getSoundDevice = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "getSoundDevice: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "getSoundDevice: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "getSoundDevice: The user does not logined"; param["callback"](result); return; } var meidaSDKparam = "{\"description\":\"msp_get_audio_dev\", \"cmd\": 131077, \"reqId\": \"{0}\"}" .format( tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); }; /** * getVolume * @param {Object} param { * cid: , * callback: , * } */ ICPSDK_Dispatch_Device.prototype.getVolume = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "getVolume: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "getVolume: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "getVolume: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (param["cid"] != "-1") { if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "getVolume: The cid is invalid"; param["callback"](result); return; }; } var meidaSDKparam = "{\"description\":\"msp_get_audio_volume\", \"cmd\": 65544, \"param\":{\"resID\": {0} }, \"reqId\":\"{1}\"}" .format( parseInt(param["cid"]), tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); }; /** * setVolume * @param {Object} param { * cid: , * volume: , * callback: , * } */ ICPSDK_Dispatch_Device.prototype.setVolume = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "setVolume: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "setVolume: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "setVolume: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (param["cid"] != "-1") { if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "setVolume: The cid is invalid"; param["callback"](result); return; }; } if (!param["volume"]) { result["desc"] = "setVolume: The volume is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkRate(param["volume"])) { result["desc"] = "setVolume: The volume is not number"; param["callback"](result); return; } if (parseInt(param["volume"]).toString() != param['volume']) { result["desc"] = "setVolume: The volume is not Integer"; param["callback"](result); return; } var meidaSDKparam = "{\"description\":\"msp_set_audio_Volume\", \"cmd\": 65545, \"param\":{\"resID\": {0}, \"newVolume\": {1} }, \"reqId\":\"{2}\"}" .format( parseInt(param["cid"]), parseFloat(param["volume"]), tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); }; /** * setRingVolume * @param {Object} param { * cid: , * volume: , * callback: , * } */ ICPSDK_Dispatch_Device.prototype.setRingVolume = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "setRingVolume: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "setRingVolume: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "setRingVolume: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!param["volume"]) { result["desc"] = "setRingVolume: The volume is invalid"; param["callback"](result); return; } if(!cloudICP.util.checkRate(param["volume"])){ result["desc"] = "setRingVolume: The volume is not number"; param["callback"](result); return; } if(parseInt(param["volume"]).toString() != param['volume']){ result["desc"] = "setRingVolume: The volume is not Integer"; param["callback"](result); return; } var meidaSDKparam = "{\"description\":\"msp_set_ring_Volume\", \"cmd\": 131082, \"param\":{\"newVolume\": {0} }}".format( parseFloat(param["volume"]) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({"rsp": "0", "desc": ""}); }; /** * assignSoundDevice * @param {Object} param { * cid: , * number:, * outputDev: , * inputDev: , * callback: , * } */ ICPSDK_Dispatch_Device.prototype.assignSoundDevice = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "assignSoundDevice: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "assignSoundDevice: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "assignSoundDevice: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (param["cid"] != "-1") { if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "assignSoundDevice: The cid is invalid"; param["callback"](result); return; }; // var call = cloudICP.util.callStatusMgr.allCalls[param["cid"]]; // if (!call || call.callState != cloudICP.util.callStatusMgr.CONNECTING) { // result["desc"] = "assignSoundDevice: The cid is invalid"; // param["callback"](result); // return; // } } if (param["number"] != "conference") { if (!cloudICP.util.checkIsdn(param["number"])) { result["desc"] = "assignSoundDevice: The number is invalid"; param["callback"](result); return; } } if (!param["outputDev"] && !param["inputDev"]) { result["desc"] = "assignSoundDevice: The inputDev or outputDev is invalid"; param["callback"](result); return; } else if (!param["outputDev"]) { param["outputDev"] = ""; } else if (!param["inputDev"]) { param["inputDev"] = ""; } var meidaSDKparam = "{\"description\":\"msp_assign_sound_device\", \"cmd\": 65546, \"param\":{\"resID\": {0}, \"number\": \"{1}\", \"mediaInfo\":{\"outputDev\":\"{2}\", \"inputDev\": \"{3}\" }}, \"reqId\":\"{4}\"}" .format( parseInt(param["cid"]), param["number"], param["outputDev"], param["inputDev"], tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); }; /** * querySoundDevice * @param {Object} param { * callback: , * } */ ICPSDK_Dispatch_Device.prototype.querySoundDevice = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "querySoundDevice: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "querySoundDevice: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "querySoundDevice: The user does not logined"; param["callback"](result); return; } var meidaSDKparam = "{\"description\":\"msp_query_sound_device\", \"cmd\": 65547 , \"reqId\": \"{0}\"}" .format( tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); }; /** * queryCameraAbility * @param {Object} param { * callback: , * } */ ICPSDK_Dispatch_Device.prototype.queryCameraAbility = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "queryCameraAbility: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "queryCameraAbility: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryCameraAbility: The user does not logined"; param["callback"](result); return; } if (undefined == cloudICP.config["cameraInfo"]) { result["rsp"] = "-4"; result["desc"] = "queryCameraAbility: The camera info is lost."; param["callback"](result); return; } param["callback"]({ "rsp": "0", "desc": "", "camera_ability": cloudICP.config["cameraInfo"] }); }; /** * stopPlayTone * @param {Object} param { * callback: , * } */ ICPSDK_Dispatch_Device.prototype.stopPlayTone = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "stopPlayTone: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "stopPlayTone: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "stopPlayTone: The user does not logined"; param["callback"](result); return; } // 停止振铃 var reqParam = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}, \"reqId\":\"{1}\"}".format( parseInt("0"), tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(reqParam, true); param["callback"]({ "rsp": "0", "desc": "" }); }; /** * getVersion * @param {Object} param { * callback: , * } */ ICPSDK_Dispatch_Device.prototype.getVersion = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "getVersion: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "getVersion: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "getVersion: The user does not logined"; param["callback"](result); return; } param["callback"]({ "rsp": "0", "desc": "", "versions": { "mspVersion": cloudICP.userInfo["mspVersion"], "sdkVersion": cloudICP.userInfo["sdkVersion"], "serverVersion": cloudICP.userInfo["serverVersion"] } }); }; /** * getMspVersion * @param {Object} param { * callback: , * } */ ICPSDK_Dispatch_Device.prototype.getMspVersion = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "getMspVersion: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "getMspVersion: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; param["callback"]({ "rsp": "0", "desc": "", "versions": { "mspVersion": cloudICP.userInfo["mspVersion"] } }); }; /** * initMRS * @param {Object} param { * mrsIp: , * callback: , * } */ ICPSDK_Dispatch_Device.prototype.initMRS = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "initMRS: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "initMRS: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "initMRS: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIp(param["mrsIp"])) { result["desc"] = "initMRS: The mrsIp is invalid"; param["callback"](result); return; } // 初始化录音录像查询 var ajaxReq = { "type": "PUT", "url": cloudICP.getSdkServerUrl() + "/v1/register/" + cloudICP.userInfo["isdn"] + "/initmrs", "async": false, "data": { "mrsServerIP": param["mrsIp"], }, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxReq); }; /** * forceInit * @param {Object} param { * callback: , * } */ ICPSDK_Dispatch_Device.prototype.forceInitMSP = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "forceInitMSP: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "forceInitMSP: callback is not a function" }); return; } cloudICP.dispatch.webSocket._medisServerWs.send('ForceLogin'); param["callback"]({ "rsp": "0", "desc": "" }); }; /** * hideVideoWindow * @param {Object} param { * callback: , * } */ ICPSDK_Dispatch_Device.prototype.hideVideoWindow = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "hideVideoWindow: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "hideVideoWindow: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (param["cid"] != "-1") { if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "hideVideoWindow: The cid is invalid"; param["callback"](result); return; }; } var meidaSDKparam = "{\"description\":\"hide_video_window\", \"cmd\": 196616, \"param\":{\"cid\": {0}}, \"reqId\":\"{1}\"}".format( parseInt(param["cid"]), tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); }; /** * windowOnTop * @param {Object} param { * callback: , * } */ ICPSDK_Dispatch_Device.prototype.windowOnTop = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "windowOnTop: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "windowOnTop: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (param["cid"] != "-1") { if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "windowOnTop: The cid is invalid"; param["callback"](result); return; }; } var meidaSDKparam = "{\"description\":\"msp_window_top\", \"cmd\": 196614, \"param\":{\"cid\": {0}, \"isOnTop\": {1}}, \"reqId\":\"{1}\"}".format( parseInt(param["cid"]), param["isOnTop"], tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); }; /** * windowDragEnable * @param {Object} param { * callback: , * } */ ICPSDK_Dispatch_Device.prototype.windowDragEnable = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "windowDragEnable: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "windowDragEnable: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (param["cid"] != "-1") { if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "windowDragEnable: The cid is invalid"; param["callback"](result); return; }; } var meidaSDKparam = "{\"description\":\"msp_window_set_enable_drag\", \"cmd\": 196615, \"param\":{\"cid\": {0}, \"isDrag\": {1}}, \"reqId\":\"{2}\"}" .format( parseInt(param["cid"]), param["isDrag"], tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); }; /** * showWindowBorder * @param {Object} param { * resID: , * border: , * callback: , * } */ ICPSDK_Dispatch_Device.prototype.showWindowBorder = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "getResolution: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "getResolution: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "initMRS: The user does not logined"; param["callback"](result); return; } if (!param["resID"] && !param["cid"]) { result["desc"] = "monitorVideo: The resID is invalid"; param["callback"](result); return; } result["rsp"] = "-2"; var meidaSDKparam = { "description": "show_window_border", "cmd": 196617, "param": param } cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); }; /** * setWindowInfo * @param {Object} param { * cid:, * windowInfo: { * width: * height: * posX: * posY: * }, * callback: , * } */ ICPSDK_Dispatch_Device.prototype.setWindowInfo = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "setWindowInfo: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "setWindowInfo: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "initMRS: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "setWindowInfo: The cid is invalid"; param["callback"](result); return; } var call = cloudICP.util.callStatusMgr.allCalls[param["cid"]]; if (call && call.callState != cloudICP.util.callStatusMgr.CONNECTING) { result["desc"] = "setWindowInfo: The cid is invalid"; param["callback"](result); return; } var videoInfo = cloudICP.util.callStatusMgr.videoMediaInfoBuf[param["cid"]]; if (videoInfo == undefined) { result["desc"] = "setWindowInfo: The cid is invalid"; param["callback"](result); return; } if (param["windowInfo"] != undefined) { if (!cloudICP.util.isNumber(param["windowInfo"]["width"]) || param["windowInfo"]["width"] > 2147483647) { result["desc"] = "setWindowInfo: The width is invalid"; param["callback"](result); return; } if (!cloudICP.util.isNumber(param["windowInfo"]["height"]) || param["windowInfo"]["width"] > 2147483647) { result["desc"] = "setWindowInfo: The height is invalid"; param["callback"](result); return; } if (!cloudICP.util.isNumber(param["windowInfo"]["posX"]) || param["windowInfo"]["width"] > 2147483647) { result["desc"] = "setWindowInfo: The posX is invalid"; param["callback"](result); return; } if (!cloudICP.util.isNumber(param["windowInfo"]["posY"]) || param["windowInfo"]["width"] > 2147483647) { result["desc"] = "setWindowInfo: The posY is invalid"; param["callback"](result); return; } var callStatusMgr = cloudICP.util.callStatusMgr; if (undefined != callStatusMgr.windowInfos[param["cid"]]) { callStatusMgr.windowInfos[param["cid"]]["width"] = param["windowInfo"]["width"]; callStatusMgr.windowInfos[param["cid"]]["height"] = param["windowInfo"]["height"]; callStatusMgr.windowInfos[param["cid"]]["posX"] = param["windowInfo"]["posX"]; callStatusMgr.windowInfos[param["cid"]]["posY"] = param["windowInfo"]["posY"]; } var windowInfo = param["windowInfo"]; } var meidaSDKparam = "{\"description\":\"modify_window\", \"cmd\": 196611, \"param\":{\"cid\": {0}, \"width\": {1}, \"height\": {2}, \"x\": {3}, \"y\": {4}}, \"reqId\":\"{5}\"}" .format( parseInt(param["cid"]), parseInt(windowInfo["width"]), parseInt(windowInfo["height"]), parseInt( windowInfo["posX"]), parseInt(windowInfo["posY"]), tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); }; /** * getResolution * @param {Object} param { * callback: , * } */ ICPSDK_Dispatch_Device.prototype.getResolution = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "getResolution: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "getResolution: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "initMRS: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; var meidaSDKparam = "{\"description\":\"get_screen_resolution\", \"cmd\": 196612, \"param\":{}, \"reqId\": \"{0}\"}" .format( tabPageId ); cloudICP.dispatch.webSocket.sendDataToDeamonSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); }; /** * 截图 */ ICPSDK_Dispatch_Device.prototype.snapshot = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "snapshot: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "snapshot: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "snapshot: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "snapshot: The cid is invalid"; param["callback"](result); return; }; if (!param["SnapshotPath"]) { result["desc"] = "snapshot: The SnapshotPath is not exist"; param["callback"](result); return; } if (!param["SnapshotFormat"]) { param["SnapshotFormat"] = "bmp" } // 截图 var meidaSDKparam = "{\"description\":\"msp_snapshot\", \"cmd\": 65552, \"param\":{\"cid\": {0}, \"SnapshotPath\": \"{1}\", \"SnapshotFormat\":\"{2}\"}, \"reqId\":\"{3}\"}" .format( parseInt(param["cid"]), param["SnapshotPath"], param["SnapshotFormat"], tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); } /** * 设置本地录音录像存储路径 */ ICPSDK_Dispatch_Device.prototype.setLocalRecordParam = function(param) { cloudICP.util.LogInputParam(param); var tabPageId; if (undefined == param.tabPageId){ tabPageId = 0; } else { tabPageId = param.tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "setLocalRecordParam: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "setLocalRecordParam: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "setLocalRecordParam: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; var localRecordPath = ""; var localRecordMinDiskCap; if (undefined != param["localRecordPath"]) { localRecordPath = param["localRecordPath"]; } else { localRecordPath = cloudICP.config["localRecordPath"]; } if (undefined != param["localRecordMinDiskCap"]) { localRecordMinDiskCap = param["localRecordMinDiskCap"]; } else { localRecordMinDiskCap = cloudICP.config["localRecordMinDiskCap"]; } localRecordPath = localRecordPath.replaceAll('\\','/'); // 设置本地录音录像存储路径 var meidaSDKparam = "{\"description\":\"set_LocalRecordParam\", \"cmd\": 65558, \"param\":{\"localRecordPath\":\"{0}\",\"localRecordMinDiskCap\":{1}, \"userId\":\"{2}\"}, \"reqId\":\"{3}\"}" .format( localRecordPath, localRecordMinDiskCap, cloudICP.userInfo["isdn"], tabPageId); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); function handleSetLocalRecordCallbackMsg(data) { var backMsg = {}; backMsg["rsp"] = data["result"]; backMsg["desc"] = ""; if (5 == data["result"]) { backMsg["desc"] = "setRecordMinDiskCap failed: Actual free disk space is insufficient."; } else if(0 == data["result"]) { backMsg["desc"] = ""; } param["callback"](backMsg); } cloudICP.dispatch.webSocket._mediaSdkRspFuncs["65558"] = handleSetLocalRecordCallbackMsg; } /** * 开始录音录像 */ ICPSDK_Dispatch_Device.prototype.startLocalRecord = function(param) { cloudICP.util.LogInputParam(param); var tabPageId; if (undefined == param.tabPageId){ tabPageId = 0; } else { tabPageId = param.tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "startLocalRecord: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "startLocalRecord: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "startLocalRecord: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "startLocalRecord: The cid is invalid"; param["callback"](result); return; }; if (-1 < cloudICP.dispatch.device.recordsArr.indexOf(param["cid"])) { result["rsp"] = "3"; result["desc"] = "startLocalRecord: The current recording task is in progress."; param["callback"](result); return; } if (!param["Type"]) { result["desc"] = "startLocalRecord: The Type is not exist"; param["callback"](result); return; } // 开始录像 var meidaSDKparam = "{\"description\":\"start_LocalRecord\", \"cmd\": 65553, \"param\":{\"cid\": {0}, \"Type\": {1}, \"autoDelete\": {2}, \"userId\":\"{3}\"}, \"reqId\":\"{3}\"}" .format( parseInt(param["cid"]), param["Type"], param["autoDelete"], cloudICP.userInfo["isdn"],tabPageId ); function handleStartLocalRecordCallbackMsg(data) { var backMsg = {}; var iNum = cloudICP.dispatch.device.recordsArr.indexOf(param["cid"]); backMsg["rsp"] = data["result"]; backMsg["desc"] = ""; if (3 == data["result"]) { backMsg["desc"] = "The business conversation does not exist."; cloudICP.dispatch.device.recordsArr.splice(iNum,1); }else if(8 == data["result"]){ backMsg["desc"] = "Insufficient partition space of the local hard disk."; cloudICP.dispatch.device.recordsArr.splice(iNum,1); } param["callback"](backMsg); } cloudICP.dispatch.webSocket._mediaSdkRspFuncs["65553"] = handleStartLocalRecordCallbackMsg; cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); cloudICP.dispatch.device.recordsArr.push(param["cid"]); } /** * 关闭录音录像 */ ICPSDK_Dispatch_Device.prototype.stopLocalRecord = function(param) { cloudICP.util.LogInputParam(param); var tabPageId; if (undefined == param.tabPageId){ tabPageId = 0; } else { tabPageId = param.tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "stopLocalRecord: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "stopLocalRecord: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "stopLocalRecord: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "stopLocalRecord: The cid is invalid"; param["callback"](result); return; }; var iNum = cloudICP.dispatch.device.recordsArr.indexOf(param["cid"]); if (-1 == iNum) { result["rsp"] = "3"; result["desc"] = "stopLocalRecord: Not recording task of this cid in progress."; param["callback"](result); return; } var meidaSDKparam = "{\"description\":\"stop_LocalRecord\", \"cmd\": 65554, \"param\":{\"cid\": {0}}, \"reqId\":\"{1}\"}".format( parseInt(param["cid"]), tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); cloudICP.dispatch.device.recordsArr.splice(iNum,1); param["callback"]({ "rsp": "0", "desc": "" }); } /** * playAudioShortMsg * @param {Object} param { * callback: , * } */ ICPSDK_Dispatch_Device.prototype.playAudioShortMsg = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "playAudioShortMsg: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "playAudioShortMsg: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; result["rsp"] = "-2"; if (!param["audioMsg"]) { result["desc"] = "The audioMsg is invalid"; param["callback"](result); return; } var meidaSDKparam = "{\"description\":\"msp_play_audio_shortMsg\", \"cmd\": 131081, \"param\":{\"audioMsg\": \"{0}\"}, \"reqId\":\"{1}\"}".format( param["audioMsg"], tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); }; /** * createWindow 创建用户视频窗口 * @param {Object} param { * callback: , * } */ ICPSDK_Dispatch_Device.prototype.createWindow = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param || undefined == param["windowInfo"]) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "createWindow: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "createWindow: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] += "The user does not logined"; param["callback"](result); return; } if (undefined == param["windowInfo"]["width"] || !cloudICP.util.isNumber(param["windowInfo"]["width"]) || param[ "windowInfo"]["width"] > 2147483647) { result["desc"] += "createWindow: The width is invalid, use defult value 400; "; param["windowInfo"]["width"] = 400; } if (undefined == param["windowInfo"]["height"] || !cloudICP.util.isNumber(param["windowInfo"]["height"]) || param["windowInfo"]["height"] > 2147483647) { result["desc"] += "createWindow: The height is invalid, use defult value 225; "; param["windowInfo"]["height"] = 225; } if (undefined == param["windowInfo"]["posX"] || !cloudICP.util.isNumber(param["windowInfo"]["posX"]) || param[ "windowInfo"]["posX"] > 2147483647) { result["desc"] += "createWindow: The posX is invalid, use defult value 400; "; param["windowInfo"]["posX"] = 400; } if (undefined == param["windowInfo"]["posY"] || !cloudICP.util.isNumber(param["windowInfo"]["posY"]) || param[ "windowInfo"]["posY"] > 2147483647) { result["desc"] += "createWindow: The posY is invalid, use defult value 400; "; param["windowInfo"]["posY"] = 400; } if (undefined == param["windowInfo"]["showToolbar"] || !cloudICP.util.isNumber(param["windowInfo"][ "showToolbar" ]) || param["windowInfo"]["showToolbar"] > 255) { result["desc"] += "createWindow: The showToolbar is invalid, use defult value 1; "; param["windowInfo"]["showToolbar"] = 1; } if (undefined == param["windowInfo"]["buttonIDs"] || !cloudICP.util.isNumber(param["windowInfo"][ "buttonIDs" ]) || param["windowInfo"]["buttonIDs"] > 255) { result["desc"] += "createWindow: The buttonIDs is invalid, use defult value 0; "; param["windowInfo"]["buttonIDs"] = 0; } if (undefined == param["windowInfo"]["hide"]) { result["desc"] += "createWindow: The hide is invalid, use defult value false; "; param["windowInfo"]["hide"] = false; } if (undefined == param["windowInfo"]["enableDrag"]) { result["desc"] += "createWindow: The enableDrag is invalid, use defult value true; "; param["windowInfo"]["enableDrag"] = true; } result["rsp"] = "-2"; var userWindowId = cloudICP.util.getUserWindowId(); var userWindowName = ""; if (!param["windowInfo"]["windowName"]) { userWindowName = userWindowId.toString(); } var iResult = cloudICP.util.checkUserWindowId(userWindowId, "create"); if (0 == iResult) { result["desc"] = "createWindow: The userWindowId is invalid"; param["callback"](result); return; } else if (2 == iResult) { result["desc"] = "createWindow: The userWindowId is used, created user window."; param["callback"](result); return; } var videoResizeMode = cloudICP.config["videoResizeMode"]; if (undefined != param["windowInfo"]["videoResizeMode"]) { videoResizeMode = param["windowInfo"]["videoResizeMode"]; } var meidaSDKparam = "{\"description\":\"msp_create_video_window\", \"cmd\": 196610, \"param\":{\"userWindowId\":{0}, \"windowName\": \"{1}\", \"mode\": \"{2}\", \"width\": {3}, \"height\": {4}, \"x\": {5}, \"y\":{6}, \"showToolbar\": {7}, \"buttonIDs\": {8}, \"hide\":{9}, \"enableDrag\":{10} }, \"reqId\": \"{11}\", \"videoResizeMode\": {12} }" .format( userWindowId, userWindowName, "window", param["windowInfo"]["width"], param["windowInfo"]["height"], param["windowInfo"]["posX"], param["windowInfo"]["posY"], param["windowInfo"]["showToolbar"], param["windowInfo"]["buttonIDs"], param["windowInfo"]["hide"], param["windowInfo"]["enableDrag"], tabPageId, videoResizeMode ) result["rsp"] = 0; cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"](result); }; /** * destroyWindow 释放用户创建的视频窗口 * @param {Object} param { * callback: , * } */ ICPSDK_Dispatch_Device.prototype.destroyWindow = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param && undefined == param["userWindowId"]) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "destroyWindow: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "destroyWindow: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; var iResult = cloudICP.util.checkUserWindowId(param["userWindowId"], "destroy"); if (0 == iResult) { result["desc"] = "destroyWindow: The userWindowId is invalid"; param["callback"](result); return; } var resID = undefined; Object.keys(cloudICP.util.callStatusMgr.videoMediaInfoBuf).forEach(function(key) { if (undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["userWindowId"] && cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["userWindowId"] == param[ "userWindowId"]) { cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["isNeedDestroyWindow"] = true; resID = key; } }); if (resID == undefined) { //用户窗口还没有建立媒体面 if (undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[param["userWindowId"].toString()]) { if (undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[param["userWindowId"].toString()][ "value" ]["cid"]) { var cid = cloudICP.util.callStatusMgr.videoMediaInfoBuf[param["userWindowId"].toString()]["value"][ "cid" ]; if (undefined != cloudICP.util.callStatusMgr.windowInfos[cid.toString()]) { delete cloudICP.util.callStatusMgr.windowInfos[cid.toString()]; } } if (undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[param["userWindowId"].toString()][ "value" ]["to"]) { var to = cloudICP.util.callStatusMgr.videoMediaInfoBuf[param["userWindowId"].toString()]["value"][ "to" ]; if (undefined != cloudICP.util.callStatusMgr.windowInfos[to.toString()]) { delete cloudICP.util.callStatusMgr.windowInfos[to.toString()]; } } } var meidaSDKparam = "{\"description\":\"msp_delete_close_userWindow\", \"cmd\": 196613, \"param\":{\"userWindowId\":{0}}, \"reqId\": \"{1}\"}" .format( parseInt(param["userWindowId"]), tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); return; }; //关闭窗口上的业务 var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[resID]; if (call) { var param = { cid: resID, callback: function(data) { setTimeout(function() { cloudICP.util.log(tabPageId, { "logLevel": "info", "logMsg": "close [" + resID + "] window rsp: " + JSON.stringify(data) }); }, 0); } } if (call.callType == callStatusMgr.VIDEO || call.callType == callStatusMgr.MONITOR || call.callType == callStatusMgr.VIDEODISPATCH) { cloudICP.dispatch.video.release(param); return; } if (call.callType == callStatusMgr.VIDEOCONF) { var confInfo = cloudICP.util.callStatusMgr.confMgr[cloudICP.util.callStatusMgr.currentGoingConf]; if (confInfo != undefined) { if (cloudICP.userInfo["isdn"] == confInfo["value"]["confStatus"]["chair"]) { param.confId = cloudICP.util.callStatusMgr.currentGoingConf; cloudICP.dispatch.conf.endConf(param); return; } } cloudICP.dispatch.conf.exitVideoConf(param); } } param["callback"]({ "rsp": "0", "desc": "" }); }; /** * ringType * @param { * ringType: , * callback: , * } */ ICPSDK_Dispatch_Device.prototype.ringType = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "ringType: param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "ringType: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "ringType: User not logged."; param["callback"](result); return; }; var result = { "rsp": "-2", "desc": "" }; if (!param["ringType"] || typeof(param["ringType"]) != "string" || (param["ringType"] != "0" && param[ "ringType"] != "1")) { result["desc"] = "ringType: The ringType is invalid"; param["callback"](result); return; } cloudICP.util.ringType = param["ringType"]; param["callback"]({ "rsp": "0", "desc": "" }); } /** * setLinkedPhone() set linked phone isnd * @param {Object} param { * "phoneIsdn": , * "linkMode": , * "callback": , * } */ ICPSDK_Dispatch_Device.prototype.setLinkedPhone = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "setLinkedPhone": "param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "setLinkedPhone": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "setLinkedPhone: User not logged."; param["callback"](result); return; }; result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["phoneIsdn"])) { result["desc"] = "setLinkedPhone: The phoneIsdn is invalid"; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/voicecall/" + cloudICP.userInfo["isdn"] + "/linkphone"; var resParam = { "opt": "set", "param": { "phoneISDN": param["phoneIsdn"], "linkedMode": param["linkMode"] } }; resParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "async": false, "data": resParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * setMediaMode() set isMediaDataPassthrough * @param {Object} param { * "cid": , * "type": , * "switch": , * "callback": , * } */ ICPSDK_Dispatch_Device.prototype.setMediaMode = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "callback is not a function" }); return; } var result = { "rsp": "-2", "desc": "" }; if (!cloudICP.util.callStatusMgr.checkIsExist(param)) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "setMediaMode :A resource already exists." }); result["desc"] = "A resource already exists."; param["callback"](result); return; } var meidaSDKparam = "{\"description\":\"setMediaMode\", \"cmd\": 65561, \"param\":{\"cid\":{0}, \"type\":{1}, \"switch\":{2}}, \"reqId\":\"{3}\"}".format( parseInt(param["cid"]), parseInt(param["type"]), parseInt(param["switch"]), tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); }; /** * getAllWindowName() get all visible window name * @param {Object} param { * no param needed * } */ ICPSDK_Dispatch_Device.prototype.getAllWindowName = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } var meidaSDKparam = "{\"description\":\"get_all_window_name\", \"cmd\": 196619, \"param\":{}, \"reqId\":\"{0}\"}".format( tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); }; /** * startWindowShare() will start share the window * @param {Object} param { * cid: * windowName: * } */ ICPSDK_Dispatch_Device.prototype.startWindowShare = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } var meidaSDKparam = "{\"description\":\"start_window_share\", \"cmd\": 65559, \"param\":{\"cid\":{0}, \"windowName\":\"{1}\"}, \"reqId\":\"{2}\"}".format( parseInt(param["cid"]), param["windowName"], tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); }; /** * stopWindowShare() will stop share the window * @param {Object} param { * cid: * } */ ICPSDK_Dispatch_Device.prototype.stopWindowShare = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } var meidaSDKparam = "{\"description\":\"stop_window_share\", \"cmd\": 65560, \"param\":{\"cid\":{0}}, \"reqId\":\"{1}\"}".format( parseInt(param["cid"]), tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); }; /** * checkMSPIsInstall() check msp is install * @param {Object} param { * "mdcip": , * "callback": , * } */ ICPSDK_Dispatch_Device.prototype.checkMSPIsInstall = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (undefined == param || undefined == param.mdcip || !cloudICP.util.checkIp(param.mdcip)) { cloudICP.util.log(tabPageId, { "logLevel": "error", "checkMSPIsInstall": "param is invalid" }); return; } if (param["value"] != undefined) { param = param.value; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "checkMSPIsInstall": "callback is not a function" }); return; } var strUrl = "http://" + param.mdcip + ":8009/mspversion/" + cloudICP.config.mspVersion + "/eSDK_ICP_MSP.zip"; var strVersion = "MSP_V" + cloudICP.config.mspVersion + ".zip"; cloudICP.config.hasExeCheckMsp = true; cloudICP.config.setMDCIP = param.mdcip; try { setTimeout(() => { openUriWithTimeoutHack(//检测视频插件MSP是否安装、运行 'myapp://', //myapp 是已注册的自定义协议 () => { var checkMspBtnObj = document.getElementById("check-msp-btn-msg"); var messageElement = document.getElementById('open-msp-result-message'); if (checkMspBtnObj) { $("#check-msp-btn-msg").text("MSP插件未安装"); } if (messageElement) { messageElement.innerHTML = '检测结果:' + ' MSP 插件未安装。请下载、安装MSP插件: ' + '' + strVersion + ''; } param.callback({ "isInstall" : false, "downloadUrl" : strUrl }); }, () => { var checkMspBtnObj = document.getElementById("check-msp-btn-msg"); var messageElement = document.getElementById('open-msp-result-message'); if (checkMspBtnObj) { $("#check-msp-btn-msg").text("MSP插件已安装"); } if (messageElement) { messageElement.innerHTML = '检测结果:' + 'MSP 插件已安装。'; } param.callback({ "isInstall" : true }); }, 2000 ); }, 100); } catch(e) {} }; /** * UpgradeMspVersion will Upgrading the MSP Version * @param {Object} param { * downloadUrl: * } */ ICPSDK_Dispatch_Device.prototype.UpgradeMspVersion = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "UpgradeMspVersion: param is invalid" }); return; } if (undefined == param["downloadUrl"] || "" == param["downloadUrl"]) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "UpgradeMspVersion: downloadUrl is invalid." }); result["desc"] = "UpgradeMspVersion: downloadUrl is invalid."; param["callback"](result); return; } if (undefined == param["downloadDir"] || "" == param["downloadDir"]) { param["downloadDir"] = "C:\\\\dc_temp" } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "UpgradeMspVersion: callback is not a function." }); return; } var meidaSDKparam = "{\"description\":\"upgrade_msp_version\", \"cmd\": {0}, \"param\":{\"downloadUrl\":\"{1}\", \"reqId\":\"{2}\", \"downloadDir\":\"{3}\", \"local_ip\":\"{4}\"}}".format( 0x2000C, param["downloadUrl"], tabPageId, param["downloadDir"], cloudICP.config["localIP"] ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); param["callback"]({ "rsp": "0", "desc": "" }); }; function ICPSDK_Dispatch_Event() { this.EVENT_LIST = { "VoiceNotify": { "OnUserStatusNotify": this.printEvent, "OnDialOutProceeding": this.printEvent, "OnDialOutRinging": this.printEvent, "OnCallConnect": this.printEvent, "OnDialOutFailure": this.printEvent, "OnCallRelease": this.printEvent, "OnDialInRinging": this.printEvent, "OnConnectProceeding": this.printEvent, "OnHalfDialConnectProceeding": this.printEvent, "OnStartRecvHalfDial": this.printEvent, "OnStopRecvHalfDial": this.printEvent, "OnTransferReject": this.printEvent, "OnTransferAccept": this.printEvent, "OnTransferSuccess": this.printEvent, "OnTransferFailure": this.printEvent, "OnTransferNotify": this.printEvent, "OnTalkingEmergencyCallStart": this.printEvent, "OnCancelTransferFailure": this.printEvent, "OnCancelTransferSuccess": this.printEvent, "OnHalfDuplexPTTAccept": this.printEvent, "OnHalfDialFailure": this.printEvent, "OnBreakOffFailure": this.printEvent, "OnBreakOffSuccess": this.printEvent, "OnHalfDialSuccess": this.printEvent, "OnStartDiscreetlistenSuccess": this.printEvent, "OnStartDiscreetlistenFailure": this.printEvent, "OnStopDiscreetlistenSuccess": this.printEvent, "OnStopDiscreetlistenFailure": this.printEvent, "OnDiscreetlistenStart": this.printEvent, "OnDiscreetlistenStop": this.printEvent, "OnHoldSuccess": this.printEvent, "OnHoldFailure": this.printEvent, "OnUnholdSuccess": this.printEvent, "OnUnholdFailure": this.printEvent, "OnInterceptSuccess": this.printEvent, "OnInterceptFailure": this.printEvent, "OnCallException": this.printEvent, "OnReceiveDTMF": this.printEvent, "MRSInfoNotify": this.printEvent, "OnLinkedPhoneNotify": this.printEvent, "PSTNBroadcastOnceSendOverNotify": this.printEvent, "OnTalkingPrempted": this.printEvent, }, "VideoNotify": { "OnVideoDispatchRequest": this.printEvent, "OnVideoDispatchFailure": this.printEvent, "OnVideoDispatchSuccess": this.printEvent, "OnVideoDispatchStatusNotify": this.printEvent, "OnCancelVideoDispatchSuccess": this.printEvent, "OnCancelVideoDispatchFailure": this.printEvent, "OnStartVideoUploadWallSuccess": this.printEvent, "OnStartVideoUploadWallFailure": this.printEvent, "OnStopVideoUploadWallSuccess": this.printEvent, "OnStopVideoUploadWallFailure": this.printEvent, }, "GroupCallNotify": { "OnGroupCallStatusNotify": this.printEvent, "OnTalkingGroupCallFailure": this.printEvent, "OnTalkingGroupCallPTTStart": this.printEvent, "OnTalkingGroupCallPTTNotify": this.printEvent, "OnTalkingGroupCallPTTSuccess": this.printEvent, "OnTalkingGroupCallPTTIdle": this.printEvent, "OnTalkingGroupCallPTTRecv": this.printEvent, "OnTalkingGroupCallStart": this.printEvent, "OnTalkingGroupCallStop": this.printEvent, "OnTalkingGroupCallRelease": this.printEvent, "OnTalkingGroupCallPTTFailure": this.printEvent, "OnTalkingGroupCallJoinNotify": this.printEvent, "OnAddTalkingGroupTempUserSuccess": this.printEvent, "OnAddTalkingGroupTempUserFailure": this.printEvent, "OnTalkingGourpEmergencyCallStart": this.printEvent, "OnTalkingGroupEmergencyCallUpdate": this.printEvent, "OnQueryPDTGroupSuccess": this.printEvent, "OnQueryPDTGroupFailure": this.printEvent, "OnSetListenGroupSuccess": this.printEvent, "OnSetListenGroupFailure": this.printEvent, "GroupMRSInfoNotify": this.printEvent, }, "GroupNotify": { "OnTalkingGroupStatusChange": this.printEvent, "OnTalkingGroupMemberChange": this.printEvent, "OnDynamicGroupMemberChange": this.printEvent, "OnDynamicGroupChangeSuccess": this.printEvent, "OnChangePatchGroupFailure": this.printEvent, "OnPatchGroupStatusChange": this.printEvent, "OnPatchGroupMemberChange": this.printEvent, "OnDynamicGroupMemberChangeFailure": this.printEvent, "OnDynamicGroupOptFailed": this.printEvent, "OnPatchGroupOptFailed": this.printEvent, "OnPatchGroupOptSuccess": this.printEvent, "OnChangePatchGroupMemberFailure": this.printEvent, "OnChangePatchGroupMemberSucess": this.printEvent, "OnTalkingGroupMemberChangeFailure": this.printEvent }, "MsNotify": { "OnSendDispSMSResult": this.printEvent, "OnRecvDispSMSNotify": this.printEvent, "OnDispSMSModuleNotify": this.printEvent, "OnSendDispMMSResult": this.printEvent, "OnRecvDispMMSNotify": this.printEvent, "OnDispMMSModuleNotify": this.printEvent, "OnRecvStateMsgNotify": this.printEvent }, "GisNotify": { "OnSubscribeGISResult": this.printEvent, "OnUnSubscribeGISResult": this.printEvent, "OnRecvGISNotify": this.printEvent, "OnRecvGISTrackNotify":this.printEvent }, "BroadcastInfoNotify": { "OnStartCallResult": this.printEvent, "OnEndCallResult": this.printEvent, "OnQueryBroadcastInfoListNotify": this.printEvent }, "ResourceNotify": { "OnPushConnectSuccess": this.printEvent, "OnPushConnectFail": this.printEvent, "OnPushGetTokenFail": this.printEvent, "ResultOfMappingBetweenIsdn2Gbid": this.printEvent }, "ModuleNotify": { "OnDisConnection": this.printEvent, "OnConnection": this.printEvent, "OnDispatchKickOutNotifyEvent": this.printEvent, "OnModifyPasswordNotify": this.printEvent, "OnDeleteAccountNotify": this.printEvent, "OnSetLinkedPhoneSuccess": this.printEvent, "OnSetLinkedPhoneFailure": this.printEvent }, "PhoneConfNotify": { "OnCreateConfSuccess": this.printEvent, "OnCreateConfFailure": this.printEvent, "OnEndConfSuccess": this.printEvent, "OnEndConfFailure": this.printEvent, "OnSubscribeConfSuccess": this.printEvent, "OnSubscribeConfFailure": this.printEvent, "OnUnsubscribeConfSuccess": this.printEvent, "OnUnsubscribeConfFailure": this.printEvent, "OnConfDialInRinging": this.printEvent, "OnConfDialOutRinging": this.printEvent, "OnConfConnect": this.printEvent, "OnConfRelease": this.printEvent, "OnConfFailure": this.printEvent, "OnMuteConfMemberSuccess": this.printEvent, "OnMuteConfMemberFailure": this.printEvent, "OnUnmuteConfMemberSuccess": this.printEvent, "OnUnmuteConfMemberFailure": this.printEvent, "OnSetSpokenMemberSuccess": this.printEvent, "OnSetSpokenMemberFailure": this.printEvent, "OnMuteConfSuccess": this.printEvent, "OnMuteConfFailure": this.printEvent, "OnUnmuteConfSuccess": this.printEvent, "OnUnmuteConfFailure": this.printEvent, "OnBroadcastMixPictureSuccess": this.printEvent, "OnBroadcastMixPictureFailure": this.printEvent, "OnCancelBroadcastMixPictureSuccess": this.printEvent, "OnCancelBroadcastMixPictureFailure": this.printEvent, "OnBroadcastConfMemberSuccess": this.printEvent, "OnBroadcastConfMemberFailure": this.printEvent, "OnCancelBroadcastConfMemberSuccess": this.printEvent, "OnCancelBroadcastConfMemberFailure": this.printEvent, "OnWatchConfMemberSuccess": this.printEvent, "OnWatchConfMemberFailure": this.printEvent, "OnConfTextTipsSuccess": this.printEvent, "OnConfTextTipsFailure":this.printEvent, "OnWatchMixPictureSuccess": this.printEvent, "OnWatchMixPictureFailure": this.printEvent, "OnHangupConfMemberSuccess": this.printEvent, "OnHangupConfMemberFailure": this.printEvent, "OnCallConfMemberSuccess": this.printEvent, "OnCallConfMemberFailure": this.printEvent, "OnHoldConfSuccess": this.printEvent, "OnHoldConfFailure": this.printEvent, "OnUnholdConfSuccess": this.printEvent, "OnUnholdConfFailure": this.printEvent, "OnConfStatusNotify": this.printEvent, "OnQueryConfListByAttendeeResult": this.printEvent, "OnQueryRecordURLByConfIDResult": this.printEvent, "OnQueryVWallDisplayMatrixInfoResult": this.printEvent, "OnQueryConfWallInfoResult": this.printEvent, "OnStartConfUploadWallSuccess": this.printEvent, "OnStartConfUploadWallFailure": this.printEvent, "OnStopConfUploadWallSuccess": this.printEvent, "OnStopConfUploadWallFailure": this.printEvent, "OnAddConfMembersSuccess": this.printEvent, "OnAddConfMembersFailure": this.printEvent, "OnQueryVDCAddressBookSuccess": this.printEvent, "OnQueryVDCAddressBookFailure": this.printEvent, "OnQueryConfereeAddressBookSuccess": this.printEvent, "OnQueryConfereeAddressBookFailure": this.printEvent, "OnConfException": this.printEvent, "OnDelConfMembersSuccess": this.printEvent, "OnDelConfMembersFailure": this.printEvent, "OnConfProxyFloorSuccess": this.printEvent, "OnConfProxyFloorFailure": this.printEvent, "OnQueryContinuousPresenceInfoResult": this.printEvent, "OnApplyFloor": this.printEvent, "OnConfSetChairmanSuccess": this.printEvent, "OnConfSetChairmanFailure": this.printEvent, "OnConfProlongTimeSuccess": this.printEvent, "OnConfProlongTimeFailure": this.printEvent, "OnConfLockVideoSourceSuccess": this.printEvent, "OnConfLockVideoSourceFailure": this.printEvent, "OnConfUnLockVideoSourceSuccess": this.printEvent, "OnConfUnLockVideoSourceFailure": this.printEvent, "OnConfLockConfSuccess": this.printEvent, "OnConfLockConfFailure": this.printEvent, "OnConfUnLockConfSuccess": this.printEvent, "OnConfUnLockConfFailure": this.printEvent, "OnRecvConfListNotifySuccess": this.printEvent, "OnRecvConfListNotifyFailure": this.printEvent, "OnQueryConferenceByIdSuccess": this.printEvent, "OnQueryConferenceByIdFailure": this.printEvent, "OnModifyConfSuccess": this.printEvent, "OnModifyConfFailure": this.printEvent, "OnQueryCasConfInfosSuccess": this.printEvent, "OnQueryCasConfInfosFailure": this.printEvent, "OnQueryOrgTreeSuccess": this.printEvent, "OnQueryOrgTreeFail": this.printEvent, "OnQueryAreaOrgInfoSuccess": this.printEvent, "OnQueryAreaOrgInfoFail": this.printEvent, "OnQueryConfURLSuccess": this.printEvent, "OnQueryConfURLFailure": this.printEvent, "OnRecvQueryConfInfoNotifySuccess": this.printEvent, "OnRecvQueryConfInfoNotifyFailure": this.printEvent, }, "MSPNotify": { "OnGetSoundDeviceResult": this.printEvent, "OnGetVolumeResult": this.printEvent, "OnSetVolumeResult": this.printEvent, "OnSetRingVolumeResult": this.printEvent, "OnMuteSpeakerResult": this.printEvent, "OnUnmuteSpeakerResult": this.printEvent, "OnMuteMicResult": this.printEvent, "OnUnmuteMicResult": this.printEvent, "OnQuerySoundDeviceResult": this.printEvent, "OnAssignSoundDeviceResult": this.printEvent, "OnSendToDTMFResult": this.printEvent, "OnVDMStatusNotify": this.printEvent, "OnGetResolutionResult": this.printEvent, "OnHideVideoWindowResult": this.printEvent, "OnWindowOnTopResult": this.printEvent, "OnWindowDragEnableResult": this.printEvent, "OnWindowShowBorderResult": this.printEvent, "OnWindowOperateNotify": this.printEvent, "OnDownloadProgressEvent": this.printEvent, "OnInstallMspEvent": this.printEvent, "OnUpgradeMspVersionResult": this.printEvent, "OnUpdateMsp": this.printEvent, "OnCreateWindowResult": this.printEvent, "OnDestroyWindowResult": this.printEvent, "OnVideoStreamSPSEvent": this.printEvent, "OnStartLocalRecordEvent": this.printEvent, "OnStopLocalRecordEvent": this.printEvent, "OnMspInstallRunStatus": this.printEvent, "OnStartWindowShare": this.printEvent, "OnSetMediaModeResult": this.printEvent, "onMediaNotify": this.printEvent, } }; }; /** * 处理GIS的业务通知 * @param event */ ICPSDK_Dispatch_Event.prototype.delGisNotify = function(event) { var reqId = event.reqId; if (reqId == null || reqId == undefined) {reqId = "0";} var opt = event["opt"]; if (undefined != opt) { delete event.opt; } if (opt == "sub") { // 订阅 for (var item = 0; item < event["uelist"].length; item++) { if (event["uelist"][item]["rsp"] == "0" && !cloudICP.util.includes(cloudICP.dispatch.gis.subList, event[ "uelist"][item]["isdn"])) { cloudICP.dispatch.gis.subList.push(event["uelist"][item]["isdn"]); } } event["eventName"] = "OnSubscribeGISResult"; this.EVENT_LIST["GisNotify"]["OnSubscribeGISResult"].event = event; sendEvent2Page(reqId, this.EVENT_LIST["GisNotify"]["OnSubscribeGISResult"]); } else if (opt == "unsub") { // 取消订阅 for (var item = 0; item < event["uelist"].length; item++) { if (event["uelist"][item]["rsp"] == "0" && cloudICP.util.includes(cloudICP.dispatch.gis.subList, event[ "uelist"][item]["isdn"])) { var index = cloudICP.dispatch.gis.subList.indexOf(event["uelist"][item]["isdn"]); if (index != -1) { cloudICP.dispatch.gis.subList.splice(index, 1); } } } event["eventName"] = "OnUnSubscribeGISResult"; this.EVENT_LIST["GisNotify"]["OnUnSubscribeGISResult"].event = event; sendEvent2Page(reqId, this.EVENT_LIST["GisNotify"]["OnUnSubscribeGISResult"]); } else if (opt == "report") { // 上报通知 for (var item = 0; item < event["list"].length; item++) { if (!cloudICP.util.includes(cloudICP.dispatch.gis.subList, event["list"][item]["isdn"])) { event["list"].splice(item, 1); } } if (event["list"].length == 0) { return; } event["eventName"] = "OnRecvGISNotify"; this.EVENT_LIST["GisNotify"]["OnRecvGISNotify"].event = event; sendEvent2Page(reqId, this.EVENT_LIST["GisNotify"]["OnRecvGISNotify"]); } else if (opt == "track") { event["eventName"] = "OnRecvGISTrackNotify"; this.EVENT_LIST["GisNotify"]["OnRecvGISTrackNotify"].event = event; sendEvent2Page(reqId, this.EVENT_LIST["GisNotify"]["OnRecvGISTrackNotify"]); } else { cloudICP.util.log(undefined, { "logLevel": "error", "logMsg": "delGisNotify: unkown opt. the opt is." + opt }); return; } } /** * 处理三方广播的结果通知 * @param event */ ICPSDK_Dispatch_Event.prototype.delBroadcastInfoNotify = function(event) { var opt = event["opt"]; if (undefined != opt) { delete event.opt; } if (opt == "startCall") { // 发起广播 event["eventName"] = "OnStartCallResult"; this.EVENT_LIST["BroadcastInfoNotify"]["OnStartCallResult"](event); } else if (opt == "endCall") { // 停止广播 event["eventName"] = "OnEndCallResult"; this.EVENT_LIST["BroadcastInfoNotify"]["OnEndCallResult"](event); } else if (opt == "getList") { // 查询广播信息 event["eventName"] = "OnQueryBroadcastInfoListNotify"; this.EVENT_LIST["BroadcastInfoNotify"]["OnQueryBroadcastInfoListNotify"](event); } else { cloudICP.util.log(undefined, { "logLevel": "error", "logMsg": "delBroadcastInfoNotify: unkown opt. the opt is." + opt }); return; } } /** * 处理模块的状态通知 */ ICPSDK_Dispatch_Event.prototype.delModuleNotify = function(event) { var reqId = event.reqId; if (reqId == null || reqId == undefined) {reqId = "0";} var statusType = event["statustype"]; if (undefined != statusType) { delete event.statustype; } var statusValue = event["statusvalue"]; if (statusType == "1") { //短信 if (statusValue == "1") { //短信溢出 event["eventName"] = "OnDispSMSModuleNotify"; this.EVENT_LIST["MsNotify"]["OnDispSMSModuleNotify"].event = event; sendEvent2Page(reqId, this.EVENT_LIST["MsNotify"]["OnDispSMSModuleNotify"]); } else if (statusValue == "2") { //短信连接断开 var event = {}; event["eventName"] = "OnDisConnection"; event["moduleType"] = "1"; this.EVENT_LIST["ModuleNotify"]["OnDisConnection"].event = event; sendEvent2Page(reqId, this.EVENT_LIST["ModuleNotify"]["OnDisConnection"]); } else if (statusValue == "3") { //短信连接恢复 var event = {}; event["eventName"] = "OnConnection"; event["moduleType"] = "1"; this.EVENT_LIST["ModuleNotify"]["OnConnection"].event = event; sendEvent2Page(reqId, this.EVENT_LIST["ModuleNotify"]["OnConnection"]); } } else if (statusType == "2") { //彩信 event["eventName"] = "OnDispMMSModuleNotify"; this.EVENT_LIST["MsNotify"]["OnDispMMSModuleNotify"].event = event; sendEvent2Page(reqId, this.EVENT_LIST["MsNotify"]["OnDispMMSModuleNotify"]); } else if (statusType == "6") { //表示SIP模块 if (statusValue == "15") { //用户已经登出 clearTimeout(cloudICP.dispatch.auth.sendHeartbeatTimeOutId); delete event.statusvalue; logoutCleanUp(); event["eventName"] = "OnDispatchKickOutNotifyEvent"; this.EVENT_LIST["ModuleNotify"]["OnDispatchKickOutNotifyEvent"].event = event; sendEvent2Page(reqId, this.EVENT_LIST["ModuleNotify"]["OnDispatchKickOutNotifyEvent"]); } else if (statusValue == "9") { //SIP连接断开 event = {}; event["eventName"] = "OnDisConnection"; event["moduleType"] = "2"; this.EVENT_LIST["ModuleNotify"]["OnDisConnection"].event = event; sendEvent2Page(reqId, this.EVENT_LIST["ModuleNotify"]["OnDisConnection"]); } else if (statusValue == "10") { //SIP连接恢复 event = {}; event["eventName"] = "OnConnection"; event["moduleType"] = "2"; this.EVENT_LIST["ModuleNotify"]["OnConnection"].event = event; sendEvent2Page(reqId, this.EVENT_LIST["ModuleNotify"]["OnConnection"]); } else if (statusValue == "22") { //账号被删除 delete event.statusvalue; logoutCleanUp(); event["eventName"] = "OnDeleteAccountNotify"; this.EVENT_LIST["ModuleNotify"]["OnDeleteAccountNotify"].event = event; sendEvent2Page(reqId, this.EVENT_LIST["ModuleNotify"]["OnDeleteAccountNotify"]); } else if (statusValue == "17") { //密码被修改 delete event.statusvalue; cloudICP.userInfo["isdn"] = ""; logoutCleanUp(); event["eventName"] = "OnModifyPasswordNotify"; event["rsp"] = "0"; this.EVENT_LIST["ModuleNotify"]["OnModifyPasswordNotify"].event = event; sendEvent2Page(reqId, this.EVENT_LIST["ModuleNotify"]["OnModifyPasswordNotify"]); } } else if (statusType == "12") { if (statusValue == "43") { // push连接断开 event = {}; event["eventName"] = "OnPushDisConnection"; event["moduleType"] = "12"; this.EVENT_LIST["ModuleNotify"]["OnDisConnection"].event = event; sendEvent2Page(reqId, this.EVENT_LIST["ModuleNotify"]["OnDisConnection"]); } else if (statusValue == "44") { // push连接 event = {}; event["eventName"] = "OnPushConnection"; event["moduleType"] = "12"; this.EVENT_LIST["ModuleNotify"]["OnConnection"].event = event; sendEvent2Page(reqId, this.EVENT_LIST["ModuleNotify"]["OnConnection"]); } } else if (statusType == "9") { if (event["statusvalue"] == "16") { if (event["param"]["type"] == "4") { if (event["param"]["ret"] == 0) { var retEvent = { "eventName": "OnTransferSuccess", "rsp": "0" } this.EVENT_LIST["VoiceNotify"]["OnTransferSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnTransferSuccess"]); } else { var retEvent = { "eventName": "OnTransferFailure", "rsp": event["param"]["ret"] } this.EVENT_LIST["VoiceNotify"]["OnTransferFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnTransferFailure"]); } } else if (event["param"]["type"] == "5") { if (event["param"]["ret"] != "0") { var retEvent = { "eventName": "OnInterceptFailure", "rsp": event["param"]["ret"], } this.EVENT_LIST["VoiceNotify"]["OnInterceptFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnInterceptFailure"]); } else if (event["param"]["ret"] == "0") { var retEvent = { "eventName": "OnInterceptSuccess", "rsp": event["param"]["ret"], } this.EVENT_LIST["VoiceNotify"]["OnInterceptSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnInterceptSuccess"]); } } else if (event["param"]["type"] == "0") { if (event["param"]["ret"] != "0") { var retEvent = { "eventName": "OnBreakOffFailure", "rsp": event["param"]["ret"], "value": { "objid": event["param"]["ObjId"] } } this.EVENT_LIST["VoiceNotify"]["OnBreakOffFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnBreakOffFailure"]); } else if (event["param"]["ret"] == "0") { if (cloudICP.dispatch.group.isCurrentPtt["grpid"] == event["param"]["ObjId"]) { cloudICP.dispatch.group.isCurrentPtt = { "grpid": event["param"]["ObjId"], "isPtt": false }; } var retEvent = { "eventName": "OnBreakOffSuccess", "rsp": event["param"]["ret"], "value": { "objid": event["param"]["ObjId"] } } this.EVENT_LIST["VoiceNotify"]["OnBreakOffSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnBreakOffSuccess"]); } } else if (event["param"]["type"] == "1") { var retEvent = { "eventName": "OnTalkingGroupCallJoinNotify", "rsp": event["param"]["ret"], "value": { "grpid": event["param"]["ObjId"] } } this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallJoinNotify"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallJoinNotify"]); } else if (event["param"]["type"] == "7") { if (event["param"]["ret"] != "0") { var retEvent = { "eventName": "OnVideoDispatchFailure", "rsp": event["param"]["ret"], } this.EVENT_LIST["VideoNotify"]["OnVideoDispatchFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VideoNotify"]["OnVideoDispatchFailure"]); } else { var retEvent = { "eventName": "OnVideoDispatchSuccess", "rsp": "0", } this.EVENT_LIST["VideoNotify"]["OnVideoDispatchSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VideoNotify"]["OnVideoDispatchSuccess"]); } } else if (event["param"]["type"] == "8") { if (event["param"]["ret"] == "0") { var retEvent = { "eventName": "OnCancelVideoDispatchSuccess", "rsp": "0", } this.EVENT_LIST["VideoNotify"]["OnCancelVideoDispatchSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VideoNotify"]["OnCancelVideoDispatchSuccess"]); } else { var retEvent = { "eventName": "OnCancelVideoDispatchFailure", "rsp": event["param"]["ret"], } this.EVENT_LIST["VideoNotify"]["OnCancelVideoDispatchFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VideoNotify"]["OnCancelVideoDispatchFailure"]); } } else if (event["param"]["type"] == "9") { if (event["param"]["ret"] == "0") { var retEvent = { "eventName": "OnStopVideoUploadWallSuccess", "rsp": "0", "value": { "channel": event["param"]["DstObjId"] } } this.EVENT_LIST["VideoNotify"]["OnStopVideoUploadWallSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VideoNotify"]["OnStopVideoUploadWallSuccess"]); } else { var retEvent = { "eventName": "OnStopVideoUploadWallFailure", "rsp": event["param"]["ret"], } this.EVENT_LIST["VideoNotify"]["OnStopVideoUploadWallFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VideoNotify"]["OnStopVideoUploadWallFailure"]); } } else if (event["param"]["type"] == "10") { if (event["param"]["ret"] == "0") { var retEvent = { "eventName": "OnStartVideoUploadWallSuccess", "rsp": "0", "value": { "channel": event["param"]["DstObjId"], "src": event["param"]["SrcObjId"] } } this.EVENT_LIST["VideoNotify"]["OnStartVideoUploadWallSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VideoNotify"]["OnStartVideoUploadWallSuccess"]); } else { var retEvent = { "eventName": "OnStartVideoUploadWallFailure", "rsp": event["param"]["ret"], } this.EVENT_LIST["VideoNotify"]["OnStartVideoUploadWallFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VideoNotify"]["OnStartVideoUploadWallFailure"]); } } else if (event["param"]["type"] == "17") { if (event["param"]["ret"] == "0") { var retEvent = { "eventName": "OnAddTalkingGroupTempUserSuccess", "groupid": event["param"]["groupid"], "useid": event["param"]["useid"], "rsp": "0", } this.EVENT_LIST["GroupCallNotify"]["OnAddTalkingGroupTempUserSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupCallNotify"]["OnAddTalkingGroupTempUserSuccess"]); } else { var retEvent = { "eventName": "OnAddTalkingGroupTempUserFailure", "rsp": event["param"]["ret"], "groupid": event["param"]["groupid"], "useid": event["param"]["useid"], } this.EVENT_LIST["GroupCallNotify"]["OnAddTalkingGroupTempUserFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupCallNotify"]["OnAddTalkingGroupTempUserFailure"]); } } else if (event["param"]["type"] == "21") { if (event["param"]["ret"] == "0") { var retEvent = { "eventName": "OnCancelTransferSuccess", "rsp": "0", } this.EVENT_LIST["VoiceNotify"]["OnCancelTransferSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCancelTransferSuccess"]); } else { var retEvent = { "eventName": "OnCancelTransferFailure", "rsp": event["param"]["ret"], } this.EVENT_LIST["VoiceNotify"]["OnCancelTransferFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCancelTransferFailure"]); } } else if (event["param"]["type"] == "24") { // modified by lwx1179774 问题是保持和取消保持偶尔会失败,策略是加了延时处理 setTimeout(function() { var holdCid = "-1"; var callStatusMgr = cloudICP.util.callStatusMgr; for (var index = callStatusMgr.holdMgr.length - 1; index >= 0; index--) { var call = callStatusMgr.allCalls[callStatusMgr.holdMgr[index]]; var callID = ""; if (call["callee"] == cloudICP.userInfo["isdn"]) { callID = call["caller"]; } else if (call["caller"] == cloudICP.userInfo["isdn"]) { callID = call["callee"]; } else { return; } if (call && callID == event["param"]["isdn"]) { holdCid = callStatusMgr.holdMgr[index]; callStatusMgr.holdMgr.splice(index, 1); break; } } if (holdCid == "-1") { return; } if (event["param"]["ret"] == "0") { var retEvent = { "eventName": "OnHoldSuccess", "rsp": "0", "value": { "peerid": event["param"]["isdn"], "cid": holdCid } } callStatusMgr.updateCallStatus(null, callStatusMgr.HOLD, { "value": { "cid": holdCid } }); cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnHoldSuccess"].event = retEvent; sendEvent2Page(reqId, cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnHoldSuccess"]); } else { var retEvent = { "eventName": "OnHoldFailure", "rsp": event["param"]["ret"], "value": { "peerid": event["param"]["isdn"], "cid": holdCid } } cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnHoldFailure"].event = retEvent; sendEvent2Page(reqId, cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnHoldFailure"]); } }, 500); } else if (event["param"]["type"] == "25") { // modified by lwx1179774 问题是保持和取消保持偶尔会失败,策略是加了延时处理 setTimeout(function() { var holdCid = "-1"; var callStatusMgr = cloudICP.util.callStatusMgr; for (var index = callStatusMgr.holdMgr.length - 1; index >= 0; index--) { var call = callStatusMgr.allCalls[callStatusMgr.holdMgr[index]]; var callID = ""; if (call["callee"] == cloudICP.userInfo["isdn"]) { callID = call["caller"]; } else if (call["caller"] == cloudICP.userInfo["isdn"]) { callID = call["callee"]; } else { return; } if (call && callID == event["param"]["isdn"]) { holdCid = callStatusMgr.holdMgr[index]; callStatusMgr.holdMgr.splice(index, 1); break; } } if (holdCid == "-1") { return; } if (event["param"]["ret"] == "0") { var retEvent = { "eventName": "OnUnholdSuccess", "rsp": "0", "value": { "peerid": event["param"]["isdn"], "cid": holdCid } } callStatusMgr.unholdCall(holdCid, reqId); callStatusMgr.updateCallStatus(null, callStatusMgr.CONNECTING, { "value": { "cid": holdCid } }); cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnUnholdSuccess"].event = retEvent; sendEvent2Page(reqId, cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnUnholdSuccess"]); } else { var retEvent = { "eventName": "OnUnholdFailure", "rsp": event["param"]["ret"], "value": { "peerid": event["param"]["isdn"], "cid": holdCid } } cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnUnholdFailure"].event = retEvent; sendEvent2Page(reqId, cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnUnholdFailure"]); } }, 500); } else if (event["param"]["type"] == "26") { var holdCid = "-1"; var callStatusMgr = cloudICP.util.callStatusMgr; for (var index = callStatusMgr.holdMgr.length - 1; index >= 0; index--) { var call = callStatusMgr.allCalls[callStatusMgr.holdMgr[index]]; var callID = ""; if (call["callee"] == cloudICP.userInfo["isdn"]) { callID = call["caller"]; } else if (call["caller"] == cloudICP.userInfo["isdn"]) { callID = call["callee"]; } else { return; } if (call && callID == event["param"]["isdn"]) { holdCid = callStatusMgr.holdMgr[index]; callStatusMgr.holdMgr.splice(index, 1); break; } } if (holdCid == "-1") { return; } if (event["param"]["ret"] == "0") { var retEvent = { "eventName": "OnHoldConfSuccess", "rsp": "0", "value": { "confCode": event["param"]["isdn"], "cid": holdCid } } callStatusMgr.updateCallStatus(null, callStatusMgr.HOLD, { "value": { "cid": holdCid } }); this.EVENT_LIST["PhoneConfNotify"]["OnHoldConfSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnHoldConfSuccess"]); } else { var retEvent = { "eventName": "OnHoldConfFailure", "rsp": event["param"]["ret"], "value": { "confCode": event["param"]["isdn"], "cid": holdCid } } this.EVENT_LIST["PhoneConfNotify"]["OnHoldConfFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnHoldConfFailure"]); } } else if (event["param"]["type"] == "27") { var holdCid = "-1"; var callStatusMgr = cloudICP.util.callStatusMgr; for (var index = callStatusMgr.holdMgr.length - 1; index >= 0; index--) { var call = callStatusMgr.allCalls[callStatusMgr.holdMgr[index]]; var callID = ""; if (call["callee"] == cloudICP.userInfo["isdn"]) { callID = call["caller"]; } else if (call["caller"] == cloudICP.userInfo["isdn"]) { callID = call["callee"]; } else { return; } if (call && callID == event["param"]["isdn"]) { holdCid = callStatusMgr.holdMgr[index]; callStatusMgr.holdMgr.splice(index, 1); break; } } if (holdCid == "-1") { return; } if (event["param"]["ret"] == "0") { var retEvent = { "eventName": "OnUnholdConfSuccess", "rsp": "0", "value": { "confCode": event["param"]["isdn"], "cid": holdCid } } callStatusMgr.unholdCall(holdCid, reqId); callStatusMgr.updateCallStatus(null, callStatusMgr.CONNECTING, { "value": { "cid": holdCid } }); this.EVENT_LIST["PhoneConfNotify"]["OnUnholdConfSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnUnholdConfSuccess"]); } else { var retEvent = { "eventName": "OnUnholdConfFailure", "rsp": event["param"]["ret"], "value": { "confCode": event["param"]["isdn"], "cid": holdCid } } this.EVENT_LIST["PhoneConfNotify"]["OnUnholdConfFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnUnholdConfFailure"]); } } else if (event["param"]["type"] == "11") { if (event["param"]["ret"] != "0") { var retEvent = { "eventName": "OnDynamicGroupOptFailed", "rsp": event["param"]["ret"], "grpid": event["param"]["group"], "opt": event["param"]["opt"] } this.EVENT_LIST["GroupNotify"]["OnDynamicGroupOptFailed"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupNotify"]["OnDynamicGroupOptFailed"]); } } else if (event["param"]["type"] == "28") { if (event["param"]["ret"] == "0") { var retEvent = { "eventName": "OnConfProxyFloorSuccess", "rsp": "0", "value": { "member": event["param"]["member"], "operation": event["param"]["operation"] } } this.EVENT_LIST["PhoneConfNotify"]["OnConfProxyFloorSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfProxyFloorSuccess"]); } else { var retEvent = { "eventName": "OnConfProxyFloorFailure", "rsp": event["param"]["ret"], "value": { "member": event["param"]["member"], "operation": event["param"]["operation"] } } this.EVENT_LIST["PhoneConfNotify"]["OnConfProxyFloorFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfProxyFloorFailure"]); } } else if (event["param"]["type"] == "29") { if (event["param"]["ret"] == "0") { var retEvent = { "eventName": "OnQueryPDTGroupSuccess", "rsp": "0", "value": { "userid": event["param"]["userid"], "operation": event["param"]["operation"], "groupid": event["param"]["groupid"], "result": event["param"]["result"] } } this.EVENT_LIST["GroupCallNotify"]["OnQueryPDTGroupSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupCallNotify"]["OnQueryPDTGroupSuccess"]); } else { var retEvent = { "eventName": "OnQueryPDTGroupFailure", "rsp": event["param"]["ret"], "value": { "userid": event["param"]["userid"], "operation": event["param"]["operation"] } } this.EVENT_LIST["GroupCallNotify"]["OnQueryPDTGroupFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupCallNotify"]["OnQueryPDTGroupFailure"]); } } else if (event["param"]["type"] == "30") { if (event["param"]["ret"] == "0") { var retEvent = { "eventName": "OnSetListenGroupSuccess", "rsp": "0", "value": { "operation": event["param"]["operation"], "groupid": event["param"]["groupid"], "result": event["param"]["result"] } } this.EVENT_LIST["GroupCallNotify"]["OnSetListenGroupSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupCallNotify"]["OnSetListenGroupSuccess"]); } else { var retEvent = { "eventName": "OnSetListenGroupFailure", "rsp": event["param"]["ret"], "value": { "groupid": event["param"]["groupid"], "operation": event["param"]["operation"] } } this.EVENT_LIST["GroupCallNotify"]["OnSetListenGroupFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupCallNotify"]["OnSetListenGroupFailure"]); } } else if (event["param"]["type"] == "31") { if (event["param"]["ret"] == "0") { var retEvent = { "eventName": "OnSetLinkedPhoneSuccess", "rsp": "0" } this.EVENT_LIST["ModuleNotify"]["OnSetLinkedPhoneSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["ModuleNotify"]["OnSetLinkedPhoneSuccess"]); } else { var retEvent = { "eventName": "OnSetLinkedPhoneFailure", "rsp": event["param"]["ret"] } this.EVENT_LIST["ModuleNotify"]["OnSetLinkedPhoneFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["ModuleNotify"]["OnSetLinkedPhoneFailure"]); } } } } }; ICPSDK_Dispatch_Event.prototype.delMsNotify = function(event) { var reqId = event.reqId; if (reqId == null || reqId == undefined) {reqId = "0";} var opt = event["opt"]; if (undefined != opt) { delete event.opt; } var value = event["value"]; if (undefined == value) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "delMsNotify: value is undefined." }); return; } var type = value["type"]; if (undefined != type) { delete value.type; } if (undefined != value["direction"]) { delete value.direction; } if (type == "0001") { //短信 if (undefined != value["statuscode"]) { delete value.statuscode; } if (undefined != value["speed"]) { delete value.speed; } if (undefined != value["attach"]) { delete value.attach; } if (opt == "recvmsg") { //接收短信 event["rsp"] = "0"; // 转化时区 if (value["state"] == 1) { var tmpTime = value["date"].split("-"); var tempDate = value["time"].split(":"); var time = new Date(Date.UTC(tmpTime[0], parseInt(tmpTime[1]) - 1, tmpTime[2], tempDate[0], tempDate[1], tempDate[2])); var mYear = time.getFullYear().toString(); var tempMonth = time.getMonth() + 1; var mMonth = (tempMonth < 10) ? "0" + tempMonth.toString() : tempMonth.toString(); var mDay = (time.getDate() < 10) ? "0" + time.getDate().toString() : time.getDate().toString(); var mHour = (time.getHours() < 10) ? "0" + time.getHours().toString() : time.getHours().toString(); var mMinute = (time.getMinutes() < 10) ? "0" + time.getMinutes().toString() : time.getMinutes() .toString(); var mSecond = (time.getSeconds() < 10) ? "0" + time.getSeconds().toString() : time.getSeconds() .toString(); value["date"] = mYear + "-" + mMonth + "-" + mDay; value["time"] = mHour + ":" + mMinute + ":" + mSecond; } if (undefined != value["state"]) { delete value.state; } event["eventName"] = "OnRecvDispSMSNotify"; if (undefined != event["value"]["audiocontent"]) { event["value"]["audiocontent"] = event["value"]["audiocontent"].replace(/-/g, "+"); event["value"]["audiocontent"] = event["value"]["audiocontent"].replace(/_/g, "/"); } this.EVENT_LIST["MsNotify"]["OnRecvDispSMSNotify"].event = event; sendEvent2Page(reqId, this.EVENT_LIST["MsNotify"]["OnRecvDispSMSNotify"]); } else if (opt == "sendresult") { //发送短信 if (undefined != value["groupid"]) { delete value.groupid; } if (undefined != value["state"]) { delete value.state; } if (undefined != value["emerg_groupid"]) { delete value.emerg_groupid; } if (undefined != value["emerg_ueid"]) { delete value.emerg_ueid; } // value.msgid = new Date(value["date"] + " " + value["time"]).getTime().toString() event["eventName"] = "OnSendDispSMSResult"; this.EVENT_LIST["MsNotify"]["OnSendDispSMSResult"].event = event; sendEvent2Page(reqId, this.EVENT_LIST["MsNotify"]["OnSendDispSMSResult"]); } } else if (type == "0002") { //状态短信 if (undefined != value["state"]) { delete value.state; } if (undefined != event["rsp"]) { delete event.rsp; } if (undefined != value["speed"]) { delete value.speed; } if (undefined != value["emerg_groupid"]) { delete value.emerg_groupid; } if (undefined != value["emerg_ueid"]) { delete value.emerg_ueid; } if (undefined != value["groupid"]) { delete value.groupid; } if (undefined != value["attach"]) { delete value.attach; } event["eventName"] = "OnRecvStateMsgNotify"; this.EVENT_LIST["MsNotify"]["OnRecvStateMsgNotify"].event = event; sendEvent2Page(reqId, this.EVENT_LIST["MsNotify"]["OnRecvStateMsgNotify"]); } else if (type == "0003") { //表示告警信息 } else if (type == "0004") { if (undefined != value["speed"]) { delete value.speed; } if (undefined != value["statuscode"]) { delete value.statuscode; } //表示彩信 if (opt == "recvmsg") { //接收彩信 event["rsp"] = "0"; // 转化时区 if (value["state"] == 1) { var tmpTime = value["date"].split("-"); var tempDate = value["time"].split(":"); var time = new Date(Date.UTC(tmpTime[0], parseInt(tmpTime[1]) - 1, tmpTime[2], tempDate[0], tempDate[1], tempDate[2])); var mYear = time.getFullYear().toString(); var tempMonth = time.getMonth() + 1; var mMonth = (tempMonth < 10) ? "0" + tempMonth.toString() : tempMonth.toString(); var mDay = (time.getDate() < 10) ? "0" + time.getDate().toString() : time.getDate().toString(); var mHour = (time.getHours() < 10) ? "0" + time.getHours().toString() : time.getHours().toString(); var mMinute = (time.getMinutes() < 10) ? "0" + time.getMinutes().toString() : time.getMinutes() .toString(); var mSecond = (time.getSeconds() < 10) ? "0" + time.getSeconds().toString() : time.getSeconds() .toString(); value["date"] = mYear + "-" + mMonth + "-" + mDay; value["time"] = mHour + ":" + mMinute + ":" + mSecond; } if (undefined != value["state"]) { delete value.state; } event["eventName"] = "OnRecvDispMMSNotify"; this.EVENT_LIST["MsNotify"]["OnRecvDispMMSNotify"].event = event; sendEvent2Page(reqId, this.EVENT_LIST["MsNotify"]["OnRecvDispMMSNotify"]); } else if (opt == "sendresult") { //发送彩信 if (undefined != value["groupid"]) { delete value.groupid; } if (undefined != value["state"]) { delete value.state; } if (undefined != value["emerg_groupid"]) { delete value.emerg_groupid; } if (undefined != value["emerg_ueid"]) { delete value.emerg_ueid; } event["eventName"] = "OnSendDispMMSResult"; this.EVENT_LIST["MsNotify"]["OnSendDispMMSResult"].event = event; sendEvent2Page(reqId, this.EVENT_LIST["MsNotify"]["OnSendDispMMSResult"]); } } else if (type == "0010") { //表示ACK消息 } else if (type == "0011") { //表示消息发送失败错误码 } } /** * 处理视频通知 */ ICPSDK_Dispatch_Event.prototype.delVideoNotify = function(event) { var reqId = event.reqId; if (reqId == null || reqId == undefined) {reqId = "0";} var rsp = event["rsp"]; if (undefined == rsp) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "delVideoNotify: rsp is undefined." }); return; } var value = event["value"]; if (undefined == value) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "delVideoNotify: value is undefined." }); return; } var confInfo = value["confInfo"]; if (undefined != confInfo) { if (!!confInfo["confInternalId"]) { value["confId"] = confInfo["confInternalId"]; } delete value.confInfo; } var from; if (undefined != value["from"] && value["from"] != "" && value["caller"] != value["from"]) { from = value["from"]; } else { from = value["caller"]; } var newEvent = { "eventName": "", "rsp": rsp, "value": { "callee": value["callee"], "caller": value["caller"], "cid": value["cid"], "fmt": value["fmt"] } } if (value["caller"] == cloudICP.userInfo["isdn"]) { // 呼出方 switch (rsp) { case "3004": var callStatusMgr = cloudICP.util.callStatusMgr; if (!!callStatusMgr.windowInfos[value["callee"]]) { //视频点呼、视频监控、主动入会 callStatusMgr.windowInfos[value["callee"]]["cid"] = event["value"]["cid"]; } if (confInfo != undefined) { callStatusMgr.updateCallStatus(callStatusMgr.VIDEOCONF, callStatusMgr.NEW, event, confInfo); break; } if (event["value"]["isVideoDial"] == "0") { var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.MONITOR, callStatusMgr.NEW, event); newEvent["value"]["calltype"] = "monitor"; newEvent["eventName"] = "OnDialOutProceeding"; this.EVENT_LIST["VoiceNotify"]["OnDialOutProceeding"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnDialOutProceeding"]); break; } var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.VIDEO, callStatusMgr.NEW, event); newEvent["value"]["calltype"] = "video"; newEvent["eventName"] = "OnDialOutProceeding"; this.EVENT_LIST["VoiceNotify"]["OnDialOutProceeding"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnDialOutProceeding"]); break; // 视频振铃事件 case "3005": // 播放回铃音 var param = "{\"description\":\"msp_play_tone\", \"cmd\": 131075, \"param\":{\"cid\": {0}, \"type\":1, \"delay\":0, \"duration\":0, \"playcount\":0}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[event["value"]["cid"]]; if (call && call.callType == callStatusMgr.VIDEOCONF) { callStatusMgr.updateCallStatus(callStatusMgr.VIDEOCONF, callStatusMgr.RINGING, event); newEvent["value"]["confId"] = call["confId"]; newEvent["value"]["isVideo"] = "true"; newEvent["eventName"] = "OnConfDialOutRinging"; this.EVENT_LIST["PhoneConfNotify"]["OnConfDialOutRinging"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfDialOutRinging"]); break; } else if (call && call.callType == callStatusMgr.MONITOR) { callStatusMgr.updateCallStatus(callStatusMgr.MONITOR, callStatusMgr.RINGING, event); newEvent["value"]["calltype"] = "monitor"; newEvent["eventName"] = "OnDialOutRinging"; this.EVENT_LIST["VoiceNotify"]["OnDialOutRinging"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnDialOutRinging"]); break; } var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.VIDEO, callStatusMgr.RINGING, event); newEvent["value"]["calltype"] = "video"; newEvent["eventName"] = "OnDialOutRinging"; this.EVENT_LIST["VoiceNotify"]["OnDialOutRinging"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnDialOutRinging"]); break; // 视频点呼建立事件 case "3003": // 停止振铃 var param = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}, \"reqId\": \"{1}\"}".format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); // 建立音频媒体通道 if (value["local_audio"] != "0.0.0.0,0" && value["server_audio"] != "0.0.0.0,0") { let localArr = value["local_audio"].split(","); let serverArr = value["server_audio"].split(","); var user = cloudICP.userInfo["isdn"]; var peerUser = value["callee"]; if (user == peerUser) { peerUser = value["caller"]; } var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[event["value"]["cid"]]; if (call && call.callType == callStatusMgr.VIDEOCONF) { var param = "{\"description\":\"msp_create_audio_channel\", \"cmd\": 65537, \"param\":{\"resID\":{0}, \"mediaInfo\":{\"localIP\":\"{1}\", \"localPort\":{2}, \"remoteIP\":\"{3}\",\"remotePort\":{4}, \"playload\":{5}, \"ssrc\":{6}, \"number\": \"conference\",\"user\":\"{7}\", \"peerUser\":\"{8}\"}}, \"reqId\": \"{9}\"}" .format( parseInt(value["cid"]), cloudICP.config.localIP, localArr[1], serverArr[0], serverArr[1], parseInt(value["audio"]), parseInt(value["audio_ssrc"]), user, peerUser, reqId ) cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } else { var callNumber; if (event["value"]["callee"] != cloudICP.userInfo["isdn"]) { callNumber = event["value"]["callee"] } else { callNumber = event["value"]["caller"]; } if (call && call.callType == callStatusMgr.MONITOR) { var param = "{\"description\":\"msp_create_audio_channel\", \"cmd\": 65537, \"param\":{\"resID\":{0}, \"mediaInfo\":{\"localIP\":\"{1}\", \"localPort\":{2}, \"remoteIP\":\"{3}\",\"remotePort\":{4}, \"playload\":{5}, \"ssrc\":{6}, \"number\": \"{7}\" , \"recvOnly\": true ,\"user\":\"{8}\", \"peerUser\":\"{9}\"}}, \"reqId\": \"{10}\"}" .format( parseInt(value["cid"]), cloudICP.config.localIP, localArr[1], serverArr[0], serverArr[1], parseInt(value["audio"]), parseInt(value["audio_ssrc"]), parseInt( callNumber), user, peerUser, reqId ) cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } else { var param = "{\"description\":\"msp_create_audio_channel\", \"cmd\": 65537, \"param\":{\"resID\":{0}, \"mediaInfo\":{\"localIP\":\"{1}\", \"localPort\":{2}, \"remoteIP\":\"{3}\",\"remotePort\":{4}, \"playload\":{5}, \"ssrc\":{6}, \"number\": \"{7}\",\"user\":\"{8}\", \"peerUser\":\"{9}\"} }, \"reqId\": \"{10}\"}" .format( parseInt(value["cid"]), cloudICP.config.localIP, localArr[1], serverArr[0], serverArr[1], parseInt(value["audio"]), parseInt(value["audio_ssrc"]), parseInt( callNumber), user, peerUser, reqId ) cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } } } var recvOnly = false; if (event["value"]["camera"] == "1") { recvOnly = true; } // 建立视频媒体通道 if (value["local_video"] != "0.0.0.0,0" && value["server_video"] != "0.0.0.0,0") { cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]] = event; var windowInfo = cloudICP.util.callStatusMgr.windowInfos[value["cid"]]; //视频点呼被动接听 、被动视频入会 var windowToolbarInfo = cloudICP.util.callStatusMgr.windowInfos[value[ "callee"]]; //视频点呼、视频监控、主动入会 var iuserWindowId = 0; var ishowToolbar = 1; var ibuttonIDs = 0; var bHide = false; var bEnableDrag = true; var iWidth = 640; var iHeight = 480; var iPosX = 400; var iPosY = 400; var fmtType = "TIN"; var windowMode = cloudICP.config["mode"]; var videoConfLocalWindow = null; var videoResizeMode = cloudICP.config["videoResizeMode"]; if ((undefined != value["confId"]) && (undefined != cloudICP.config[ "videoConfLocalWindow"])) { //会议业务 videoConfLocalWindow = cloudICP.config["videoConfLocalWindow"]; } if (!!windowToolbarInfo) { if (undefined != windowToolbarInfo["userWindowId"]) { iuserWindowId = parseInt(windowToolbarInfo["userWindowId"]); cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["userWindowId"] = iuserWindowId; } if (undefined != windowToolbarInfo["showToolbar"]) { ishowToolbar = parseInt(windowToolbarInfo["showToolbar"]); } if (undefined != windowToolbarInfo["buttonIDs"]) { ibuttonIDs = parseInt(windowToolbarInfo["buttonIDs"]); } if (undefined != windowToolbarInfo["hide"]) { bHide = Boolean(windowToolbarInfo["hide"]); } if (undefined != windowToolbarInfo["enableDrag"]) { bEnableDrag = Boolean(windowToolbarInfo["enableDrag"]); } if (undefined != windowToolbarInfo["mode"]) { windowMode = windowToolbarInfo["mode"].toString(); } if (undefined != windowToolbarInfo["fmtType"]) { fmtType = windowToolbarInfo["fmtType"].toString(); } if (undefined != windowToolbarInfo["width"]) { iWidth = parseInt(windowToolbarInfo["width"]); } if (undefined != windowToolbarInfo["height"]) { iHeight = parseInt(windowToolbarInfo["height"]); } if (undefined != windowToolbarInfo["posX"]) { iPosX = parseInt(windowToolbarInfo["posX"]); } if (undefined != windowToolbarInfo["posY"]) { iPosY = parseInt(windowToolbarInfo["posY"]); } if (undefined != windowToolbarInfo["videoConfLocalWindow"]) { videoConfLocalWindow = windowToolbarInfo["videoConfLocalWindow"]; } if (undefined != windowToolbarInfo["videoResizeMode"]) { videoResizeMode = windowToolbarInfo["videoResizeMode"]; } } if ((!!windowInfo) && (!!windowInfo["iCid"])) { if (undefined != windowInfo["userWindowId"]) { iuserWindowId = parseInt(windowInfo["userWindowId"]); cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["userWindowId"] = iuserWindowId; } if (undefined != windowInfo["showToolbar"]) { ishowToolbar = parseInt(windowInfo["showToolbar"]); } if (undefined != windowInfo["buttonIDs"]) { ibuttonIDs = parseInt(windowInfo["buttonIDs"]); } if (undefined != windowInfo["mode"]) { windowMode = windowInfo["mode"].toString(); } if (undefined != windowInfo["fmtType"]) { fmtType = windowInfo["fmtType"].toString(); } if (undefined != windowInfo["width"]) { iWidth = parseInt(windowInfo["width"]); } if (undefined != windowInfo["height"]) { iHeight = parseInt(windowInfo["height"]); } if (undefined != windowInfo["posX"]) { iPosX = parseInt(windowInfo["posX"]); } if (undefined != windowInfo["posY"]) { iPosY = parseInt(windowInfo["posY"]); } if (undefined != windowInfo["hide"]) { bHide = Boolean(windowInfo["hide"]); } if (undefined != windowInfo["enableDrag"]) { bEnableDrag = Boolean(windowInfo["enableDrag"]); } if (undefined != windowInfo["videoConfLocalWindow"]) { videoConfLocalWindow = windowInfo["videoConfLocalWindow"]; } if (undefined != windowInfo["videoResizeMode"]) { videoResizeMode = windowInfo["videoResizeMode"]; } } cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["hide"] = bHide; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["enableDrag"] = bEnableDrag; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["showToolbar"] = ishowToolbar; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["buttonIDs"] = ibuttonIDs; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["width"] = iWidth; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["height"] = iHeight; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["posX"] = iPosX; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["posY"] = iPosY; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["winMode"] = windowMode; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["fmtType"] = fmtType; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["direction"] = "out"; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["rsp"] = event["rsp"]; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["videoConfLocalWindow"] = videoConfLocalWindow; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["tabPageId"] = reqId; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["videoResizeMode"] = videoResizeMode; if (0 != iuserWindowId) { param = "{\"description\":\"msp_create_video_window\", \"cmd\": 196610, \"param\":{\"resID\":{0}, \"windowName\": \"{1}\", \"mode\": \"{2}\", \"width\": {3}, \"height\": {4}, \"x\": {5}, \"y\":{6}, \"hide\": {7}, \"enableDrag\":{8}, \"scrollX\": {9}, \"scrollY\":{10}, \"showToolbar\": {11}, \"buttonIDs\": {12}, \"userWindowId\": {13}, \"videoResizeMode\": {15} }, \"reqId\": \"{14}\" }" .format( parseInt(value["cid"]), parseInt(value["cid"]), windowMode, iWidth, iHeight, iPosX, iPosY, bHide, bEnableDrag, 0, 0, ishowToolbar, ibuttonIDs, iuserWindowId, reqId, videoResizeMode ); } else { param = "{\"description\":\"msp_create_video_window\", \"cmd\": 196610, \"param\":{\"resID\":{0}, \"windowName\": \"{1}\", \"mode\": \"{2}\", \"width\": {3}, \"height\": {4}, \"x\": {5}, \"y\":{6}, \"hide\": {7}, \"enableDrag\":{8}, \"scrollX\": {9}, \"scrollY\":{10}, \"showToolbar\": {11}, \"buttonIDs\": {12}, \"videoResizeMode\": {14} }, \"reqId\": \"{13}\"}" .format( parseInt(value["cid"]), parseInt(value["cid"]), windowMode, iWidth, iHeight, iPosX, iPosY, bHide, bEnableDrag, 0, 0, ishowToolbar, ibuttonIDs, reqId, videoResizeMode ); } cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); //modify_by_caohui } var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[value["cid"]]; if (call && call.callType == callStatusMgr.MONITOR) { callStatusMgr.updateCallStatus(callStatusMgr.MONITOR, callStatusMgr.CONNECTING, event); break; //暂时不通知上层,等创建窗口成功后通知 } else if (call && call.callType == callStatusMgr.VIDEOCONF) { callStatusMgr.updateCallStatus(callStatusMgr.VIDEOCONF, callStatusMgr.CONNECTING, event); callStatusMgr.holdCall(value["cid"], reqId); break; //暂时不通知上层,等创建窗口成功后通知 } var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.VIDEO, callStatusMgr.CONNECTING, event); callStatusMgr.holdCall(event["value"]["cid"], reqId); //暂时不通知上层,等创建窗口成功后通知 //newEvent["value"]["calltype"] = "video"; //newEvent["value"]["src"] = ""; //newEvent["value"]["direction"] = "out"; //newEvent["value"]["ptz"] = event["value"]["ptz"]; //newEvent["value"]["mute"] = event["value"]["mute"]; //newEvent["eventName"] = "OnCallConnect"; //this.EVENT_LIST["VoiceNotify"]["OnCallConnect"](newEvent); break; case "3008": var videoMediaInfo = cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]; var delay = 0; if (undefined === videoMediaInfo || undefined === videoMediaInfo["isCreateWindowComplete"] || videoMediaInfo["isCreateWindowComplete"] != true) { delay = 5000; } // DTS2023030315978 3008消息与196610消息时序问题导致弹窗关不掉 setTimeout(() => { // 对端挂起事件 //停止振铃 var param = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}, \"reqId\": \"{1}\"}".format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); // 删除音频媒体通道 var param = "{\"description\":\"msp_delete_audio_channel\", \"cmd\": 65538, \"param\":{\"resID\":{0}}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ) cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); // 删除视频媒体通道 var bIsNeedDestroyWindow = false; var windowInfo = cloudICP.util.callStatusMgr.windowInfos[value["cid"]]; //视频点呼被动接听 、被动视频入会 var windowToolbarInfo = cloudICP.util.callStatusMgr.windowInfos[value["callee"]]; //视频点呼、视频监控、主动入会 var videoMediaWorkingInfo = cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]; var iuserWindowId = 0; if (undefined != windowInfo) { delete cloudICP.util.callStatusMgr.windowInfos[value["cid"]]; } if (undefined != windowToolbarInfo) { delete cloudICP.util.callStatusMgr.windowInfos[value["callee"]]; } if (undefined != videoMediaWorkingInfo) { //该视频窗口有业务正在使用 if (undefined != videoMediaWorkingInfo["value"]["userWindowId"]) { iuserWindowId = videoMediaWorkingInfo["value"]["userWindowId"]; } if (undefined != videoMediaWorkingInfo["value"]["isNeedDestroyWindow"] && true == videoMediaWorkingInfo["value"]["isNeedDestroyWindow"]) { //用户需要释放该视频窗口 bIsNeedDestroyWindow = true; delete cloudICP.util.callStatusMgr.videoMediaInfoBuf[iuserWindowId.toString()]; } delete cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]; } if (true == bIsNeedDestroyWindow) { param = "{\"description\":\"msp_delete_video_channel\", \"cmd\": 65540, \"param\":{\"resID\":{0}, \"isNeedDestroyWindow\":{1}, \"userWindowId\":{2}}}" .format( parseInt(value["cid"]), bIsNeedDestroyWindow, iuserWindowId ); } else if (0 != iuserWindowId) { param = "{\"description\":\"msp_delete_video_channel\", \"cmd\": 65540, \"param\":{\"resID\":{0}, \"userWindowId\":{1}}}" .format( parseInt(value["cid"]), iuserWindowId ); } else { param = "{\"description\":\"msp_delete_video_channel\", \"cmd\": 65540, \"param\":{\"resID\":{0}}}" .format( parseInt(value["cid"]) ); } cloudICP.util.CleanThisRepeatsMonitor(value["caller"], value["callee"]); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); // 删除内嵌窗口cid cloudICP.util.deleteWssflowModeCid(value["cid"]); cloudICP.util.callStatusMgr.delWssflowDemoMap(value["cid"]); var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[event["value"]["cid"]]; if (call && call.callType == callStatusMgr.MONITOR) { callStatusMgr.updateCallStatus(callStatusMgr.MONITOR, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "monitor"; newEvent["value"]["releasetype"] = "other"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "out"; newEvent["eventName"] = "OnCallRelease"; this.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); cloudICP.util.callStatusMgr.delMediaModeInfo(event["value"]); return; } else if (call && call.callType == callStatusMgr.VIDEOCONF) { callStatusMgr.updateCallStatus(callStatusMgr.VIDEOCONF, callStatusMgr.RELEASE, event); newEvent["value"]["confId"] = call["confId"]; newEvent["value"]["isVideo"] = "true"; newEvent["eventName"] = "OnConfRelease"; this.EVENT_LIST["PhoneConfNotify"]["OnConfRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfRelease"]); setTimeout(function() { var mconfInfo = cloudICP.util.callStatusMgr.confMgr[call["confId"]]; if (mconfInfo != null && ((mconfInfo["isEnding"] != undefined && mconfInfo[ "isEnding"] == true) || (mconfInfo["value"]["confStatus"]["status"] == "End"))) { return; } if (cloudICP.util.callStatusMgr.confSubMgr[call["confId"]] == undefined || cloudICP .util.callStatusMgr.confSubMgr[call["confId"]] != true) { return; } var ajaxCfg = { "type": "POST", "url": cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"], "data": { "opt": "unsub", "reqId": reqId, "confId": call["confId"] }, "callback": function(data) { if (data["rsp"] != "0") { var retEvent = { "eventName": "OnUnsubscribeConfFailure", "rsp": data["rsp"], } cloudICP.dispatch.event.EVENT_LIST["PhoneConfNotify"][ "OnUnsubscribeConfFailure" ].event = newEvent; sendEvent2Page(reqId, cloudICP.dispatch.event.EVENT_LIST["PhoneConfNotify"]["OnUnsubscribeConfFailure"]); } } } cloudICP.util.ajax(ajaxCfg); }, 500); return; } var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.VIDEO, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "video"; newEvent["value"]["releasetype"] = "other"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "out"; newEvent["eventName"] = "OnCallRelease"; this.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); cloudICP.util.callStatusMgr.delMediaModeInfo(event["value"]); }, delay); break; case "3009": // DC挂断事件 if (reqId == undefined || reqId == '' || reqId == '0') { reqId = mainPageId; } var tmpVideoMediaInfo; if (undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]) { tmpVideoMediaInfo = cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]; } //停止振铃 var param = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}, \"reqId\": \"{1}\"}".format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); // 删除音频媒体通道 var param = "{\"description\":\"msp_delete_audio_channel\", \"cmd\": 65538, \"param\":{\"resID\":{0}}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ) cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); var vidoReleaseTag = false; if (undefined != tmpVideoMediaInfo && undefined != tmpVideoMediaInfo["value"] && undefined != tmpVideoMediaInfo["value"]["releaseTag"]) { vidoReleaseTag = tmpVideoMediaInfo["value"]["releaseTag"]; } // 删除视频媒体通道 var bIsNeedDestroyWindow = false; var windowInfo = cloudICP.util.callStatusMgr.windowInfos[value["cid"]]; //视频点呼被动接听 、被动视频入会 var windowToolbarInfo = cloudICP.util.callStatusMgr.windowInfos[value["callee"]]; //视频点呼、视频监控、主动入会 var videoMediaWorkingInfo = cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]; var iuserWindowId = 0; if (undefined != windowInfo) { delete cloudICP.util.callStatusMgr.windowInfos[value["cid"]]; } if (undefined != windowToolbarInfo) { delete cloudICP.util.callStatusMgr.windowInfos[value["callee"]]; } if (undefined != videoMediaWorkingInfo) { //该视频窗口有业务正在使用 if (undefined != videoMediaWorkingInfo["value"]["userWindowId"]) { iuserWindowId = videoMediaWorkingInfo["value"]["userWindowId"]; } if (undefined != videoMediaWorkingInfo["value"]["isNeedDestroyWindow"] && true == videoMediaWorkingInfo["value"]["isNeedDestroyWindow"]) { //用户需要释放该视频窗口 bIsNeedDestroyWindow = true; delete cloudICP.util.callStatusMgr.videoMediaInfoBuf[iuserWindowId.toString()]; } delete cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]; } if (true == bIsNeedDestroyWindow) { param = "{\"description\":\"msp_delete_video_channel\", \"cmd\": 65540, \"param\":{\"resID\":{0}, \"isNeedDestroyWindow\":{1}, \"userWindowId\":{2}}}" .format( parseInt(value["cid"]), bIsNeedDestroyWindow, iuserWindowId ); } else if (0 != iuserWindowId) { param = "{\"description\":\"msp_delete_video_channel\", \"cmd\": 65540, \"param\":{\"resID\":{0}, \"userWindowId\":{1}}}" .format( parseInt(value["cid"]), iuserWindowId ); } else { param = "{\"description\":\"msp_delete_video_channel\", \"cmd\": 65540, \"param\":{\"resID\":{0}}}" .format( parseInt(value["cid"]) ); } cloudICP.util.CleanThisRepeatsMonitor(value["caller"], value["callee"]); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); if (vidoReleaseTag) { // 创建流已经释放场景不需要重复通知释放消息 break; } var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[event["value"]["cid"]]; if (call && call.callType == callStatusMgr.MONITOR) { callStatusMgr.updateCallStatus(callStatusMgr.MONITOR, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "monitor"; newEvent["value"]["releasetype"] = "self"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "out"; newEvent["eventName"] = "OnCallRelease"; this.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); cloudICP.util.callStatusMgr.delMediaModeInfo(event["value"]); break; } else if (call && call.callType == callStatusMgr.VIDEOCONF) { callStatusMgr.updateCallStatus(callStatusMgr.VIDEOCONF, callStatusMgr.RELEASE, event); newEvent["value"]["confId"] = call["confId"]; newEvent["value"]["isVideo"] = "true"; newEvent["eventName"] = "OnConfRelease"; this.EVENT_LIST["PhoneConfNotify"]["OnConfRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfRelease"]); setTimeout(function() { var mconfInfo = cloudICP.util.callStatusMgr.confMgr[call["confId"]]; if (mconfInfo != null && ((mconfInfo["isEnding"] != undefined && mconfInfo[ "isEnding"] == true) || (mconfInfo["value"]["confStatus"]["status"] == "End"))) { return; } if (cloudICP.util.callStatusMgr.confSubMgr[call["confId"]] == undefined || cloudICP .util.callStatusMgr.confSubMgr[call["confId"]] != true) { return; } var ajaxCfg = { "type": "POST", "url": cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"], "data": { "opt": "unsub", "reqId": reqId, "confId": call["confId"] }, "callback": function(data) { if (data["rsp"] != "0") { var retEvent = { "eventName": "OnUnsubscribeConfFailure", "rsp": data["rsp"], } cloudICP.dispatch.event.EVENT_LIST["PhoneConfNotify"][ "OnUnsubscribeConfFailure" ].event = retEvent; sendEvent2Page(reqId, cloudICP.dispatch.event.EVENT_LIST["PhoneConfNotify"]["OnUnsubscribeConfFailure"]); } } } cloudICP.util.ajax(ajaxCfg); }, 500); break; } callStatusMgr.updateCallStatus(callStatusMgr.VIDEO, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "video"; newEvent["value"]["releasetype"] = "self"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "out"; newEvent["eventName"] = "OnCallRelease"; this.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); cloudICP.util.callStatusMgr.delMediaModeInfo(event["value"]); break; case "3013": case "3015": case "3014": case "3016": // 被叫号码不存在 case "3017": // 对端服务不能使用 case "3021": // 对端不在线 case "3045": // 对端不支持该操作,可能是没有权限或者不支持该分辨率 case "3044": // 本端不支持该操作,可能是没有权限 case "3048": // 对端没有权限 case "3022": // 对端没有权限 case "2033": // 对端断电 // 呼出失败事件 //停止振铃 var param = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}, \"reqId\": \"{1}\"}".format( parseInt(value["cid"]), reqId ); var windowInfo = cloudICP.util.callStatusMgr.windowInfos[value["cid"]]; //视频点呼被动接听 、被动视频入会 if (undefined != windowInfo) { delete cloudICP.util.callStatusMgr.windowInfos[value["cid"]]; } if (undefined != value["callee"]) { var windowToolbarInfo = cloudICP.util.callStatusMgr.windowInfos[value[ "callee"]]; //视频点呼、视频监控、主动入会 if (undefined != windowToolbarInfo) { delete cloudICP.util.callStatusMgr.windowInfos[value["callee"]]; } } cloudICP.util.CleanThisRepeatsMonitor(value["caller"], value["callee"]); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); if (rsp == "3013") { //对端正在通话中 var param = "{\"description\":\"msp_play_tone\", \"cmd\": 131075, \"param\":{\"cid\": {0}, \"type\":3, \"delay\":0, \"duration\": 0, \"playcount\":1}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } else if (rsp == "3014" || rsp == "3048" || rsp == "3021") { //对端无法接通 var param = "{\"description\":\"msp_play_tone\", \"cmd\": 131075, \"param\":{\"cid\": {0}, \"type\":4, \"delay\":0, \"duration\": 0, \"playcount\":1}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } else if (rsp == "3016") { //对端号码不存在 var param = "{\"description\":\"msp_play_tone\", \"cmd\": 131075, \"param\":{\"cid\": {0}, \"type\":5, \"delay\":0, \"duration\": 0, \"playcount\":1}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } else if (rsp == "") { //本段没有权限 var param = "{\"description\":\"msp_play_tone\", \"cmd\": 131075, \"param\":{\"cid\": {0}, \"type\":6, \"delay\":0, \"duration\": 0, \"playcount\":1}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } else if (rsp == "") { //对端没有权限 var param = "{\"description\":\"msp_play_tone\", \"cmd\": 131075, \"param\":{\"cid\": {0}, \"type\":7, \"delay\":0, \"duration\": 0, \"playcount\":1}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } else if (rsp == "3015") { //对端无应答 var param = "{\"description\":\"msp_play_tone\", \"cmd\": 131075, \"param\":{\"cid\": {0}, \"type\":8, \"delay\":0, \"duration\": 0, \"playcount\":1}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } else if (rsp == "") { //对端正忙 var param = "{\"description\":\"msp_play_tone\", \"cmd\": 131075, \"param\":{\"cid\": {0}, \"type\":9, \"delay\":0, \"duration\": 0, \"playcount\":1}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } else if (rsp == "3044" || rsp == "3022" || rsp == "2033" || "3045") { //拨打业务无法支持 var param = "{\"description\":\"msp_play_tone\", \"cmd\": 131075, \"param\":{\"cid\": {0}, \"type\":10, \"delay\":0, \"duration\": 0, \"playcount\":1}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } var callStatusMgr = cloudICP.util.callStatusMgr; if (confInfo != undefined) { callStatusMgr.updateCallStatus(callStatusMgr.VIDEOCONF, callStatusMgr.RELEASE, event, confInfo); newEvent["value"]["confId"] = confInfo["confInternalId"]; newEvent["value"]["isVideo"] = "true"; newEvent["eventName"] = "OnConfFailure"; this.EVENT_LIST["PhoneConfNotify"]["OnConfFailure"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfFailure"]); break; } var call = callStatusMgr.allCalls[event["value"]["cid"]]; if (call && call.callType == callStatusMgr.MONITOR) { callStatusMgr.updateCallStatus(callStatusMgr.MONITOR, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "monitor"; newEvent["eventName"] = "OnDialOutFailure"; this.EVENT_LIST["VoiceNotify"]["OnDialOutFailure"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnDialOutFailure"]); break; } var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.VIDEO, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "video"; newEvent["eventName"] = "OnDialOutFailure"; this.EVENT_LIST["VoiceNotify"]["OnDialOutFailure"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnDialOutFailure"]); break; case "3053": //mrs notify if (call && call.callType == callStatusMgr.VIDEOCONF && confInfo != undefined) { newEvent["value"]["confId"] = confInfo["confInternalId"]; } newEvent["value"]["downloadurl"] = event["value"]["downloadurl"]; newEvent["value"]["playurl"] = event["value"]["playurl"]; newEvent["value"]["recordid"] = event["value"]["recordid"]; newEvent["eventName"] = "MRSInfoNotify"; this.EVENT_LIST["VoiceNotify"]["MRSInfoNotify"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["MRSInfoNotify"]); break; default: break; } } else { switch (rsp) { case "3002": if (reqId == undefined || reqId == '' || reqId == '0') { reqId = mainPageId; } newEvent["value"]["caller"] = from; var param = "{\"description\":\"msp_play_tone\", \"cmd\": 131075, \"param\":{\"cid\": {0}, \"type\":1, \"delay\":0, \"duration\": 0, \"playcount\":0}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); var callStatusMgr = cloudICP.util.callStatusMgr; if (confInfo != undefined) { callStatusMgr.updateCallStatus(callStatusMgr.VIDEOCONF, callStatusMgr.RINGING, event, confInfo); newEvent["value"]["confId"] = confInfo["confInternalId"]; newEvent["value"]["isVideo"] = "true"; newEvent["eventName"] = "OnConfDialInRinging"; this.EVENT_LIST["PhoneConfNotify"]["OnConfDialInRinging"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfDialInRinging"]); break; } callStatusMgr.updateCallStatus(callStatusMgr.VIDEO, callStatusMgr.RINGING, event); // 视频响铃事件 newEvent["value"]["calltype"] = "video"; newEvent["value"]["src"] = ""; newEvent["eventName"] = "OnDialInRinging"; this.EVENT_LIST["VoiceNotify"]["OnDialInRinging"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnDialInRinging"]); break; // 视频点呼被acked事件 case "3006": // 停止振铃 if (reqId == undefined || reqId == '' || reqId == '0') { reqId = mainPageId; } newEvent["value"]["caller"] = from; var param = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}, \"reqId\": \"{1}\"}".format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); // 建立音频媒体通道 if (value["local_audio"] != "0.0.0.0,0" && value["server_audio"] != "0.0.0.0,0") { let localArr = value["local_audio"].split(","); let serverArr = value["server_audio"].split(","); var user = cloudICP.userInfo["isdn"]; var peerUser = value["callee"]; if (user == peerUser) { peerUser = value["caller"]; } var callNumber; if (event["value"]["callee"] != cloudICP.userInfo["isdn"]) { callNumber = event["value"]["callee"] } else { callNumber = event["value"]["caller"]; } var param = "{\"description\":\"msp_create_audio_channel\", \"cmd\": 65537, \"param\":{\"resID\":{0}, \"mediaInfo\":{\"localIP\":\"{1}\", \"localPort\":{2}, \"remoteIP\":\"{3}\",\"remotePort\":{4}, \"playload\":{5}, \"ssrc\":{6}, \"number\": \"{7}\", \"user\":\"{8}\", \"peerUser\":\"{9}\"}}, \"reqId\": \"{10}\"}" .format( parseInt(value["cid"]), cloudICP.config.localIP, localArr[1], serverArr[0], serverArr[ 1], parseInt(value["audio"]), parseInt(value["audio_ssrc"]), parseInt(callNumber), user, peerUser, reqId ) cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } // 建立视频媒体通道 if (value["local_video"] != "0.0.0.0,0" && value["server_video"] != "0.0.0.0,0") { cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]] = event; var windowInfo = cloudICP.util.callStatusMgr.windowInfos[value["cid"]]; //视频点呼被动接听 、被动视频入会 var windowToolbarInfo = cloudICP.util.callStatusMgr.windowInfos[value[ "callee"]]; //视频点呼、视频监控、主动入会 var iuserWindowId = 0; var ishowToolbar = 1; var ibuttonIDs = 0; var bHide = false; var bEnableDrag = true; var iWidth = 640; var iHeight = 480; var iPosX = 400; var iPosY = 400; var fmtType = "TIN"; var windowMode = cloudICP.config["mode"]; var videoConfLocalWindow = null; var videoResizeMode = cloudICP.config["videoResizeMode"]; if ((undefined != value["confId"]) && (undefined != cloudICP.config["videoConfLocalWindow"])) { videoConfLocalWindow = cloudICP.config["videoConfLocalWindow"]; } if (!!windowToolbarInfo) { if (undefined != windowToolbarInfo["userWindowId"]) { iuserWindowId = parseInt(windowToolbarInfo["userWindowId"]); cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["userWindowId"] = iuserWindowId; newEvent["value"]["userWindowId"] = iuserWindowId; } if (undefined != windowToolbarInfo["showToolbar"]) { ishowToolbar = parseInt(windowToolbarInfo["showToolbar"]); } if (undefined != windowToolbarInfo["buttonIDs"]) { ibuttonIDs = parseInt(windowToolbarInfo["buttonIDs"]); } if (undefined != windowToolbarInfo["mode"]) { windowMode = windowToolbarInfo["mode"].toString(); } if (undefined != windowToolbarInfo["fmtType"]) { fmtType = windowToolbarInfo["fmtType"].toString(); } if (undefined != windowToolbarInfo["width"]) { iWidth = parseInt(windowToolbarInfo["width"]); } if (undefined != windowToolbarInfo["height"]) { iHeight = parseInt(windowToolbarInfo["height"]); } if (undefined != windowToolbarInfo["posX"]) { iPosX = parseInt(windowToolbarInfo["posX"]); } if (undefined != windowToolbarInfo["posY"]) { iPosY = parseInt(windowToolbarInfo["posY"]); } if (undefined != windowToolbarInfo["hide"]) { bHide = Boolean(windowToolbarInfo["hide"]); } if (undefined != windowToolbarInfo["enableDrag"]) { bEnableDrag = Boolean(windowToolbarInfo["enableDrag"]); } if (undefined != windowToolbarInfo["videoConfLocalWindow"]) { videoConfLocalWindow = windowToolbarInfo["videoConfLocalWindow"]; } } if ((!!windowInfo) && (!!windowInfo["iCid"])) { if (undefined != windowInfo["userWindowId"]) { iuserWindowId = parseInt(windowInfo["userWindowId"]); cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["userWindowId"] = iuserWindowId; newEvent["value"]["userWindowId"] = iuserWindowId; } if (undefined != windowInfo["showToolbar"]) { ishowToolbar = parseInt(windowInfo["showToolbar"]); } if (undefined != windowInfo["buttonIDs"]) { ibuttonIDs = parseInt(windowInfo["buttonIDs"]); } if (undefined != windowInfo["mode"]) { windowMode = windowInfo["mode"].toString(); } if (undefined != windowInfo["fmtType"]) { fmtType = windowInfo["fmtType"].toString(); } if (undefined != windowInfo["width"]) { iWidth = parseInt(windowInfo["width"]); } if (undefined != windowInfo["height"]) { iHeight = parseInt(windowInfo["height"]); } if (undefined != windowInfo["posX"]) { iPosX = parseInt(windowInfo["posX"]); } if (undefined != windowInfo["posY"]) { iPosY = parseInt(windowInfo["posY"]); } if (undefined != windowInfo["videoConfLocalWindow"]) { videoConfLocalWindow = windowInfo["videoConfLocalWindow"]; } if (undefined != windowInfo["hide"]) { bHide = Boolean(windowInfo["hide"]); } if (undefined != windowInfo["enableDrag"]) { bEnableDrag = Boolean(windowInfo["enableDrag"]); } if (undefined != windowInfo["videoResizeMode"]) { videoResizeMode = windowInfo["videoResizeMode"]; } } cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["hide"] = bHide; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["enableDrag"] = bEnableDrag; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["showToolbar"] = ishowToolbar; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["buttonIDs"] = ibuttonIDs; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["width"] = iWidth; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["height"] = iHeight; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["posX"] = iPosX; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["posY"] = iPosY; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["winMode"] = windowMode; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["fmtType"] = fmtType; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["direction"] = "in"; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["rsp"] = event["rsp"]; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["videoConfLocalWindow"] = videoConfLocalWindow; cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]["value"]["videoResizeMode"] = videoResizeMode; if (0 != iuserWindowId) { param = "{\"description\":\"msp_create_video_window\", \"cmd\": 196610, \"param\":{\"resID\":{0}, \"windowName\": \"{1}\", \"mode\": \"{2}\", \"width\": {3}, \"height\": {4}, \"x\": {5}, \"y\":{6}, \"hide\": {7}, \"enableDrag\":{8}, \"scrollX\": {9}, \"scrollY\":{10}, \"showToolbar\": {11}, \"buttonIDs\": {12}, \"userWindowId\": {13}, \"videoResizeMode\": {15} }, \"reqId\":\"{14}\" }" .format( parseInt(value["cid"]), parseInt(value["cid"]), windowMode, iWidth, iHeight, iPosX, iPosY, bHide, bEnableDrag, 0, 0, ishowToolbar, ibuttonIDs, iuserWindowId, reqId, videoResizeMode ); } else { param = "{\"description\":\"msp_create_video_window\", \"cmd\": 196610, \"param\":{\"resID\":{0}, \"windowName\": \"{1}\", \"mode\": \"{2}\", \"width\": {3}, \"height\": {4}, \"x\": {5}, \"y\":{6}, \"hide\": {7}, \"enableDrag\":{8}, \"scrollX\": {9}, \"scrollY\":{10}, \"showToolbar\": {11}, \"buttonIDs\": {12}, \"videoResizeMode\": {14} }, \"reqId\":\"{13}\" }" .format( parseInt(value["cid"]), parseInt(value["cid"]), windowMode, iWidth, iHeight, iPosX, iPosY, bHide, bEnableDrag, 0, 0, ishowToolbar, ibuttonIDs, reqId, videoResizeMode ); } cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); //modify_by_caohui } var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[value["cid"]]; if (call && call.callType == callStatusMgr.VIDEOCONF) { callStatusMgr.updateCallStatus(callStatusMgr.VIDEOCONF, callStatusMgr.CONNECTING, event); callStatusMgr.holdCall(value["cid"], reqId); break; //暂时不通知上层,等创建窗口成功后通知 } else if (call && call.callType == callStatusMgr.VIDEODISPATCH) { callStatusMgr.updateCallStatus(callStatusMgr.VIDEODISPATCH, callStatusMgr.CONNECTING, event); break; //暂时不通知上层,等创建窗口成功后通知 } callStatusMgr.updateCallStatus(callStatusMgr.VIDEO, callStatusMgr.CONNECTING, event); callStatusMgr.holdCall(value["cid"], reqId); //newEvent["value"]["calltype"] = "video"; //newEvent["value"]["src"] = ""; //newEvent["value"]["direction"] = "in"; //newEvent["value"]["ptz"] = value["ptz"]; //newEvent["value"]["mute"] = value["mute"]; //newEvent["eventName"] = "OnCallConnect"; //this.EVENT_LIST["VoiceNotify"]["OnCallConnect"](newEvent); break; case "3009": // DC挂断事件 if (reqId == undefined || reqId == '' || reqId == '0') { reqId = mainPageId; } //停止振铃 newEvent["value"]["caller"] = from; var param = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}, \"reqId\": \"{1}\"}".format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); // 删除音频媒体通道 var param = "{\"description\":\"msp_delete_audio_channel\", \"cmd\": 65538, \"param\":{\"resID\":{0}}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ) cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); // 删除视频媒体通道 var bIsNeedDestroyWindow = false; var windowInfo = cloudICP.util.callStatusMgr.windowInfos[value["cid"]]; //视频点呼被动接听 、被动视频入会 var windowToolbarInfo = cloudICP.util.callStatusMgr.windowInfos[value["callee"]]; //视频点呼、视频监控、主动入会 var videoMediaWorkingInfo = cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]; var iuserWindowId = 0; if (undefined != windowInfo) { delete cloudICP.util.callStatusMgr.windowInfos[value["cid"]]; } if (undefined != windowToolbarInfo) { delete cloudICP.util.callStatusMgr.windowInfos[value["callee"]]; } if (undefined != videoMediaWorkingInfo) { //该视频窗口有业务正在使用 if (undefined != videoMediaWorkingInfo["value"]["userWindowId"]) { iuserWindowId = videoMediaWorkingInfo["value"]["userWindowId"]; } if (undefined != videoMediaWorkingInfo["value"]["isNeedDestroyWindow"] && true == videoMediaWorkingInfo["value"]["isNeedDestroyWindow"]) { //用户需要释放该视频窗口 bIsNeedDestroyWindow = true; delete cloudICP.util.callStatusMgr.videoMediaInfoBuf[iuserWindowId.toString()]; } delete cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]; } if (true == bIsNeedDestroyWindow) { param = "{\"description\":\"msp_delete_video_channel\", \"cmd\": 65540, \"param\":{\"resID\":{0}, \"isNeedDestroyWindow\":{1}, \"userWindowId\":{2}}}" .format( parseInt(value["cid"]), bIsNeedDestroyWindow, iuserWindowId ); } else if (0 != iuserWindowId) { param = "{\"description\":\"msp_delete_video_channel\", \"cmd\": 65540, \"param\":{\"resID\":{0}, \"userWindowId\":{1}}}" .format( parseInt(value["cid"]), iuserWindowId ); } else { param = "{\"description\":\"msp_delete_video_channel\", \"cmd\": 65540, \"param\":{\"resID\":{0}}}" .format( parseInt(value["cid"]) ); } cloudICP.util.CleanThisRepeatsMonitor(value["caller"], value["callee"]); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[event["value"]["cid"]]; if (call && call.callType == callStatusMgr.VIDEOCONF) { callStatusMgr.updateCallStatus(callStatusMgr.VIDEOCONF, callStatusMgr.RELEASE, event); newEvent["value"]["confId"] = call["confId"]; newEvent["value"]["isVideo"] = "true"; newEvent["eventName"] = "OnConfRelease"; this.EVENT_LIST["PhoneConfNotify"]["OnConfRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfRelease"]); setTimeout(function() { var mconfInfo = cloudICP.util.callStatusMgr.confMgr[call["confId"]]; if (mconfInfo != null && ((mconfInfo["isEnding"] != undefined && mconfInfo[ "isEnding"] == true) || (mconfInfo["value"]["confStatus"]["status"] == "End"))) { return; } if (cloudICP.util.callStatusMgr.confSubMgr[call["confId"]] == undefined || cloudICP .util.callStatusMgr.confSubMgr[call["confId"]] != true) { return; } var ajaxCfg = { "type": "POST", "url": cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"], "data": { "opt": "unsub", "reqId": reqId, "confId": call["confId"] }, "callback": function(data) { if (data["rsp"] != "0") { var retEvent = { "eventName": "OnUnsubscribeConfFailure", "rsp": data["rsp"], } cloudICP.dispatch.event.EVENT_LIST["PhoneConfNotify"][ "OnUnsubscribeConfFailure" ].event = retEvent; sendEvent2Page(reqId, cloudICP.dispatch.event.EVENT_LIST["PhoneConfNotify"]["OnConfRelease"]); } } } cloudICP.util.ajax(ajaxCfg); }, 500); break; } else if (call && call.callType == callStatusMgr.VIDEODISPATCH) { callStatusMgr.updateCallStatus(callStatusMgr.VIDEODISPATCH, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "dispatch"; newEvent["value"]["direction"] = "in"; newEvent["value"]["releasetype"] = "self"; newEvent["value"]["src"] = event["value"]["uri"]; newEvent["eventName"] = "OnCallRelease"; this.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); break; } callStatusMgr.updateCallStatus(callStatusMgr.VIDEO, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "video"; newEvent["value"]["direction"] = "in"; newEvent["value"]["releasetype"] = "self"; newEvent["value"]["src"] = ""; newEvent["eventName"] = "OnCallRelease"; this.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); cloudICP.util.callStatusMgr.delMediaModeInfo(event["value"]); break; case "3008": if (reqId == undefined || reqId == '' || reqId == '0') { reqId = mainPageId; } cloudICP.util.callStatusMgr.delWssflowDemoMap(value["cid"]); case "3010": case "3013": // 对端拒接事件 //停止振铃 if (reqId == undefined || reqId == '' || reqId == '0') { reqId = mainPageId; } newEvent["value"]["caller"] = from; var param = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}, \"reqId\": \"{1}\"}".format( parseInt(value["cid"]), reqId ); var windowInfo = cloudICP.util.callStatusMgr.windowInfos[value["cid"]]; //视频点呼被动接听 、被动视频入会 if (undefined != windowInfo) { delete cloudICP.util.callStatusMgr.windowInfos[value["cid"]]; } cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); // 删除音频媒体通道 var param = "{\"description\":\"msp_delete_audio_channel\", \"cmd\": 65538, \"param\":{\"resID\":{0}}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ) cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); // 删除视频媒体通道 var bIsNeedDestroyWindow = false; var windowInfo = cloudICP.util.callStatusMgr.windowInfos[value["cid"]]; //视频点呼被动接听 、被动视频入会 var windowToolbarInfo = cloudICP.util.callStatusMgr.windowInfos[value["callee"]]; //视频点呼、视频监控、主动入会 var videoMediaWorkingInfo = cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]; var iuserWindowId = 0; if (undefined != windowInfo) { delete cloudICP.util.callStatusMgr.windowInfos[value["cid"]]; } if (undefined != windowToolbarInfo) { delete cloudICP.util.callStatusMgr.windowInfos[value["callee"]]; } if (undefined != videoMediaWorkingInfo) { //该视频窗口有业务正在使用 if (undefined != videoMediaWorkingInfo["value"]["userWindowId"]) { iuserWindowId = videoMediaWorkingInfo["value"]["userWindowId"]; } if (undefined != videoMediaWorkingInfo["value"]["isNeedDestroyWindow"] && true == videoMediaWorkingInfo["value"]["isNeedDestroyWindow"]) { //用户需要释放该视频窗口 bIsNeedDestroyWindow = true; delete cloudICP.util.callStatusMgr.videoMediaInfoBuf[iuserWindowId.toString()]; } delete cloudICP.util.callStatusMgr.videoMediaInfoBuf[value["cid"]]; } if (true == bIsNeedDestroyWindow) { param = "{\"description\":\"msp_delete_video_channel\", \"cmd\": 65540, \"param\":{\"resID\":{0}, \"isNeedDestroyWindow\":{1}, \"userWindowId\":{2}}}" .format( parseInt(value["cid"]), bIsNeedDestroyWindow, iuserWindowId ); } else if (0 != iuserWindowId) { param = "{\"description\":\"msp_delete_video_channel\", \"cmd\": 65540, \"param\":{\"resID\":{0}, \"userWindowId\":{1}}}" .format( parseInt(value["cid"]), iuserWindowId ); } else { param = "{\"description\":\"msp_delete_video_channel\", \"cmd\": 65540, \"param\":{\"resID\":{0}}}" .format( parseInt(value["cid"]) ); } cloudICP.util.CleanThisRepeatsMonitor(value["caller"], value["callee"]); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[event["value"]["cid"]]; if (call && call.callType == callStatusMgr.VIDEOCONF) { callStatusMgr.updateCallStatus(callStatusMgr.VIDEOCONF, callStatusMgr.RELEASE, event); newEvent["value"]["confId"] = call["confId"]; newEvent["value"]["isVideo"] = "true"; newEvent["eventName"] = "OnConfRelease"; this.EVENT_LIST["PhoneConfNotify"]["OnConfRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfRelease"]); setTimeout(function() { var mconfInfo = cloudICP.util.callStatusMgr.confMgr[call["confId"]]; if (mconfInfo != null && ((mconfInfo["isEnding"] != undefined && mconfInfo[ "isEnding"] == true) || (mconfInfo["value"]["confStatus"]["status"] == "End"))) { return; } if (cloudICP.util.callStatusMgr.confSubMgr[call["confId"]] == undefined || cloudICP .util.callStatusMgr.confSubMgr[call["confId"]] != true) { return; } var ajaxCfg = { "type": "POST", "url": cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"], "data": { "opt": "unsub", "reqId": reqId, "confId": call["confId"] }, "callback": function(data) { if (data["rsp"] != "0") { var retEvent = { "eventName": "OnUnsubscribeConfFailure", "rsp": data["rsp"], } cloudICP.dispatch.event.EVENT_LIST["PhoneConfNotify"][ "OnUnsubscribeConfFailure" ].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnUnsubscribeConfFailure"]); } } } cloudICP.util.ajax(ajaxCfg); }, 500); break; } else if (call && call.callType == callStatusMgr.VIDEODISPATCH) { callStatusMgr.updateCallStatus(callStatusMgr.VIDEODISPATCH, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "dispatch"; newEvent["value"]["direction"] = "in"; newEvent["value"]["releasetype"] = "other"; newEvent["value"]["src"] = event["value"]["uri"]; newEvent["eventName"] = "OnCallRelease"; this.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); break; } callStatusMgr.updateCallStatus(callStatusMgr.VIDEO, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "video"; newEvent["value"]["direction"] = "in"; newEvent["value"]["releasetype"] = "other"; newEvent["value"]["src"] = ""; newEvent["eventName"] = "OnCallRelease"; this.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); cloudICP.util.callStatusMgr.delMediaModeInfo(event["value"]); break; case "3011": if (reqId == undefined || reqId == '' || reqId == '0') { reqId = mainPageId; } newEvent["value"]["caller"] = from; var param = "{\"description\":\"msp_play_tone\", \"cmd\": 131075, \"param\":{\"cid\": {0}, \"type\":1, \"delay\":0, \"duration\": 0, \"playcount\":0}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.VIDEODISPATCH, callStatusMgr.RINGING, event); newEvent["value"]["calltype"] = "dispatch"; newEvent["eventName"] = "OnDialInRinging"; newEvent["value"]["src"] = event["value"]["uri"]; this.EVENT_LIST["VoiceNotify"]["OnDialInRinging"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnDialInRinging"]); break; case "3040": if (reqId == undefined || reqId == '' || reqId == '0') { reqId = mainPageId; } newEvent["value"]["caller"] = from; var callStatusMgr = cloudICP.util.callStatusMgr; if (confInfo != undefined) { callStatusMgr.updateCallStatus(callStatusMgr.VIDEOCONF, callStatusMgr.NEW, event); break; } var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[event["value"]["cid"]]; if (call && call.callType == callStatusMgr.VIDEODISPATCH) { callStatusMgr.updateCallStatus(callStatusMgr.VIDEODISPATCH, callStatusMgr.NEW, event); newEvent["value"]["calltype"] = "dispatch"; newEvent["value"]["direction"] = "in"; newEvent["value"]["src"] = event["value"]["uri"]; newEvent["eventName"] = "OnConnectProceeding"; this.EVENT_LIST["VoiceNotify"]["OnConnectProceeding"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnConnectProceeding"]); break; } callStatusMgr.updateCallStatus(callStatusMgr.VIDEO, callStatusMgr.NEW, event); newEvent["value"]["calltype"] = "video"; newEvent["value"]["direction"] = "in"; newEvent["value"]["src"] = ""; newEvent["eventName"] = "OnConnectProceeding"; this.EVENT_LIST["VoiceNotify"]["OnConnectProceeding"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnConnectProceeding"]); break; case "3045": // 视频监控失败 // 停止振铃 newEvent["value"]["caller"] = from; var param = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}, \"reqId\": \"{1}\"}".format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.MONITOR, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "monitor"; newEvent["eventName"] = "OnDialOutFailure"; this.EVENT_LIST["VoiceNotify"]["OnDialOutFailure"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnDialOutFailure"]); break; case "3053": //mrs notify if (call && call.callType == callStatusMgr.VIDEOCONF && confInfo != undefined) { newEvent["value"]["confId"] = confInfo["confInternalId"]; } newEvent["value"]["downloadurl"] = event["value"]["downloadurl"]; newEvent["value"]["playurl"] = event["value"]["playurl"]; newEvent["value"]["recordid"] = event["value"]["recordid"]; newEvent["eventName"] = "MRSInfoNotify"; this.EVENT_LIST["VoiceNotify"]["MRSInfoNotify"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["MRSInfoNotify"]); break; default: break; } } } /** * 处理组呼通知 */ ICPSDK_Dispatch_Event.prototype.delGroupCallNotify = function(event) { var reqId = event.reqId; if (reqId == null || reqId == undefined) {reqId = "0";} var value = event["value"]; if (event["opt"] == "speaker") { if (event["rsp"] == "1001") { var retEvent = { "eventName": "OnTalkingGroupCallStart", "rsp": event["rsp"], "value": { "grpid": event["grpid"], "cid": event["value"]["cid"], "from": event["value"]["from"], "speaker": event["value"]["speaker"] } } this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallStart"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallStart"]); } else if (event["rsp"] == "1003") { // 组呼放权事件 var retEvent = { "eventName": "OnTalkingGroupCallPTTSuccess", "rsp": event["rsp"], "value": { "grpid": event["grpid"], "from": event["value"]["from"] } } this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallPTTSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallPTTSuccess"]); } else if (event["rsp"] == "1006") { // 建立音频媒体通道 if (value["local"] != "0.0.0.0,0" && value["server"] != "0.0.0.0,0") { let localArr = value["local"].split(","); let serverArr = value["server"].split(","); var user = cloudICP.userInfo["isdn"]; var peerUser = value["callee"]; if (user == peerUser) { peerUser = value["caller"]; } var param = "{\"description\":\"msp_create_audio_channel\", \"cmd\": 65537, \"param\":{\"resID\":{0}, \"mediaInfo\":{\"localIP\":\"{1}\", \"localPort\":{2}, \"remoteIP\":\"{3}\",\"remotePort\":{4}, \"playload\":{5}, \"ssrc\":{6}, \"number\": \"{7}\",\"user\":\"{8}\", \"peerUser\":\"{9}\"}}, \"reqId\": \"{10}\"}" .format( parseInt(event["value"]["cid"]), cloudICP.config.localIP, localArr[1], serverArr[0], serverArr[1], parseInt(value["audio"]), parseInt(value["audio_ssrc"]), parseInt(event[ "grpid"]), user, peerUser, reqId ) cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); cloudICP.dispatch.group.current_groupcall_num += 1; } var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.GROUP, callStatusMgr.NEW, event); // 组呼开始事件 var retEvent = { "eventName": "OnTalkingGroupCallPTTStart", "rsp": event["rsp"], "value": { "grpid": event["grpid"], "cid": event["value"]["cid"], "from": event["value"]["from"], "speaker": event["value"]["speaker"] } } this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallPTTStart"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallPTTStart"]); // 判断该群组是否被静音,如果在列表中则被静音 if (cloudICP.util.includes(cloudICP.grpList, event["grpid"])) { var meidaSDKparam = "{\"description\":\"msp_quite_audio_channel\", \"cmd\": 65543, \"param\":{\"resID\": {0}, \"peerID\": {0}, \"quiet\":true}}".format( parseInt(event["value"]["cid"]), parseInt(event["grpid"]) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); } else { if (cloudICP.grpVolumeList[event["grpid"]]) { var meidaSDKparam = "{\"description\":\"msp_set_audio_Volume\", \"cmd\": 65545, \"param\":{\"resID\": {0}, \"peerID\": {1}, \"newVolume\": {2} }}".format( parseInt(event["value"]["cid"]), parseInt(event["grpid"]), parseFloat(cloudICP.grpVolumeList[event["grpid"]]) ); } else { var meidaSDKparam = "{\"description\":\"msp_set_audio_Volume\", \"cmd\": 65545, \"param\":{\"resID\": {0}, \"peerID\": {1}, \"newVolume\": {2} }}".format( parseInt(event["value"]["cid"]), parseInt(event["grpid"]), "50" ); } cloudICP.dispatch.webSocket.sendDataToMediaSDK(meidaSDKparam, true); } // 添加grpid和cid对到grdList中,用于管理组呼静音 cloudICP.grpCidList[event["grpid"]] = event["value"]["cid"]; } else if (event["rsp"] == "1011") { // 组呼权限更新通知 var retEvent = { "eventName": "OnTalkingGroupCallPTTNotify", "rsp": event["rsp"], "value": { "grpid": event["grpid"], "name": event["value"]["name"], "speaker": event["value"]["speaker"] } } this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallPTTNotify"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallPTTNotify"]); } else if (event["rsp"] == "1012") { // 无人占权事件 var retEvent = { "eventName": "OnTalkingGroupCallPTTIdle", "rsp": event["rsp"], "value": { "grpid": event["grpid"], } } if (cloudICP.dispatch.group.isCurrentPtt["grpid"] == event["grpid"]) { cloudICP.dispatch.group.isCurrentPtt = { "grpid": event["isdn"], "isPtt": false }; } this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallPTTIdle"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallPTTIdle"]); } } else if (event["opt"] = "state") { if (event["rsp"] == "1007") { // 退出组呼成功 var callStatusMgr = cloudICP.util.callStatusMgr; var groupCid = callStatusMgr.groupCallMgr[event["grpid"]] // 删除音频媒体通道 var param = "{\"description\":\"msp_delete_audio_channel\", \"cmd\": 65538, \"param\":{\"resID\":{0}}, \"reqId\": \"{1}\"}" .format( parseInt(groupCid), reqId ) cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); cloudICP.dispatch.group.current_groupcall_num -= 1; if (cloudICP.dispatch.group.isCurrentPtt["grpid"] == event["grpid"]) { cloudICP.dispatch.group.isCurrentPtt = { "grpid": event["grpid"], "isPtt": false }; } // 组呼关闭事件 var retEvent = { "eventName": "OnTalkingGroupCallStop", "rsp": event["rsp"], "value": { "grpid": event["grpid"], } } this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallStop"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallStop"]); } else if (event["rsp"] == "1008") { // 删除音频媒体通道 var callStatusMgr = cloudICP.util.callStatusMgr; var groupCid = callStatusMgr.groupCallMgr[event["grpid"]] var param = "{\"description\":\"msp_delete_audio_channel\", \"cmd\": 65538, \"param\":{\"resID\":{0}}, \"reqId\": \"{1}\"}" .format( parseInt(groupCid), reqId ) cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); cloudICP.dispatch.group.current_groupcall_num -= 1; // 组呼关闭事件 var retEvent = { "eventName": "OnTalkingGroupCallRelease", "rsp": event["rsp"], "value": { "grpid": event["grpid"], } } this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallRelease"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallRelease"]); // 删除grpCidList中对应的item delete cloudICP.grpCidList[event["grpid"]]; } else if (event["rsp"] == "1005") { // 组呼抢权失败事件 var retEvent = { "eventName": "OnTalkingGroupCallPTTFailure", "rsp": event["rsp"], "value": { "grpid": event["grpid"], } } this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallPTTFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallPTTFailure"]); } else if (event["rsp"] == "1017") { // 组呼发起失败事件 var retEvent = { "eventName": "OnTalkingGroupCallFailure", "rsp": event["rsp"], "value": { "grpid": event["grpid"], } } this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallFailure"]); } else if (event["rsp"] == "1003") { // 组呼请求事件 var retEvent = { "eventName": "OnTalkingGroupCallPTTSuccess", "rsp": event["rsp"], "value": { "grpid": event["grpid"], "from": event["from"], } } this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallPTTSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupCallPTTSuccess"]); } else if (event["rsp"] == "1014") { // 紧急组呼通知 var retEvent = { "eventName": "OnTalkingGourpEmergencyCallStart", "rsp": event["rsp"], "value": { "grpid": event["grpid"], "name": event["value"]["name"], "speaker": event["value"]["speaker"], } } this.EVENT_LIST["GroupCallNotify"]["OnTalkingGourpEmergencyCallStart"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupCallNotify"]["OnTalkingGourpEmergencyCallStart"]); } else if (event["rsp"] == "1028") { //mrs notify var retEvent = { "eventName": "GroupMRSInfoNotify", "rsp": event["rsp"], "value": { "grpid": event["grpid"], "cid": event["value"]["cid"], "downloadurl": event["value"]["downloadurl"], "playurl": event["value"]["playurl"], "recordid": event["value"]["recordid"] } }; this.EVENT_LIST["GroupCallNotify"]["GroupMRSInfoNotify"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupCallNotify"]["GroupMRSInfoNotify"]); } else if (event["rsp"] == "1015") { // 普通组呼 切换为 紧急组呼 var retEvent = { "eventName": "OnTalkingGroupEmergencyCallUpdate", "rsp": event["rsp"], "value": { "grpid": event["grpid"], "name": event["value"]["name"], "speaker": event["value"]["speaker"], } } this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupEmergencyCallUpdate"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupCallNotify"]["OnTalkingGroupEmergencyCallUpdate"]); } } } /** * 处理资源状态通知 */ ICPSDK_Dispatch_Event.prototype.delResourceNotify = function(event) { var reqId = event.reqId; if (reqId == null || reqId == undefined) {reqId = "0";} var opt = event["opt"]; var statusValue = event["statusvalue"]; var statusType = event["statustype"]; switch (statusType) { case "18": cloudICP.util.callStatusMgr.updateUserStatus(event); var retEvent = { "eventName": "OnUserStatusNotify", "list": [{ "isdn": event["value"]["isdn"], "peerid": event["value"]["peerid"], "statustype": event["statustype"], "statusvalue": event["statusvalue"], "calltype": event["value"]["calltype"] }] }; this.EVENT_LIST["VoiceNotify"]["OnUserStatusNotify"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnUserStatusNotify"]); break; case "20": if (statusValue == "4005") { var retEvent = { "eventName": "OnDiscreetlistenStart", "rsp": "0", "value": { "to": event["value"]["isdn"] } }; this.EVENT_LIST["VoiceNotify"]["OnDiscreetlistenStart"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnDiscreetlistenStart"]); } else if (statusValue == "4006") { var retEvent = { "eventName": "OnDiscreetlistenStop", "rsp": "0", "value": { "to": event["value"]["isdn"] } }; this.EVENT_LIST["VoiceNotify"]["OnDiscreetlistenStop"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnDiscreetlistenStop"]); } break; case "21": if (statusValue == "4026") { var retEvent = { "eventName": "OnTalkingGroupMemberChangeFailure", "rsp": event["value"]["cause"], "value": { "grpid": event["value"]["attaching"], "isdn": event["isdn"], } }; this.EVENT_LIST["GroupNotify"]["OnTalkingGroupMemberChangeFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupNotify"]["OnTalkingGroupMemberChangeFailure"]); } else if (statusValue == "4024") { var retEvent = { "eventName": "OnDynamicGroupChangeSuccess", "rsp": event["value"]["cause"], "value": { "grpid": event["value"]["attaching"], "isdn": event["user"], } }; this.EVENT_LIST["GroupNotify"]["OnDynamicGroupChangeSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupNotify"]["OnDynamicGroupChangeSuccess"]); } break; case "22": if (statusValue == "4021" || statusValue == "4022" || statusValue == "4023") { var retEvent = { "eventName": "OnVideoDispatchStatusNotify", "rsp": event["statusvalue"], "value": { "src": event["value"]["camid"], "peerid": event["value"]["peerid"], } }; this.EVENT_LIST["VideoNotify"]["OnVideoDispatchStatusNotify"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VideoNotify"]["OnVideoDispatchStatusNotify"]); } break; case "24": if (statusValue == "4036" || statusValue == "4038" || statusValue == "4044" || statusValue == "4045") { var retEvent = { "eventName": "OnChangePatchGroupMemberFailure", "rsp": "0", "value": { "grpid": event["isdn"], "isdn": event["value"]["memberid"], "rsp": event["value"]["cause"], "opt": (statusValue == "4036" || statusValue == "4044") ? "create" : "delete" } }; this.EVENT_LIST["GroupNotify"]["OnChangePatchGroupMemberFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupNotify"]["OnChangePatchGroupMemberFailure"]); } if (statusValue == "4035" || statusValue == "4037" ) { var retEvent = { "eventName": "OnChangePatchGroupMemberSucess", "rsp": "0", "value": { "grpid": event["isdn"], "isdn": event["value"]["memberid"], "rsp": event["value"]["cause"], "opt": statusValue == "4035" ? "create" : "delete" } }; this.EVENT_LIST["GroupNotify"]["OnChangePatchGroupMemberSucess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupNotify"]["OnChangePatchGroupMemberSucess"]); } if (statusValue == "4031" || statusValue == "4033") { var retEvent = { "eventName": "OnPatchGroupOptSuccess", "rsp": "0", "value": { "grpid": event["isdn"], "rsp": event["value"]["cause"], "opt": statusValue == "4031" ? "create" : "delete" } }; this.EVENT_LIST["GroupNotify"]["OnPatchGroupOptSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupNotify"]["OnPatchGroupOptSuccess"]); } if (statusValue == "4032" || statusValue == "4034" || statusValue == "4042" || statusValue == "4043") { //派接组创建失败 var retEvent = { "eventName": "OnPatchGroupOptFailed", "rsp": "0", "value": { "grpid": event["isdn"], "rsp": event["value"]["cause"], "opt": (statusValue == "4032" || statusValue == "4042") ? "create" : "delete" } }; this.EVENT_LIST["GroupNotify"]["OnPatchGroupOptFailed"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupNotify"]["OnPatchGroupOptFailed"]); return; } break; case "29": var retEvent = { "eventName": "OnVDMStatusNotify", "rsp": event["statusvalue"] }; this.EVENT_LIST["MSPNotify"]["OnVDMStatusNotify"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["MSPNotify"]["OnVDMStatusNotify"]); break; case "30": if (statusValue == "4090") { // 创会成功 var retEvent = { "eventName": "OnCreateConfSuccess", "rsp": "0", "value": { "confId": event["value"]["confInternalId"], "passcode": event["value"]["passcode"], "unifiedAccessCode": event["value"]["unifiedAccessCode"], "isVideo": event["value"]["isVideo"], "url": event["value"]["url"] } }; cloudICP.util.callStatusMgr.updateConfInfo(retEvent["value"], true); if (undefined != event["value"]["time"] && undefined != event["value"]["timeZone"]) { retEvent["value"]["time"] = event["value"]["time"]; retEvent["value"]["timeZone"] = event["value"]["timeZone"]; this.EVENT_LIST["PhoneConfNotify"]["OnCreateConfSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnCreateConfSuccess"]); break; } else { this.EVENT_LIST["PhoneConfNotify"]["OnCreateConfSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnCreateConfSuccess"]); } var strWindowinfo = cloudICP.util.callStatusMgr.windowInfos[2147483647]; cloudICP.util.callStatusMgr.windowInfos[event["value"]["unifiedAccessCode"]] = strWindowinfo; var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"]; var ajaxCfg = { "type": "POST", "url": url, "data": { "opt": "join", "param": { "confId": event["value"]["confInternalId"], "fmt": cloudICP.util.callStatusMgr.fmt, "video_format": cloudICP.config.cameraInfo.toString(), "audio_format": "1", "unifiedAccessCode": event["value"]["unifiedAccessCode"], "passcode": event["value"]["passcode"], "isVideo": event["value"]["isVideo"] == "1" ? "true" : "false", "reqId": reqId } }, "callback": function(data) { cloudICP.util.log(undefined, { "logLevel": "info", "logMsg": "connectToSDKServer: WebSocket message received: joinConf: " + JSON.stringify(data) }); } } cloudICP.util.ajax(ajaxCfg); } else if (statusValue == "4091") { // 创会失败 var retEvent = { "eventName": "OnCreateConfFailure", "rsp": event["value"]["rsp"], "value": { "confId": event["value"]["confInternalId"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnCreateConfFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnCreateConfFailure"]); } break; case "31": if (statusValue == "4090") { // 结束会议成功 var retEvent = { "eventName": "OnEndConfSuccess", "rsp": "0", "value": { "confId": event["value"]["confId"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnEndConfSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnEndConfSuccess"]); } else if (statusValue == "4091") { // 结束会议失败 var retEvent = { "eventName": "OnEndConfFailure", "rsp": event["value"]["rsp"], "value": { "confId": event["value"]["confId"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnEndConfFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnEndConfFailure"]); } break; case "32": if (statusValue == "4081") { var retEvent = { "eventName": "PushServerToken register to AAS fail", "rsp": event["statusvalue"], }; this.EVENT_LIST["ResourceNotify"]["OnPushConnectFail"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["ResourceNotify"]["OnPushConnectFail"]); } else if (statusValue == "4082") { var retEvent = { "eventName": "Get PushServerToken fail", "rsp": event["statusvalue"], }; this.EVENT_LIST["ResourceNotify"]["OnPushGetTokenFail"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["ResourceNotify"]["OnPushGetTokenFail"]); } else if (statusValue == "4083") { var retEvent = { "eventName": "PushServerToken register to AAS success", "rsp": event["statusvalue"], }; this.EVENT_LIST["ResourceNotify"]["OnPushConnectSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["ResourceNotify"]["OnPushConnectSuccess"]); } break; case "34": var value = event["value"]; if (statusValue == "4090") { var retEvent = { "eventName": "OnQueryConferenceByIdSuccess", "rsp": "0", "value": { "confExternalId": value["confExternalId"], "confInternalId": value["confInternalId"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryConferenceByIdSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryConferenceByIdSuccess"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnQueryConferenceByIdFailure", "rsp": event["value"]["rsp"] }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryConferenceByIdFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryConferenceByIdFailure"]); } break; case "35": var value = event["value"]; if (value["msgType"] == "ConfMuteMember") { if (value["params"] == "mute") { if (statusValue == "4090") { var retEvent = { "eventName": "OnMuteConfMemberSuccess", "rsp": "0", "value": { "confId": value["confId"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnMuteConfMemberSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnMuteConfMemberSuccess"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnMuteConfMemberFailure", "rsp": event["value"]["rsp"], "value": { "confId": value["confId"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnMuteConfMemberFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnMuteConfMemberFailure"]); } } else if (value["params"] == "unmute") { if (statusValue == "4090") { var retEvent = { "eventName": "OnUnmuteConfMemberSuccess", "rsp": "0", "value": { "confId": value["confId"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnUnmuteConfMemberSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnUnmuteConfMemberSuccess"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnUnmuteConfMemberFailure", "rsp": event["value"]["rsp"], "value": { "confId": value["confId"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnUnmuteConfMemberFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnUnmuteConfMemberFailure"]); } } } else if (value["msgType"] == "SetFloor" || value["msgType"] == "ConfFreeMode") { var IsSpoken = "false"; if (value["msgType"] == "SetFloor") { IsSpoken = "true" } if (value["params"] == "isSpoken") { if (statusValue == "4090") { var retEvent = { "eventName": "OnSetSpokenMemberSuccess", "rsp": "0", "value": { "confId": value["confId"], "isSpoken": IsSpoken } }; this.EVENT_LIST["PhoneConfNotify"]["OnSetSpokenMemberSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnSetSpokenMemberSuccess"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnSetSpokenMemberFailure", "rsp": event["value"]["rsp"], "retMsg": event["value"]["retMsg"], "value": { "confId": value["confId"], "isSpoken": IsSpoken } }; this.EVENT_LIST["PhoneConfNotify"]["OnSetSpokenMemberFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnSetSpokenMemberFailure"]); } } } else if (value["msgType"] == "ConfMuteConf") { if (value["params"] == "mute") { if (statusValue == "4090") { var retEvent = { "eventName": "OnMuteConfSuccess", "rsp": "0", "value": { "confId": value["confId"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnMuteConfSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnMuteConfSuccess"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnMuteConfFailure", "rsp": event["value"]["rsp"], "value": { "confId": value["confId"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnMuteConfFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnMuteConfFailure"]); } break; } else if (value["params"] == "unmute") { if (statusValue == "4090") { var retEvent = { "eventName": "OnUnmuteConfSuccess", "rsp": "0", "value": { "confId": value["confId"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnUnmuteConfSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnUnmuteConfSuccess"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnUnmuteConfFailure", "rsp": event["value"]["rsp"], "value": { "confId": value["confId"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnUnmuteConfFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnUnmuteConfFailure"]); } break; } } else if (value["msgType"] == "ConfBroadcastMixPicture") { if (statusValue == "4090") { var retEvent = { "eventName": "OnBroadcastMixPictureSuccess", "rsp": "0", "value": { "confId": value["confId"], "member": value["members"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnBroadcastMixPictureSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnBroadcastMixPictureSuccess"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnBroadcastMixPictureFailure", "rsp": event["value"]["rsp"], "value": { "confId": value["confId"], } }; this.EVENT_LIST["PhoneConfNotify"]["OnBroadcastMixPictureFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnBroadcastMixPictureFailure"]); } } else if (value["msgType"] == "ConfCancelBroadcastMixPicture") { if (statusValue == "4090") { var retEvent = { "eventName": "OnCancelBroadcastMixPictureSuccess", "rsp": "0", "value": { "confId": value["confId"], "member": value["members"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnCancelBroadcastMixPictureSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnCancelBroadcastMixPictureSuccess"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnCancelBroadcastMixPictureFailure", "rsp": event["value"]["rsp"], "value": { "confId": value["confId"], } }; this.EVENT_LIST["PhoneConfNotify"]["OnCancelBroadcastMixPictureFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnCancelBroadcastMixPictureFailure"]); } } else if (value["msgType"] == "ConfBroadcastPicture") { if (statusValue == "4090") { var retEvent = { "eventName": "OnBroadcastConfMemberSuccess", "rsp": "0", "value": { "confId": value["confId"], "member": value["members"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnBroadcastConfMemberSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnBroadcastConfMemberSuccess"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnBroadcastConfMemberFailure", "rsp": event["value"]["rsp"], "value": { "confId": value["confId"], } }; this.EVENT_LIST["PhoneConfNotify"]["OnBroadcastConfMemberFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnBroadcastConfMemberFailure"]); } } else if (value["msgType"] == "ConfCancelBroadcastPicture") { if (statusValue == "4090") { var retEvent = { "eventName": "OnCancelBroadcastConfMemberSuccess", "rsp": "0", "value": { "confId": value["confId"], "member": value["members"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnCancelBroadcastConfMemberSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnCancelBroadcastConfMemberSuccess"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnCancelBroadcastConfMemberFailure", "rsp": event["value"]["rsp"], "value": { "confId": value["confId"], } }; this.EVENT_LIST["PhoneConfNotify"]["OnCancelBroadcastConfMemberFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnCancelBroadcastConfMemberFailure"]); } } else if (value["msgType"] == "ConfWatchMember") { if (statusValue == "4090") { var retEvent = { "eventName": "OnWatchConfMemberSuccess", "rsp": "0", "value": { "confId": value["confId"], "member": value["members"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnWatchConfMemberSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnWatchConfMemberSuccess"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnWatchConfMemberFailure", "rsp": event["value"]["rsp"], "value": { "confId": value["confId"], "member": value["members"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnWatchConfMemberFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnWatchConfMemberFailure"]); } } else if (value["msgType"] == "ConfWatchMixPicture") { if (statusValue == "4090") { var retEvent = { "eventName": "OnWatchMixPictureSuccess", "rsp": "0", "value": { "confId": value["confId"], "member": value["members"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnWatchMixPictureSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnWatchMixPictureSuccess"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnWatchMixPictureFailure", "rsp": event["value"]["rsp"], "value": { "confId": value["confId"], "member": value["members"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnWatchMixPictureFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnWatchMixPictureFailure"]); } } else if (value["msgType"] == "ConfQueryConfListByAttendee") { if (statusValue == "4090") { var confInfos = []; var retEvent = {}; if (!!value["confInfos"]) { for (var index = 0; index < value["confInfos"].length; index++) { confInfos.push({ "confId": value["confInfos"][index]["confInternalId"], "isVideo": value["confInfos"][index]["isVideo"], "passcode": value["confInfos"][index]["passcode"], "unifiedAccessCode": value["confInfos"][index]["unifiedAccessCode"], "url": value["confInfos"][index]["url"], }); delete value["confInfos"][index].confExternalId; var tmp = value["confInfos"][index]["confInternalId"]; value["confInfos"][index]["confId"] = tmp; delete value["confInfos"][index].confInternalId; } retEvent = { "eventName": "OnQueryConfListByAttendeeResult", "rsp": "0", "value": { "confInfos": value["confInfos"], "totalNum" : value["totalNum"] } }; } else { retEvent = { "eventName": "OnQueryConfListByAttendeeResult", "rsp": "0", "value": { "confInfos": [] } }; } this.EVENT_LIST["PhoneConfNotify"]["OnQueryConfListByAttendeeResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryConfListByAttendeeResult"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnQueryConfListByAttendeeResult", "rsp": "-1", }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryConfListByAttendeeResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryConfListByAttendeeResult"]); } } else if (value["msgType"] == "ConfAddMember") { if (statusValue == "4090") { var retEvent = { "eventName": "OnAddConfMembersSuccess", "rsp": "0", "value": { "confId": value["confId"], } }; this.EVENT_LIST["PhoneConfNotify"]["OnAddConfMembersSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnAddConfMembersSuccess"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnAddConfMembersFailure", "rsp": event["value"]["rsp"], "value": { "confId": value["confId"], } }; this.EVENT_LIST["PhoneConfNotify"]["OnAddConfMembersFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnAddConfMembersFailure"]); } } else if (value["msgType"] == "SetChairman") { if (statusValue == "4090") { var retEvent = { "eventName": "OnConfSetChairmanSuccess", "rsp": "0", "value": { "confId": value["confId"], "chairman": value["chairman"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnConfSetChairmanSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfSetChairmanSuccess"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnConfSetChairmanFailure", "rsp": event["value"]["rsp"], "retMsg": event["value"]["retMsg"], "value": { "confId": value["confId"], "chairman": value["chairman"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnConfSetChairmanFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfSetChairmanFailure"]); } } else if (value["msgType"] == "AddressBook"){ if (statusValue == "4090" && value["pageCount"] != 0) { var retEvent = { "eventName": "OnQueryVDCAddressBookSuccess", "rsp": "0", "userCount": value["userCount"], "pageCount": value["pageCount"], "totalPages": value["TotalPages"], "totalElements": value["TotalElements"], "value": { "list": value["list"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryVDCAddressBookSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryVDCAddressBookSuccess"]); } else if (statusValue == "4090" && value["pageCount"] == 0) { var retEvent = { "eventName": "OnQueryVDCAddressBookSuccess", "rsp": "0", "userCount": value["userCount"], "value": { "list": value["list"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryVDCAddressBookSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryVDCAddressBookSuccess"]); } if (statusValue == "4091" && value["pageCount"] != 0) { var retEvent = { "eventName": "OnQueryVDCAddressBookFailure", "rsp": event["value"]["rsp"], "userCount": value["userCount"], "pageCount": value["pageCount"], "retMsg": event["value"]["retMsg"], "value": { "list": value["list"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryVDCAddressBookFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryVDCAddressBookFailure"]); } else if (statusValue == "4091" && value["pageCount"] == 0) { var retEvent = { "eventName": "OnQueryVDCAddressBookFailure", "rsp": event["value"]["rsp"], "userCount": value["userCount"], "pageCount": value["pageCount"], "retMsg": event["value"]["retMsg"], "value": { "list": value["list"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryVDCAddressBookFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryVDCAddressBookFailure"]); } } else if (value["msgType"] == "queryConferenceList") { if (statusValue == "4090" && value["totalNum"] != 0) { var retEvent = { "eventName": "OnRecvConfListNotifySuccess", "rsp": event["value"]["rsp"], "totalNum": value["totalNum"], "value": { "list": value["conferences"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnRecvConfListNotifySuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnRecvConfListNotifySuccess"]); } else if (statusValue == "4090" && value["totalNum"] == 0) { var retEvent = { "eventName": "OnRecvConfListNotifySuccess", "rsp": event["value"]["rsp"], "totalNum": "0", "value": { "list": "" } }; this.EVENT_LIST["PhoneConfNotify"]["OnRecvConfListNotifySuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnRecvConfListNotifySuccess"]); } else { var retEvent = { "eventName": "OnRecvConfListNotifyFailure", "rsp": event["value"]["rsp"], "totalNum": "0", "retMsg": event["value"]["retMsg"], "value": { "list": "" } }; this.EVENT_LIST["PhoneConfNotify"]["OnRecvConfListNotifyFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnRecvConfListNotifyFailure"]); } }else if (value["msgType"] == "queryConferenceInfo") { if (statusValue == "4090" && value["totalNum"] != 0) { var retEvent = { "eventName": "OnRecvQueryConfInfoNotifySuccess", "rsp": event["value"]["rsp"], "totalNum": value["totalNum"], "value": { "list": value["conferences"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnRecvQueryConfInfoNotifySuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnRecvQueryConfInfoNotifySuccess"]); } else if (statusValue == "4090" && value["totalNum"] == 0) { var retEvent = { "eventName": "OnRecvQueryConfInfoNotifySuccess", "rsp": event["value"]["rsp"], "totalNum": "0", "value": { "list": "" } }; this.EVENT_LIST["PhoneConfNotify"]["OnRecvQueryConfInfoNotifySuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnRecvQueryConfInfoNotifySuccess"]); } else { var retEvent = { "eventName": "OnRecvQueryConfInfoNotifyFailure", "rsp": event["value"]["rsp"], "totalNum": "0", "retMsg": event["value"]["retMsg"], "value": { "list": "" } }; this.EVENT_LIST["PhoneConfNotify"]["OnRecvQueryConfInfoNotifyFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnRecvQueryConfInfoNotifyFailure"]); } } else if (value["msgType"] == "queryaddressbook") { if (statusValue == "4090") { var retEvent = { "eventName": "OnQueryConfereeAddressBookSuccess", "rsp": "0", "userCount": value["userCount"], "value": { "list": value["list"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryConfereeAddressBookSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryConfereeAddressBookSuccess"]); } if (statusValue == "4091" && value["userCount"] != 0) { var retEvent = { "eventName": "OnQueryConfereeAddressBookFailure", "rsp": event["value"]["rsp"], "retMsg": event["value"]["retMsg"], "userCount": value["userCount"], "value": { "list": value["list"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryConfereeAddressBookFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryConfereeAddressBookFailure"]); } else if (statusValue == "4091" && value["userCount"] == 0) { var retEvent = { "eventName": "OnQueryConfereeAddressBookFailure", "rsp": event["value"]["rsp"], "retMsg": event["value"]["retMsg"], }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryConfereeAddressBookFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryConfereeAddressBookFailure"]); } } else if (value["msgType"] == "queryCasConfInfos") { if (statusValue == "4090") { var retEvent = { "eventName": "OnQueryCasConfInfosSuccess", "rsp": "0", "value": { "name": value["Content"]["name"], "isWeLink": value["Content"]["isWeLink"], "confCasId": value["Content"]["confCasId"], "childConf": value["Content"]["childConf"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryCasConfInfosSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryCasConfInfosSuccess"]); } if (statusValue == "4091") { var retEvent = { "eventName": "OnQueryCasConfInfosFailure", "rsp": event["value"]["rsp"], "retMsg": event["value"]["retMsg"], }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryCasConfInfosFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryCasConfInfosFailure"]); } } else if (value["msgType"] == "queryOrgTree") { if (statusValue == "4090") { var retEvent = { "eventName": "OnQueryOrgTreeSuccess", "rsp": "0", "value": event["value"], }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryOrgTreeSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryOrgTreeSuccess"]); } if (statusValue == "4091") { var retEvent = { "eventName": "OnQueryOrgTreeFail", "rsp": event["value"]["rsp"], "retMsg": event["value"]["retMsg"], }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryOrgTreeFail"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryOrgTreeFail"]); } } else if (value["msgType"] == "queryAreaOrgInfo") { if (statusValue == "4090") { var retEvent = { "eventName": "OnQueryAreaOrgInfoSuccess", "rsp": "0", "value": event["value"], }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryAreaOrgInfoSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryAreaOrgInfoSuccess"]); } if (statusValue == "4091") { var retEvent = { "eventName": "OnQueryAreaOrgInfoFail", "rsp": event["value"]["rsp"], "retMsg": event["value"]["retMsg"], "value": event["value"] }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryAreaOrgInfoFail"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryAreaOrgInfoFail"]); } } else if (value["msgType"] == "queryConfURL") { if (statusValue == "4090") { var retEvent = { "eventName": "OnQueryConfURLSuccess", "rsp": "0", "value": event["value"], }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryConfURLSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryConfURLSuccess"]); } if (statusValue == "4091") { var retEvent = { "eventName": "OnQueryConfURLFailure", "rsp": event["value"]["rsp"], "retMsg": event["value"]["retMsg"], }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryConfURLFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryConfURLFailure"]); } } break; case "36": var retEvent = { "eventName": "OnQueryVWallDisplayMatrixInfoResult", "rsp": "0", "value": event["value"] }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryVWallDisplayMatrixInfoResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryVWallDisplayMatrixInfoResult"]); break; case "37": if (statusValue == "4090") { // 上墙成功 var retEvent = { "eventName": "OnStartConfUploadWallSuccess", "rsp": "0", "value": { "confId": event["value"]["confid"], "number": event["value"]["number"], "layerInfo": event["value"]["layerInfo"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnStartConfUploadWallSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnStartConfUploadWallSuccess"]); } else if (statusValue == "4091") { // 上墙失败 var retEvent = { "eventName": "OnStartConfUploadWallFailure", "rsp": "0", }; this.EVENT_LIST["PhoneConfNotify"]["OnStartConfUploadWallFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnStartConfUploadWallFailure"]); } break; case "38": if (statusValue == "4090") { // 停止上墙成功 var retEvent = { "eventName": "OnStopConfUploadWallSuccess", "rsp": "0", }; this.EVENT_LIST["PhoneConfNotify"]["OnStopConfUploadWallSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnStopConfUploadWallSuccess"]); } else if (statusValue == "4091") { // 停止上墙失败 var retEvent = { "eventName": "OnStopConfUploadWallFailure", "rsp": "0", }; this.EVENT_LIST["PhoneConfNotify"]["OnStopConfUploadWallFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnStopConfUploadWallFailure"]); } break; case "39": // 当广播多画面的时候,smc传回的braodcast参数为"(%CP)",需要改成"mix" if (event["value"]["confStatus"]["broadcast"] == "(%CP)") { event["value"]["confStatus"]["broadcast"] = "mix"; } cloudICP.util.callStatusMgr.updateConfInfo(event); event["value"]["confStatus"]["confName"] = event["value"]["confStatus"]["name"]; delete event["value"]["confStatus"]["name"]; // DTS2023060112941 判断如果会议主席不是自己的话,删除 windowInfos[2147483647] 这个字段,如果会议主席切换到自己,将windowInfos[2147483647]赋值 if (event["value"]["confStatus"]["chair"] && cloudICP.userInfo["isdn"] == event["value"]["confStatus"]["chair"]) { if (undefined == cloudICP.util.callStatusMgr.windowInfos[2147483647]) { cloudICP.util.callStatusMgr.windowInfos[2147483647] = "1"; // 此处的1是任意值,不存在任何意义 } } else { if (undefined != cloudICP.util.callStatusMgr.windowInfos[2147483647]) { delete cloudICP.util.callStatusMgr.windowInfos[2147483647]; } } // 成员信息推送 var retEvent = { "eventName": "OnConfStatusNotify", "rsp": "0", "value": event["value"] }; this.EVENT_LIST["PhoneConfNotify"]["OnConfStatusNotify"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfStatusNotify"]); break; case "40": if (statusValue == "4090") { // 订阅会议成功 var retEvent = { "eventName": "OnQueryConfWallInfoResult", "rsp": "0", "value": event["value"] }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryConfWallInfoResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryConfWallInfoResult"]); } else if (statusValue == "4091") { // 订阅会议失败 var retEvent = { "eventName": "OnQueryConfWallInfoResult", "rsp": "-1", "value": "" }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryConfWallInfoResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryConfWallInfoResult"]); } break; case "41": if (statusValue == "4090") { // 订阅会议成功 var retEvent = { "eventName": "OnSubscribeConfSuccess", "rsp": "0", }; this.EVENT_LIST["PhoneConfNotify"]["OnSubscribeConfSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnSubscribeConfSuccess"]); } else if (statusValue == "4091") { // 订阅会议失败 var retEvent = { "eventName": "OnSubscribeConfFailure", "rsp": "0", }; this.EVENT_LIST["PhoneConfNotify"]["OnSubscribeConfFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnSubscribeConfFailure"]); } break; case "42": if (statusValue == "4090") { // 去订阅会议成功 var retEvent = { "eventName": "OnUnsubscribeConfSuccess", "rsp": "0", }; this.EVENT_LIST["PhoneConfNotify"]["OnUnsubscribeConfSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnUnsubscribeConfSuccess"]); } else if (statusValue == "4091") { // 去订阅会议失败 var retEvent = { "eventName": "OnUnsubscribeConfFailure", "rsp": "0", }; this.EVENT_LIST["PhoneConfNotify"]["OnUnsubscribeConfFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnUnsubscribeConfFailure"]); } break; case "43": if (statusValue == "4090") { // 订阅会议成功 var retEvent = { "eventName": "OnHangupConfMemberSuccess", "rsp": "0", "value": { "confId": event["value"]["confId"], "member": event["value"]["members"] }, }; this.EVENT_LIST["PhoneConfNotify"]["OnHangupConfMemberSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnHangupConfMemberSuccess"]); } else if (statusValue == "4091") { // 订阅会议失败 var retEvent = { "eventName": "OnHangupConfMemberFailure", "rsp": event["value"]["rsp"], "value": { "confId": event["value"]["confId"], "member": event["value"]["members"] }, }; this.EVENT_LIST["PhoneConfNotify"]["OnHangupConfMemberFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnHangupConfMemberFailure"]); } break; case "44": if (statusValue == "4090") { // 重呼成员成功 var retEvent = { "eventName": "OnCallConfMemberSuccess", "rsp": "0", "value": { "confId": event["value"]["confId"], "member": event["value"]["members"] }, }; this.EVENT_LIST["PhoneConfNotify"]["OnCallConfMemberSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnCallConfMemberSuccess"]); } else if (statusValue == "4091") { // 重呼成员失败 var retEvent = { "eventName": "OnCallConfMemberFailure", "rsp": event["value"]["rsp"], "value": { "confId": event["value"]["confId"], "member": event["value"]["members"] }, }; this.EVENT_LIST["PhoneConfNotify"]["OnCallConfMemberFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnCallConfMemberFailure"]); } break; case "45": if (statusValue == "4090") { var retEvent = { "eventName": "OnQueryRecordURLByConfIDResult", "rsp": "0", "value": { "confId": event["value"]["confInternalId"], "url": event["value"]["url"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryRecordURLByConfIDResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryRecordURLByConfIDResult"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnQueryRecordURLByConfIDResult", "rsp": "-1", "value": { "confId": "", "url": "" } }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryRecordURLByConfIDResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryRecordURLByConfIDResult"]); } break; case "46": if (statusValue == "4090") { var retEvent = { "eventName": "OnDelConfMembersSuccess", "rsp": "0", "value": { "confId": event["value"]["confId"], "member": event["value"]["members"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnDelConfMembersSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnDelConfMembersSuccess"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnDelConfMembersFailure", "rsp": event["value"]["rsp"], "value": { "confId": event["value"]["confId"], "member": event["value"]["members"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnDelConfMembersFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnDelConfMembersFailure"]); } break; case "47": if (statusValue == "4090") { // 查询多画面成功 var retEvent = { "eventName": "OnQueryContinuousPresenceInfoResult", "rsp": "0", "value": event["value"] }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryContinuousPresenceInfoResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryContinuousPresenceInfoResult"]); } else if (statusValue == "4091") { // 查询多画面失败 var retEvent = { "eventName": "OnQueryContinuousPresenceInfoResult", "rsp": "-1", "value": "" }; this.EVENT_LIST["PhoneConfNotify"]["OnQueryContinuousPresenceInfoResult"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnQueryContinuousPresenceInfoResult"]); } break; case "48": { var retEvent = { "eventName": "OnApplyFloor", "value": event["value"] }; this.EVENT_LIST["PhoneConfNotify"]["OnApplyFloor"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnApplyFloor"]); } break; case "50": if (statusValue == "4092") { var retEvent = { "eventName": "ResultOfMappingBetweenIsdn2Gbid", "value": event["value"] }; this.EVENT_LIST["ResourceNotify"]["ResultOfMappingBetweenIsdn2Gbid"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["ResourceNotify"]["ResultOfMappingBetweenIsdn2Gbid"]); } break; case "51": if (statusValue == "4090") { var retEvent = { "eventName": "OnConfProlongTimeSuccess", "value": event["value"] }; this.EVENT_LIST["PhoneConfNotify"]["OnConfProlongTimeSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfProlongTimeSuccess"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnConfProlongTimeFailure", "value": event["value"] }; this.EVENT_LIST["PhoneConfNotify"]["OnConfProlongTimeFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfProlongTimeFailure"]); } break; case "52": var value = event["value"]; if (value["params"] == "lock") { if (statusValue == "4090") { var retEvent = { "eventName": "OnConfLockVideoSourceSuccess", "rsp": value["rsp"], "value": { "confId": value["confId"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnConfLockVideoSourceSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfLockVideoSourceSuccess"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnConfLockVideoSourceFailure", "rsp": value["rsp"], "value": { "confId": value["confId"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnConfLockVideoSourceFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfLockVideoSourceFailure"]); } } else if (value["params"] == "unlock") { if (statusValue == "4090") { var retEvent = { "eventName": "OnConfUnLockVideoSourceSuccess", "rsp": value["rsp"], "value": { "confId": value["confId"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnConfUnLockVideoSourceSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfUnLockVideoSourceSuccess"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnConfUnLockVideoSourceFailure", "rsp": value["rsp"], "value": { "confId": value["confId"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnConfUnLockVideoSourceFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfUnLockVideoSourceFailure"]); } } break; case "53": var value = event["value"]; if (value["params"] == "lock") { if (statusValue == "4090") { var retEvent = { "eventName": "OnConfLockConfSuccess", "rsp": value["rsp"], "value": { "confId": value["confId"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnConfLockConfSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfLockConfSuccess"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnConfLockConfFailure", "rsp": value["rsp"], "value": { "confId": value["confId"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnConfLockConfFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfLockConfFailure"]); } } else if (value["params"] == "unlock") { if (statusValue == "4090") { var retEvent = { "eventName": "OnConfUnLockConfSuccess", "rsp": value["rsp"], "value": { "confId": value["confId"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnConfUnLockConfSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfUnLockConfSuccess"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnConfUnLockConfFailure", "rsp": value["rsp"], "value": { "confId": value["confId"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnConfUnLockConfFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfUnLockConfFailure"]); } } break; case "55": if (statusValue == "4090") { // 修改会议成功 var retEvent = { "eventName": "OnModifyConfSuccess", "rsp": "0", "value": { "confId": event["value"]["confInternalId"], "passcode": event["value"]["passcode"], "unifiedAccessCode": event["value"]["unifiedAccessCode"], "isVideo": event["value"]["isVideo"] } }; if (undefined != event["value"]["time"] && undefined != event["value"]["timeZone"]) { retEvent["value"]["time"] = event["value"]["time"]; retEvent["value"]["timeZone"] = event["value"]["timeZone"]; this.EVENT_LIST["PhoneConfNotify"]["OnModifyConfSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnModifyConfSuccess"]); } else { this.EVENT_LIST["PhoneConfNotify"]["OnModifyConfSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnModifyConfSuccess"]); } } else if (statusValue == "4091") { // 修改会议失败 var retEvent = { "eventName": "OnModifyConfFailure", "rsp": event["value"]["rsp"], "value": { "confId": event["value"]["confInternalId"] } }; this.EVENT_LIST["PhoneConfNotify"]["OnModifyConfFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnModifyConfFailure"]); } break; case "56": var value = event["value"]; if (value["msgType"] == "setTextTips") { if (statusValue == "4090") { var retEvent = { "eventName": "OnConfTextTipsSuccess", "rsp": "0", "value": { "confId": value["confId"], } }; this.EVENT_LIST["PhoneConfNotify"]["OnConfTextTipsSuccess"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfTextTipsSuccess"]); } else if (statusValue == "4091") { var retEvent = { "eventName": "OnConfTextTipsFailure", "rsp": event["value"]["rsp"], "value": { "confId": value["confId"], } }; this.EVENT_LIST["PhoneConfNotify"]["OnConfTextTipsFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfTextTipsFailure"]); } } break; default: break; } if (undefined != event["rid"]) { delete event.rid; } if ("4025" == event["statusvalue"] && "21" == event["statustype"]) { //动态组创建失败 var cause = ""; if (event["value"]) { cause = event["value"]["cause"]; } var retEvent = { "eventName": "OnDynamicGroupOptFailed", "grpid": event["value"]["attaching"], "rsp": cause }; this.EVENT_LIST["GroupNotify"]["OnDynamicGroupOptFailed"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupNotify"]["OnDynamicGroupOptFailed"]); return; } else if (undefined != event["list"]) { for (var index = 0; index < event["list"].length; index++) { event["list"][index]["peerid"] = ""; } var retEvent = { "eventName": "OnUserStatusNotify", "list": event["list"] } this.EVENT_LIST["VoiceNotify"]["OnUserStatusNotify"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnUserStatusNotify"]); } if (event["statustype"] == "3") { var retEvent = { "eventName": "OnGroupCallStatusNotify", "rsp": event["statusvalue"], "value": { "grpid": event["isdn"], "name": event["value"]["name"], "speaker": event["value"]["speaker"] } } if (event["value"]["speaker"] == cloudICP.userInfo["isdn"]) { cloudICP.dispatch.group.isCurrentPtt = { "grpid": event["isdn"], "isPtt": true }; } else { if (cloudICP.dispatch.group.isCurrentPtt["grpid"] == event["isdn"]) { cloudICP.dispatch.group.isCurrentPtt = { "grpid": event["isdn"], "isPtt": false }; } } this.EVENT_LIST["GroupCallNotify"]["OnGroupCallStatusNotify"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupCallNotify"]["OnGroupCallStatusNotify"]); } } /** * 群组管理 */ ICPSDK_Dispatch_Event.prototype.delCommonNotify = function(event) { var reqId = event.reqId; if (reqId == null || reqId == undefined) {reqId = "0";} var mo = event["mo"]; if (undefined == mo) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "delCommonNotify: mo is undefined." }); return; } var opt = event["opt"]; if (undefined == opt) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "delCommonNotify: opt is undefined." }); return; } var value = event["value"]; if (undefined != value && undefined != value["servermode"]) { delete value.servermode; } if (undefined != value["vpnid"]) { delete value["vpnid"]; } if (mo == "3") { var newEvent = { "eventName": "OnTalkingGroupStatusChange", "opt": opt, "groupinfo": value } this.EVENT_LIST["GroupNotify"]["OnTalkingGroupStatusChange"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupNotify"]["OnTalkingGroupStatusChange"]); } else if (mo == "29") { //派接组的新建和删除 if (undefined == value) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "delCommonNotify: value is undefined." }); return; } if (undefined != value["vpnid"]) { delete value["vpnid"]; } var newEvent = { "eventName": "OnPatchGroupStatusChange", "opt": opt, "groupinfo": value } this.EVENT_LIST["GroupNotify"]["OnPatchGroupStatusChange"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupNotify"]["OnPatchGroupStatusChange"]); } else if (mo == "7") { //动态组的成员的新增和删除 if (undefined == value) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "delCommonNotify: value is undefined." }); return; } // var newEvent = { // "eventName": "OnTalkingGroupMemberChange", // "opt": opt, // "groupinfo": value // } // this.EVENT_LIST["GroupNotify"]["OnTalkingGroupMemberChange"](newEvent); // sendEvent2Page(reqId, this.EVENT_LIST["GroupNotify"]["OnTalkingGroupMemberChange"]); } else if (mo == "30") { //派接组的成员的新增和删除 if (undefined == value) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "delCommonNotify: value is undefined." }); return; } var newEvent = { "eventName": "OnPatchGroupMemberChange", "opt": opt, "groupinfo": value } this.EVENT_LIST["GroupNotify"]["OnPatchGroupMemberChange"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupNotify"]["OnPatchGroupMemberChange"]); } else if (mo == "6") { //群组成员配置更新 var newEvent = { "eventName": "OnTalkingGroupMemberChange", "opt": opt, "groupinfo": value } this.EVENT_LIST["GroupNotify"]["OnTalkingGroupMemberChange"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupNotify"]["OnTalkingGroupMemberChange"]); } else if (mo == "5") { //群组终端用户配置更新 var newEvent = { "eventName": "OnTalkingGroupMemberChange", "opt": opt, "groupinfo": value } this.EVENT_LIST["GroupNotify"]["OnTalkingGroupMemberChange"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["GroupNotify"]["OnTalkingGroupMemberChange"]); } } /** * 语音事件通知 */ ICPSDK_Dispatch_Event.prototype.delVoiceNotify = function(event) { var reqId = event.reqId; if (reqId == null || reqId == undefined) {reqId = "0";} var rsp = event["rsp"]; if (undefined == rsp) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "delVoiceNotify: rsp is undefined." }); return; } var value = event["value"]; if (undefined == value) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "delVoiceNotify: value is undefined." }); return; } // 建立音频媒体通道 if (value["local"] != undefined && value["server"] != value["local"] != undefined && "0.0.0.0,0" && value["server"] != "0.0.0.0,0") { let localArr = value["local"].split(","); let serverArr = value["server"].split(","); var user = cloudICP.userInfo["isdn"]; var peerUser = value["callee"]; if (user == peerUser) { peerUser = value["caller"]; } var callNumber; if (event["value"]["callee"] != cloudICP.userInfo["isdn"]) { callNumber = event["value"]["callee"] } else { callNumber = event["value"]["caller"]; } var paramForAudio = "{\"description\":\"msp_delete_audio_channel\", \"cmd\": 65538, \"param\":{\"resID\":{0}}}".format( parseInt(value["cid"]) ) cloudICP.dispatch.webSocket.sendDataToMediaSDK(paramForAudio, true); var param var callStatusMgr = cloudICP.util.callStatusMgr; var audioFile = callStatusMgr.getBroadcastFile(peerUser); var audioBase64 = callStatusMgr.getBroadcastBase64(peerUser); if (audioFile) { var param = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}, \"reqId\": \"{1}\"}".format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); var param = "{\"description\":\"msp_create_audio_channel\", \"cmd\": 65537, \"param\":{\"resID\":{0}, \"mediaInfo\":{\"localIP\":\"{1}\", \"localPort\":{2}, \"remoteIP\":\"{3}\",\"remotePort\":{4}, \"playload\":{5}, \"ssrc\":{6}, \"user\":\"{8}\", \"peerUser\":\"{9}\", \"audioFile\": \"{10}\"}}, \"reqId\": \"{11}\"}" .format( parseInt(value["cid"]), cloudICP.config.localIP, localArr[1], serverArr[0], serverArr[1], parseInt(value["audio"]), parseInt(value["audio_ssrc"]), parseInt(callNumber), user, peerUser, audioFile, reqId ) callStatusMgr.deleteBroadcastFile(peerUser); } else if (audioBase64) { var param = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}}".format( parseInt(value["cid"]) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); var param = "{\"description\":\"msp_create_audio_channel\", \"cmd\": 65537, \"param\":{\"resID\":{0}, \"mediaInfo\":{\"localIP\":\"{1}\", \"localPort\":{2}, \"remoteIP\":\"{3}\",\"remotePort\":{4}, \"playload\":{5}, \"ssrc\":{6}, \"user\":\"{8}\", \"peerUser\":\"{9}\", \"audioBase64\": \"{10}\"}}}".format( parseInt(value["cid"]), cloudICP.config.localIP, localArr[1], serverArr[0], serverArr[1], parseInt(value["audio"]), parseInt(value["audio_ssrc"]), parseInt(callNumber), user, peerUser, audioBase64 ) callStatusMgr.deleteBroadcastBase64(peerUser); } else { var param = "{\"description\":\"msp_create_audio_channel\", \"cmd\": 65537, \"param\":{\"resID\":{0}, \"mediaInfo\":{\"localIP\":\"{1}\", \"localPort\":{2}, \"remoteIP\":\"{3}\",\"remotePort\":{4}, \"playload\":{5}, \"ssrc\":{6}, \"user\":\"{8}\", \"peerUser\":\"{9}\"}}, \"reqId\": \"{10}\"}" .format( parseInt(value["cid"]), cloudICP.config.localIP, localArr[1], serverArr[0], serverArr[1], parseInt(value["audio"]), parseInt(value["audio_ssrc"]), parseInt(callNumber), user, peerUser, reqId ) } cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } var to; if (undefined != value["to"]) { if ("" != value["to"]) { to = value["to"]; } else if (undefined != value["callee"]) { to = value["callee"]; } delete value.to; } else { to = value["callee"]; } var from; if (undefined != value["from"] && value["from"] != "" && value["caller"] != value["from"]) { from = value["from"]; } else { from = value["caller"]; } if (undefined != value["from"]) { delete value.from; } var local = value["local"]; if (undefined != local) { delete value.local; } var server = value["server"]; if (undefined != server) { delete value.server; } var sipcode = value["sipcode"]; if (undefined != sipcode) { delete value.sipcode; } var targeter = value["targeter"]; if (undefined != targeter) { delete value.targeter; } var transfer = value["transfer"]; if (undefined != transfer) { delete value.transfer; } var inserter = value["inserter"]; if (undefined != inserter) { delete value.inserter; } var audio = value["audio"]; if (undefined != audio) { delete value.audio; } var audio_ssrc = value["audio_ssrc"]; if (undefined != audio_ssrc) { delete value.audio_ssrc; } var discreet_listenee = value["discreetListenee"]; if (undefined != discreet_listenee) { delete value.discreetListenee; } var sub_type = value["sub_type"]; if (undefined != sub_type) { delete value.sub_type; } var confInfo = value["confInfo"]; if (undefined != confInfo) { delete value.confInfo; } var listentype = value["listentype"]; if (undefined != confInfo) { delete value.listentype; } var newEvent = { "eventName": "", "rsp": rsp, "value": value } var caller = value["caller"]; if (caller == cloudICP.userInfo["isdn"]) { //表示呼出 switch (rsp) { case "2003": // 停止振铃音 value["callee"] = to; var param = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}, \"reqId\": \"{1}\"}".format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[event["value"]["cid"]]; if (call && call.callType == callStatusMgr.VOICECONF) { callStatusMgr.updateCallStatus(callStatusMgr.VOICECONF, callStatusMgr.CONNECTING, event); callStatusMgr.holdCall(event["value"]["cid"], reqId); newEvent["value"]["confId"] = call["confId"]; newEvent["value"]["isVideo"] = "false"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnConfConnect"; this.EVENT_LIST["PhoneConfNotify"]["OnConfConnect"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfConnect"]); var ajaxCfg = { "type": "POST", "url": cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"], "data": { "opt": "sub", "reqId": reqId, "confId": call["confId"] }, "callback": function(data) { if (data["rsp"] != "0") { var retEvent = { "eventName": "OnSubscribeConfFailure", "rsp": data["rsp"], } this.EVENT_LIST["PhoneConfNotify"]["OnSubscribeConfFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnSubscribeConfFailure"]); } else { cloudICP.util.callStatusMgr.confSubMgr[call["confId"]] = true; } } } cloudICP.util.ajax(ajaxCfg); break; } else if (call && call.callType == callStatusMgr.HALFVOICE) { callStatusMgr.updateCallStatus(callStatusMgr.HALFVOICE, callStatusMgr.CONNECTING, event); callStatusMgr.holdCall(event["value"]["cid"], reqId); newEvent["value"]["calltype"] = "halfdial"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "out"; newEvent["value"]["fmt"] = ""; newEvent["value"]["ptz"] = ""; newEvent["value"]["mute"] = ""; newEvent["eventName"] = "OnCallConnect"; this.EVENT_LIST["VoiceNotify"]["OnCallConnect"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallConnect"]); break; } else if (call && call.callType == callStatusMgr.AMBIENCE) { callStatusMgr.updateCallStatus(callStatusMgr.AMBIENCE, callStatusMgr.CONNECTING, event); newEvent["value"]["calltype"] = "ambience"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "out"; newEvent["value"]["fmt"] = ""; newEvent["value"]["ptz"] = ""; newEvent["value"]["mute"] = ""; newEvent["eventName"] = "OnCallConnect"; this.EVENT_LIST["VoiceNotify"]["OnCallConnect"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallConnect"]); break; } callStatusMgr.updateCallStatus(callStatusMgr.VOICE, callStatusMgr.CONNECTING, event); newEvent["value"]["calltype"] = "voice"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "out"; newEvent["value"]["fmt"] = ""; newEvent["value"]["ptz"] = ""; newEvent["value"]["mute"] = ""; newEvent["eventName"] = "OnCallConnect"; this.EVENT_LIST["VoiceNotify"]["OnCallConnect"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallConnect"]); break; case "2005": value["callee"] = to; var callStatusMgr = cloudICP.util.callStatusMgr; if (confInfo != undefined) { callStatusMgr.updateCallStatus(callStatusMgr.VOICECONF, callStatusMgr.NEW, event, confInfo); break; } if (sub_type && sub_type == "1") { callStatusMgr.updateCallStatus(callStatusMgr.HALFVOICE, callStatusMgr.NEW, event); newEvent["value"]["calltype"] = "halfdial"; } else if (listentype && listentype == "1") { callStatusMgr.updateCallStatus(callStatusMgr.AMBIENCE, callStatusMgr.NEW, event); newEvent["value"]["calltype"] = "ambience"; } else { callStatusMgr.updateCallStatus(callStatusMgr.VOICE, callStatusMgr.NEW, event); newEvent["value"]["calltype"] = "voice"; } newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnDialOutProceeding"; this.EVENT_LIST["VoiceNotify"]["OnDialOutProceeding"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnDialOutProceeding"]); break; case "2006": // 播放回铃音 value["callee"] = to; var param = "{\"description\":\"msp_play_tone\", \"cmd\": 131075, \"param\":{\"cid\": {0}, \"type\":1, \"delay\":0, \"duration\": 0, \"playcount\":0}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ); if (local == "0.0.0.0,0" || server == "0.0.0.0,0" || value["local"] == null) { cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[event["value"]["cid"]]; if (call && call.callType == callStatusMgr.VOICECONF) { callStatusMgr.updateCallStatus(callStatusMgr.VOICECONF, callStatusMgr.RINGING, event); newEvent["value"]["confId"] = call["confId"]; newEvent["value"]["isVideo"] = "false"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnConfDialOutRinging"; this.EVENT_LIST["PhoneConfNotify"]["OnConfDialOutRinging"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfDialOutRinging"]); break; } else if (call && call.callType == callStatusMgr.HALFVOICE) { callStatusMgr.updateCallStatus(callStatusMgr.HALFVOICE, callStatusMgr.RINGING, event); newEvent["value"]["calltype"] = "halfdial"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnDialOutRinging"; this.EVENT_LIST["VoiceNotify"]["OnDialOutRinging"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnDialOutRinging"]); break; } else if (call && call.callType == callStatusMgr.AMBIENCE) { callStatusMgr.updateCallStatus(callStatusMgr.AMBIENCE, callStatusMgr.RINGING, event); newEvent["value"]["calltype"] = "ambience"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnDialOutRinging"; this.EVENT_LIST["VoiceNotify"]["OnDialOutRinging"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnDialOutRinging"]); break; } callStatusMgr.updateCallStatus(callStatusMgr.VOICE, callStatusMgr.RINGING, event); newEvent["value"]["calltype"] = "voice"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnDialOutRinging"; this.EVENT_LIST["VoiceNotify"]["OnDialOutRinging"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnDialOutRinging"]); break; case "2009": // 停止振铃音 value["callee"] = to; var param = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}, \"reqId\": \"{1}\"}".format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); // 删除音频媒体通道 var param = "{\"description\":\"msp_delete_audio_channel\", \"cmd\": 65538, \"param\":{\"resID\":{0}}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ) cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[event["value"]["cid"]]; if (call && call.callType == callStatusMgr.VOICECONF) { callStatusMgr.updateCallStatus(callStatusMgr.VOICECONF, callStatusMgr.RELEASE, event); newEvent["value"]["confId"] = call["confId"]; newEvent["value"]["isVideo"] = "false"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnConfRelease"; this.EVENT_LIST["PhoneConfNotify"]["OnConfRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfRelease"]); setTimeout(function() { var mconfInfo = cloudICP.util.callStatusMgr.confMgr[call["confId"]]; if (mconfInfo != null && ((mconfInfo["isEnding"] != undefined && mconfInfo[ "isEnding"] == true) || (mconfInfo["value"]["confStatus"]["status"] == "End"))) { return; } if (cloudICP.util.callStatusMgr.confSubMgr[call["confId"]] == undefined || cloudICP .util.callStatusMgr.confSubMgr[call["confId"]] != true) { return; } var ajaxCfg = { "type": "POST", "url": cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"], "data": { "opt": "unsub", "reqId": reqId, "confId": call["confId"] }, "callback": function(data) { if (data["rsp"] != "0") { var retEvent = { "eventName": "OnUnsubscribeConfFailure", "rsp": data["rsp"], } this.EVENT_LIST["PhoneConfNotify"]["OnUnsubscribeConfFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnUnsubscribeConfFailure"]); } } } cloudICP.util.ajax(ajaxCfg); }, 500); break; } else if (call && call.callType == callStatusMgr.HALFVOICE) { callStatusMgr.updateCallStatus(callStatusMgr.HALFVOICE, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "halfdial"; newEvent["value"]["releasetype"] = "other"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "out"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnCallRelease"; this.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); break; } else if (call && call.callType == callStatusMgr.AMBIENCE) { callStatusMgr.updateCallStatus(callStatusMgr.AMBIENCE, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "ambience"; newEvent["value"]["releasetype"] = "other"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "out"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnCallRelease"; this.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); break; } callStatusMgr.updateCallStatus(callStatusMgr.VOICE, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "voice"; newEvent["value"]["releasetype"] = "other"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "out"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnCallRelease"; this.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); break; case "2010": if (reqId == undefined || reqId == '' || reqId == '0') { reqId = mainPageId; } // 停止振铃音 value["callee"] = to; var param = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}, \"reqId\": \"{1}\"}".format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); // 删除音频媒体通道 var param = "{\"description\":\"msp_delete_audio_channel\", \"cmd\": 65538, \"param\":{\"resID\":{0}}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ) cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[event["value"]["cid"]]; if (call && call.callType == callStatusMgr.VOICECONF) { callStatusMgr.updateCallStatus(callStatusMgr.VOICECONF, callStatusMgr.RELEASE, event); newEvent["value"]["confId"] = call["confId"]; newEvent["value"]["isVideo"] = "false"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnConfRelease"; this.EVENT_LIST["PhoneConfNotify"]["OnConfRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfRelease"]); setTimeout(function() { var mconfInfo = cloudICP.util.callStatusMgr.confMgr[call["confId"]]; if (mconfInfo != null && ((mconfInfo["isEnding"] != undefined && mconfInfo[ "isEnding"] == true) || (mconfInfo["value"]["confStatus"]["status"] == "End"))) { return; } if (cloudICP.util.callStatusMgr.confSubMgr[call["confId"]] == undefined || cloudICP .util.callStatusMgr.confSubMgr[call["confId"]] != true) { return; } var ajaxCfg = { "type": "POST", "url": cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"], "data": { "opt": "unsub", "reqId": reqId, "confId": call["confId"] }, "callback": function(data) { if (data["rsp"] != "0") { var retEvent = { "eventName": "OnUnsubscribeConfFailure", "rsp": data["rsp"], } this.EVENT_LIST["PhoneConfNotify"]["OnUnsubscribeConfFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnUnsubscribeConfFailure"]); } } } cloudICP.util.ajax(ajaxCfg); }, 500); break; } else if (call && call.callType == callStatusMgr.HALFVOICE) { callStatusMgr.updateCallStatus(callStatusMgr.HALFVOICE, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "halfdial"; newEvent["value"]["releasetype"] = "self"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "out"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnCallRelease"; this.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); break; } else if (call && call.callType == callStatusMgr.AMBIENCE) { callStatusMgr.updateCallStatus(callStatusMgr.AMBIENCE, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "ambience"; newEvent["value"]["releasetype"] = "self"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "out"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnCallRelease"; this.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); break; } callStatusMgr.updateCallStatus(callStatusMgr.VOICE, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "voice"; newEvent["value"]["releasetype"] = "self"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "out"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnCallRelease"; this.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); break; case "2013": case "2016": case "2017": case "2018": case "2019": case "2024": case "2049": case "2052": case "2023": case "2033": case "2048": // 停止振铃音 var param = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}, \"reqId\": \"{1}\"}".format( parseInt(value["cid"]), reqId ); var paramForAudio = "{\"description\":\"msp_delete_audio_channel\", \"cmd\": 65538, \"param\":{\"resID\":{0}}}" .format( parseInt(value["cid"]) ) cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); cloudICP.dispatch.webSocket.sendDataToMediaSDK(paramForAudio, true); var user = cloudICP.userInfo["isdn"]; var peerUser = value["callee"]; if (user == peerUser) { peerUser = value["caller"]; } cloudICP.util.callStatusMgr.deleteBroadcastFile(peerUser); cloudICP.util.callStatusMgr.deleteBroadcastBase64(peerUser); if (rsp == "2013") { //对端正在通话中 var param = "{\"description\":\"msp_play_tone\", \"cmd\": 131075, \"param\":{\"cid\": {0}, \"type\":3, \"delay\":0, \"duration\": 0, \"playcount\":1}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } else if (rsp == "2016" || rsp == "2024" || rsp == "2052") { //对端无法接通 var param = "{\"description\":\"msp_play_tone\", \"cmd\": 131075, \"param\":{\"cid\": {0}, \"type\":4, \"delay\":0, \"duration\": 0, \"playcount\":1}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } else if (rsp == "2018") { //对端号码不存在 var param = "{\"description\":\"msp_play_tone\", \"cmd\": 131075, \"param\":{\"cid\": {0}, \"type\":5, \"delay\":0, \"duration\": 0, \"playcount\":1}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } else if (rsp == "") { //本段没有权限 var param = "{\"description\":\"msp_play_tone\", \"cmd\": 131075, \"param\":{\"cid\": {0}, \"type\":6, \"delay\":0, \"duration\": 0, \"playcount\":1}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } else if (rsp == "") { //对端没有权限 var param = "{\"description\":\"msp_play_tone\", \"cmd\": 131075, \"param\":{\"cid\": {0}, \"type\":7, \"delay\":0, \"duration\": 0, \"playcount\":1}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } else if (rsp == "2017") { //对端无应答 var param = "{\"description\":\"msp_play_tone\", \"cmd\": 131075, \"param\":{\"cid\": {0}, \"type\":8, \"delay\":0, \"duration\": 0, \"playcount\":1}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } else if (rsp == "") { //对端正忙 var param = "{\"description\":\"msp_play_tone\", \"cmd\": 131075, \"param\":{\"cid\": {0}, \"type\":9, \"delay\":0, \"duration\": 0, \"playcount\":1}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } else if (rsp == "2048" || rsp == "2023" || rsp == "2033" || rsp == "2049") { //拨打业务无法支持 var param = "{\"description\":\"msp_play_tone\", \"cmd\": 131075, \"param\":{\"cid\": {0}, \"type\":10, \"delay\":0, \"duration\": 0, \"playcount\":1}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } var callStatusMgr = cloudICP.util.callStatusMgr; if (confInfo != undefined) { callStatusMgr.updateCallStatus(callStatusMgr.VOICECONF, callStatusMgr.RELEASE, event, confInfo); newEvent["value"]["confId"] = confInfo["confInternalId"]; newEvent["value"]["isVideo"] = "false"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnConfFailure"; this.EVENT_LIST["PhoneConfNotify"]["OnConfFailure"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfFailure"]); break; } if (listentype && listentype == "1") { callStatusMgr.updateCallStatus(callStatusMgr.AMBIENCE, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "ambience"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnDialOutFailure"; this.EVENT_LIST["VoiceNotify"]["OnDialOutFailure"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnDialOutFailure"]); break; } var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[event["value"]["cid"]]; if (call && call.callType == callStatusMgr.HALFVOICE) { callStatusMgr.updateCallStatus(callStatusMgr.HALFVOICE, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "halfdial"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnDialOutFailure"; this.EVENT_LIST["VoiceNotify"]["OnDialOutFailure"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnDialOutFailure"]); break; } callStatusMgr.updateCallStatus(callStatusMgr.VOICE, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "voice"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnDialOutFailure"; this.EVENT_LIST["VoiceNotify"]["OnDialOutFailure"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnDialOutFailure"]); break; break; case "2041": var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.HALFVOICE, callStatusMgr.NEW, event); newEvent["eventName"] = "OnHalfDialConnectProceeding"; this.EVENT_LIST["VoiceNotify"]["OnHalfDialConnectProceeding"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnHalfDialConnectProceeding"]); break; case "2042": // 关闭麦克风 var mediaParam = "{\"description\":\"msp_mute_audio_channel\", \"cmd\": 65549, \"param\":{\"resID\": {0}, \"mute\":true}}" .format( parseInt(value["cid"]) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(mediaParam); var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.HALFVOICE, callStatusMgr.CONNECTING, event); newEvent["eventName"] = "OnStartRecvHalfDial"; this.EVENT_LIST["VoiceNotify"]["OnStartRecvHalfDial"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnStartRecvHalfDial"]); break; case "2043": // 关闭麦克风 var mediaParam = "{\"description\":\"msp_mute_audio_channel\", \"cmd\": 65549, \"param\":{\"resID\": {0}, \"mute\":true}}" .format( parseInt(value["cid"]) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(mediaParam); // var callStatusMgr = cloudICP.util.callStatusMgr; // callStatusMgr.updateCallStatus(callStatusMgr.HALFVOICE, callStatusMgr.RELEASE, event); newEvent["eventName"] = "OnStopRecvHalfDial"; this.EVENT_LIST["VoiceNotify"]["OnStopRecvHalfDial"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnStopRecvHalfDial"]); break; case "2045": // 打开麦克风 var mediaParam = "{\"description\":\"msp_mute_audio_channel\", \"cmd\": 65549, \"param\":{\"resID\": {0}, \"mute\":false}}" .format( parseInt(value["cid"]) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(mediaParam); var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.HALFVOICE, callStatusMgr.CONNECTING, event); newEvent["eventName"] = "OnHalfDialSuccess"; this.EVENT_LIST["VoiceNotify"]["OnHalfDialSuccess"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnHalfDialSuccess"]); break; case "2046": var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.HALFVOICE, callStatusMgr.RELEASE, event); newEvent["eventName"] = "OnHalfDialFailure"; this.EVENT_LIST["VoiceNotify"]["OnHalfDialFailure"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnHalfDialFailure"]); break; case "2054": newEvent["eventName"] = "OnHoldSuccess"; this.EVENT_LIST["VoiceNotify"]["OnHoldSuccess"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnHoldSuccess"]); break; case "2055": newEvent["eventName"] = "OnUnholdSuccess"; this.EVENT_LIST["VoiceNotify"]["OnUnholdSuccess"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnUnholdSuccess"]); break; case "2056": newEvent["eventName"] = "OnReceiveDTMF"; this.EVENT_LIST["VoiceNotify"]["OnReceiveDTMF"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnReceiveDTMF"]); break; case "2057": //mrs notify newEvent["eventName"] = "MRSInfoNotify"; this.EVENT_LIST["VoiceNotify"]["MRSInfoNotify"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["MRSInfoNotify"]); break; case "2012": newEvent["eventName"] = "OnTalkingPrempted"; this.EVENT_LIST["VoiceNotify"]["OnTalkingPrempted"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnTalkingPrempted"]); break; } } else { //表示呼入 switch (rsp) { case "2003": // 停止振铃音 newEvent["value"]["caller"] = from; var param = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}, \"reqId\": \"{1}\"}".format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[event["value"]["cid"]]; if (call && call.callType == callStatusMgr.VOICECONF) { callStatusMgr.updateCallStatus(callStatusMgr.VOICECONF, callStatusMgr.CONNECTING, event); callStatusMgr.holdCall(event["value"]["cid"], reqId); newEvent["value"]["confId"] = call["confId"]; newEvent["value"]["isVideo"] = "false"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnConfConnect"; this.EVENT_LIST["PhoneConfNotify"]["OnConfConnect"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfConnect"]); var ajaxCfg = { "type": "POST", "url": cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"], "data": { "opt": "sub", "reqId": reqId, "confId": call["confId"] }, "callback": function(data) { if (data["rsp"] != "0") { var retEvent = { "eventName": "OnSubscribeConfFailure", "rsp": data["rsp"], } this.EVENT_LIST["PhoneConfNotify"]["OnSubscribeConfFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnSubscribeConfFailure"]); } else { cloudICP.util.callStatusMgr.confSubMgr[call["confId"]] = true; } } } cloudICP.util.ajax(ajaxCfg); break; } else if (call && call.callType == callStatusMgr.HALFVOICE) { callStatusMgr.updateCallStatus(callStatusMgr.HALFVOICE, callStatusMgr.CONNECTING, event); callStatusMgr.holdCall(event["value"]["cid"], reqId); newEvent["value"]["calltype"] = "halfdial"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "in"; newEvent["value"]["fmt"] = ""; newEvent["value"]["ptz"] = ""; newEvent["value"]["mute"] = ""; newEvent["eventName"] = "OnCallConnect"; this.EVENT_LIST["VoiceNotify"]["OnCallConnect"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallConnect"]); break; } else if (call && call.callType == callStatusMgr.AMBIENCE) { callStatusMgr.updateCallStatus(callStatusMgr.AMBIENCE, callStatusMgr.CONNECTING, event); newEvent["value"]["calltype"] = "ambience"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "in"; newEvent["value"]["fmt"] = ""; newEvent["value"]["ptz"] = ""; newEvent["value"]["mute"] = ""; newEvent["eventName"] = "OnCallConnect"; this.EVENT_LIST["VoiceNotify"]["OnCallConnect"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallConnect"]); break; } callStatusMgr.updateCallStatus(callStatusMgr.VOICE, callStatusMgr.CONNECTING, event); callStatusMgr.holdCall(event["value"]["cid"], reqId); newEvent["value"]["calltype"] = "voice"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "in"; newEvent["value"]["fmt"] = ""; newEvent["value"]["ptz"] = ""; newEvent["value"]["mute"] = ""; newEvent["eventName"] = "OnCallConnect"; this.EVENT_LIST["VoiceNotify"]["OnCallConnect"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallConnect"]); break; case "2002": if (reqId == undefined || reqId == '' || reqId == '0') { reqId = mainPageId; } if (cloudICP.util.ringType != "1") { // 播放振铃音 newEvent["value"]["caller"] = from; var param = "{\"description\":\"msp_play_tone\", \"cmd\": 131075, \"param\":{\"cid\": {0}, \"type\":0, \"delay\":0, \"duration\": 0, \"playcount\":0}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); } if (discreet_listenee != undefined && discreet_listenee != "0" && discreet_listenee != "") { var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.DISCREET, callStatusMgr.RINGING, event); newEvent["value"]["calltype"] = "discreetlisten"; newEvent["value"]["src"] = discreet_listenee; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnDialInRinging"; this.EVENT_LIST["VoiceNotify"]["OnDialInRinging"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnDialInRinging"]); break; }; var callStatusMgr = cloudICP.util.callStatusMgr; if (confInfo != undefined) { callStatusMgr.updateCallStatus(callStatusMgr.VOICECONF, callStatusMgr.RINGING, event, confInfo); newEvent["value"]["confId"] = confInfo["confInternalId"]; newEvent["value"]["isVideo"] = "false"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnConfDialInRinging"; this.EVENT_LIST["PhoneConfNotify"]["OnConfDialInRinging"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfDialInRinging"]); break; } var call = callStatusMgr.allCalls[event["value"]["cid"]]; if (call && call.callType == callStatusMgr.HALFVOICE) { callStatusMgr.updateCallStatus(callStatusMgr.HALFVOICE, callStatusMgr.RINGING, event); newEvent["value"]["calltype"] = "halfdial"; newEvent["value"]["src"] = ""; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnDialInRinging"; this.EVENT_LIST["VoiceNotify"]["OnDialInRinging"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnDialInRinging"]); break; } callStatusMgr.updateCallStatus(callStatusMgr.VOICE, callStatusMgr.RINGING, event); newEvent["value"]["calltype"] = "voice"; newEvent["value"]["src"] = ""; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnDialInRinging"; this.EVENT_LIST["VoiceNotify"]["OnDialInRinging"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnDialInRinging"]); break; case "2007": if (reqId == undefined || reqId == '' || reqId == '0') { reqId = mainPageId; } // 停止振铃音 newEvent["value"]["caller"] = from; var param = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}, \"reqId\": \"{1}\"}".format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); var callStatusMgr = cloudICP.util.callStatusMgr; if (discreet_listenee != undefined && discreet_listenee != "0" && discreet_listenee != "") { var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.DISCREET, callStatusMgr.CONNECTING, event); callStatusMgr.holdCall(event["value"]["cid"], reqId); newEvent["value"]["calltype"] = "discreetlisten"; newEvent["value"]["src"] = discreet_listenee; newEvent["value"]["direction"] = "in"; newEvent["value"]["fmt"] = ""; newEvent["value"]["ptz"] = ""; newEvent["value"]["mute"] = ""; newEvent["eventName"] = "OnCallConnect"; this.EVENT_LIST["VoiceNotify"]["OnCallConnect"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallConnect"]); break; }; var call = callStatusMgr.allCalls[event["value"]["cid"]]; if (call && call.callType == callStatusMgr.VOICECONF && confInfo != undefined) { callStatusMgr.updateCallStatus(callStatusMgr.VOICECONF, callStatusMgr.CONNECTING, event, confInfo); callStatusMgr.holdCall(event["value"]["cid"], reqId); newEvent["value"]["confId"] = call["confId"]; newEvent["value"]["isVideo"] = "false"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnConfConnect"; this.EVENT_LIST["PhoneConfNotify"]["OnConfConnect"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfConnect"]); var ajaxCfg = { "type": "POST", "url": cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"], "data": { "opt": "sub", "reqId": reqId, "confId": call["confId"] }, "callback": function(data) { if (data["rsp"] != "0") { var retEvent = { "eventName": "OnSubscribeConfFailure", "rsp": data["rsp"], } this.EVENT_LIST["PhoneConfNotify"]["OnSubscribeConfFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnSubscribeConfFailure"]); } else { cloudICP.util.callStatusMgr.confSubMgr[call["confId"]] = true; } } } cloudICP.util.ajax(ajaxCfg); break; } else if (call && call.callType == callStatusMgr.HALFVOICE) { callStatusMgr.updateCallStatus(callStatusMgr.HALFVOICE, callStatusMgr.CONNECTING, event); callStatusMgr.holdCall(event["value"]["cid"], reqId); newEvent["value"]["calltype"] = "halfdial"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "in"; newEvent["value"]["fmt"] = ""; newEvent["value"]["ptz"] = ""; newEvent["value"]["mute"] = ""; newEvent["eventName"] = "OnCallConnect"; this.EVENT_LIST["VoiceNotify"]["OnCallConnect"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallConnect"]); break; } callStatusMgr.updateCallStatus(callStatusMgr.VOICE, callStatusMgr.CONNECTING, event); callStatusMgr.holdCall(event["value"]["cid"], reqId); newEvent["value"]["calltype"] = "voice"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "in"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnCallConnect"; this.EVENT_LIST["VoiceNotify"]["OnCallConnect"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallConnect"]); break; case "2040": if (reqId == undefined || reqId == '' || reqId == '0') { reqId = mainPageId; } newEvent["value"]["caller"] = from; var callStatusMgr = cloudICP.util.callStatusMgr; if (confInfo != undefined) { callStatusMgr.updateCallStatus(callStatusMgr.VOICECONF, callStatusMgr.NEW, event, confInfo); break; } callStatusMgr.updateCallStatus(callStatusMgr.VOICE, callStatusMgr.NEW, event); newEvent["value"]["calltype"] = "voice"; newEvent["value"]["direction"] = "in"; newEvent["value"]["src"] = ""; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnConnectProceeding"; this.EVENT_LIST["VoiceNotify"]["OnConnectProceeding"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnConnectProceeding"]); break; case "2009": if (reqId == undefined || reqId == '' || reqId == '0') { reqId = mainPageId; } case "2011": // 停止振铃音 newEvent["value"]["caller"] = from; var param = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}, \"reqId\": \"{1}\"}".format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); // 删除音频媒体通道 var param = "{\"description\":\"msp_delete_audio_channel\", \"cmd\": 65538, \"param\":{\"resID\":{0}}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ) cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); if (event["rsp"] == "2009" && discreet_listenee != undefined && discreet_listenee != "0" && discreet_listenee != "") { var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.DISCREET, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "discreetlisten"; newEvent["value"]["releasetype"] = "other"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "in"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnCallRelease"; this.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); break; }; var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[event["value"]["cid"]]; if (call && call.callType == callStatusMgr.VOICECONF && confInfo != undefined) { callStatusMgr.updateCallStatus(callStatusMgr.VOICECONF, callStatusMgr.RELEASE, event, confInfo); newEvent["value"]["confId"] = call["confId"]; newEvent["value"]["isVideo"] = "false"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnConfRelease"; this.EVENT_LIST["PhoneConfNotify"]["OnConfRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfRelease"]); setTimeout(function() { var mconfInfo = cloudICP.util.callStatusMgr.confMgr[call["confId"]]; if (mconfInfo != null && ((mconfInfo["isEnding"] != undefined && mconfInfo[ "isEnding"] == true) || (mconfInfo["value"]["confStatus"]["status"] == "End"))) { return; } if (cloudICP.util.callStatusMgr.confSubMgr[call["confId"]] == undefined || cloudICP .util.callStatusMgr.confSubMgr[call["confId"]] != true) { return; } var ajaxCfg = { "type": "POST", "url": cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"], "data": { "opt": "unsub", "reqId": reqId, "confId": call["confId"] }, "callback": function(data) { if (data["rsp"] != "0") { var retEvent = { "eventName": "OnUnsubscribeConfFailure", "rsp": data["rsp"], } this.EVENT_LIST["PhoneConfNotify"]["OnUnsubscribeConfFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnUnsubscribeConfFailure"]); } } } cloudICP.util.ajax(ajaxCfg); }, 500); break; } else if (call && call.callType == callStatusMgr.HALFVOICE) { callStatusMgr.updateCallStatus(callStatusMgr.HALFVOICE, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "halfdial"; newEvent["value"]["releasetype"] = "other"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "in"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnCallRelease"; this.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); break; } callStatusMgr.updateCallStatus(callStatusMgr.VOICE, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "voice"; newEvent["value"]["releasetype"] = "other"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "in"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnCallRelease"; this.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); break; case "2010": if (reqId == undefined || reqId == '' || reqId == '0') { reqId = mainPageId; } // 停止振铃音 newEvent["value"]["caller"] = from; var param = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}, \"reqId\": \"{1}\"}".format( parseInt(value["cid"]), reqId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); // 删除音频媒体通道 var param = "{\"description\":\"msp_delete_audio_channel\", \"cmd\": 65538, \"param\":{\"resID\":{0}}, \"reqId\": \"{1}\"}" .format( parseInt(value["cid"]), reqId ) cloudICP.dispatch.webSocket.sendDataToMediaSDK(param, true); var callStatusMgr = cloudICP.util.callStatusMgr; var call = callStatusMgr.allCalls[event["value"]["cid"]]; if (call && call.callType == callStatusMgr.VOICECONF) { callStatusMgr.updateCallStatus(callStatusMgr.VOICECONF, callStatusMgr.RELEASE, event); newEvent["value"]["confId"] = call["confId"]; newEvent["value"]["isVideo"] = "false"; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnConfRelease"; this.EVENT_LIST["PhoneConfNotify"]["OnConfRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnConfRelease"]); setTimeout(function() { var mconfInfo = cloudICP.util.callStatusMgr.confMgr[call["confId"]]; if (mconfInfo != null && ((mconfInfo["isEnding"] != undefined && mconfInfo[ "isEnding"] == true) || (mconfInfo["value"]["confStatus"]["status"] == "End"))) { return; } if (cloudICP.util.callStatusMgr.confSubMgr[call["confId"]] == undefined || cloudICP .util.callStatusMgr.confSubMgr[call["confId"]] != true) { return; } var ajaxCfg = { "type": "POST", "url": cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"], "data": { "opt": "unsub", "reqId": reqId, "confId": call["confId"] }, "callback": function(data) { if (data["rsp"] != "0") { var retEvent = { "eventName": "OnUnsubscribeConfFailure", "rsp": data["rsp"], } this.EVENT_LIST["PhoneConfNotify"]["OnUnsubscribeConfFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["PhoneConfNotify"]["OnUnsubscribeConfFailure"]); } } } cloudICP.util.ajax(ajaxCfg); }, 500); break; } else if (call && call.callType == callStatusMgr.HALFVOICE) { callStatusMgr.updateCallStatus(callStatusMgr.HALFVOICE, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "halfdial"; newEvent["value"]["releasetype"] = "self"; newEvent["value"]["fmt"] = ""; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "in"; newEvent["eventName"] = "OnCallRelease"; this.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); break; } callStatusMgr.updateCallStatus(callStatusMgr.VOICE, callStatusMgr.RELEASE, event); newEvent["value"]["calltype"] = "voice"; newEvent["value"]["releasetype"] = "self"; newEvent["value"]["fmt"] = ""; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "in"; newEvent["eventName"] = "OnCallRelease"; this.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); break; case "2027": // 被人工转接通知 newEvent["eventName"] = "OnTransferNotify"; this.EVENT_LIST["VoiceNotify"]["OnTransferNotify"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnTransferNotify"]); break; case "2012": newEvent["eventName"] = "OnTalkingPrempted"; this.EVENT_LIST["VoiceNotify"]["OnTalkingPrempted"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnTalkingPrempted"]); break; case "2029": newEvent["eventName"] = "OnTalkingEmergencyCallStart"; this.EVENT_LIST["VoiceNotify"]["OnTalkingEmergencyCallStart"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnTalkingEmergencyCallStart"]); break; case "2041": if (reqId == undefined || reqId == '' || reqId == '0') { reqId = mainPageId; } var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.HALFVOICE, callStatusMgr.NEW, event); newEvent["value"]["calltype"] = "halfdial"; newEvent["value"]["direction"] = "in"; newEvent["value"]["src"] = ""; newEvent["value"]["fmt"] = ""; newEvent["eventName"] = "OnConnectProceeding"; this.EVENT_LIST["VoiceNotify"]["OnConnectProceeding"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnConnectProceeding"]); break; case "2042": // 关闭麦克风 var mediaParam = "{\"description\":\"msp_mute_audio_channel\", \"cmd\": 65549, \"param\":{\"resID\": {0}, \"mute\":true}}" .format( parseInt(value["cid"]) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(mediaParam); var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.HALFVOICE, callStatusMgr.CONNECTING, event); newEvent["eventName"] = "OnStartRecvHalfDial"; this.EVENT_LIST["VoiceNotify"]["OnStartRecvHalfDial"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnStartRecvHalfDial"]); break; case "2043": // 关闭麦克风 var mediaParam = "{\"description\":\"msp_mute_audio_channel\", \"cmd\": 65549, \"param\":{\"resID\": {0}, \"mute\":true}}" .format( parseInt(value["cid"]) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(mediaParam); // var callStatusMgr = cloudICP.util.callStatusMgr; // callStatusMgr.updateCallStatus(callStatusMgr.HALFVOICE, callStatusMgr.RELEASE, event); newEvent["eventName"] = "OnStopRecvHalfDial"; this.EVENT_LIST["VoiceNotify"]["OnStopRecvHalfDial"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnStopRecvHalfDial"]); break; case "2045": // 打开麦克风 var mediaParam = "{\"description\":\"msp_mute_audio_channel\", \"cmd\": 65549, \"param\":{\"resID\": {0}, \"mute\":false}}" .format( parseInt(value["cid"]) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(mediaParam); var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.HALFVOICE, callStatusMgr.CONNECTING, event); newEvent["eventName"] = "OnHalfDialSuccess"; this.EVENT_LIST["VoiceNotify"]["OnHalfDialSuccess"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnHalfDialSuccess"]); break; case "2046": var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.HALFVOICE, callStatusMgr.RELEASE, event); newEvent["eventName"] = "OnHalfDialFailure"; this.EVENT_LIST["VoiceNotify"]["OnHalfDialFailure"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnHalfDialFailure"]); break; case "2054": newEvent["eventName"] = "OnHoldSuccess"; this.EVENT_LIST["VoiceNotify"]["OnHoldSuccess"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnHoldSuccess"]); break; case "2055": newEvent["eventName"] = "OnUnholdSuccess"; this.EVENT_LIST["VoiceNotify"]["OnUnholdSuccess"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnUnholdSuccess"]); break; case "2056": newEvent["eventName"] = "OnReceiveDTMF"; this.EVENT_LIST["VoiceNotify"]["OnReceiveDTMF"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnReceiveDTMF"]); break; case "2057": //mrs notify newEvent["eventName"] = "MRSInfoNotify"; this.EVENT_LIST["VoiceNotify"]["MRSInfoNotify"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["MRSInfoNotify"]); break; case "2058": //voice linkphone notify newEvent["eventName"] = "OnLinkedPhoneNotify"; this.EVENT_LIST["VoiceNotify"]["OnLinkedPhoneNotify"].event = newEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnLinkedPhoneNotify"]); } }; } function ICPSDK_Dispatch_GIS() { this.MAX_SUB_LIST = 200; this.MAX_ERPRIED_TIME = 120; this.MAX_SUB_NUMBER = 8000; // 保持订阅参数 this.DEFAULT_EXPIRE_TIME = "90"; this.INTERVAL_TIME = 3000000; this.subList = []; var me = this; // 由于gis订阅过期后不会立马刷新,经过讨论决定通过重复订阅的方式,将之保持订阅,直到被取消订阅 setInterval(function() { var uelist = [] for (var index = 0; index < me.subList.length; index++) { if (uelist.length < 190) { uelist.push({ "isdn": me.subList[index] }); } else { me.subscribeGIS({ "uelist": uelist, "callback": function() {} }); uelist = []; } } if (uelist.length != 0) { me.subscribeGIS({ "uelist": uelist, "callback": function() {} }); uelist = []; } }, me.INTERVAL_TIME); }; /** * subscribeGIS * @param { * uelist : * callback : * } */ ICPSDK_Dispatch_GIS.prototype.subscribeGIS = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "subscribeGIS: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "subscribeGIS: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "subscribeGIS: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; var requestParam = {}; if (!(param["uelist"] && Array.isArray(param["uelist"]) && param["uelist"].length > 0 && param["uelist"] .length <= this.MAX_SUB_LIST)) { result["desc"] = "subscribeGIS: uelist is invalid"; param["callback"](result); return; } var length = param["uelist"].length; if (length + this.subList.length > this.MAX_SUB_NUMBER) { result["rsp"] = "-4"; result["desc"] = "subscribeGIS: The number of usbscribe user is limited to " + this.MAX_SUB_NUMBER; param["callback"](result); return; } for (var i = 0; i < length; i++) { var user = param["uelist"][i]; if (!cloudICP.util.checkIsdn(user["isdn"])) { result["desc"] = "subscribeGIS: isdn is invalid"; param["callback"](result); return; } } requestParam["expiredtime"] = this.DEFAULT_EXPIRE_TIME; requestParam["uelist"] = param["uelist"]; requestParam["reqId"] = tabPageId; var url = cloudICP.getSdkServerUrl() + "/v1/gis/" + cloudICP.userInfo["isdn"] + "/sub"; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * unsubscribeGIS * @param { * uelist : * callback : * } */ ICPSDK_Dispatch_GIS.prototype.unsubscribeGIS = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "unsubscribeGIS: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "unsubscribeGIS: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "unsubscribeGIS: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; var requestParam = {}; if (!(param["uelist"] && Array.isArray(param["uelist"]) && param["uelist"].length > 0 && param["uelist"] .length <= this.MAX_SUB_LIST)) { result["desc"] = "unsubscribeGIS: uelist is invalid"; param["callback"](result); return; } var length = param["uelist"].length; for (var i = 0; i < length; i++) { var user = param["uelist"][i]; if (!cloudICP.util.checkIsdn(user["isdn"])) { result["desc"] = "unsubscribeGIS: isdn is invalid"; param["callback"](result); return; } } requestParam["uelist"] = param["uelist"]; requestParam["reqId"] = tabPageId; var url = cloudICP.getSdkServerUrl() + "/v1/gis/" + cloudICP.userInfo["isdn"] + "/unsub"; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); } /** * query GIS SubList * @param { * callback : * } */ ICPSDK_Dispatch_GIS.prototype.queryGISSubList = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "queryGISSubList: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "queryGISSubList: allback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryGISSubList: The user does not logined"; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/gis/" + cloudICP.userInfo["isdn"] + "/sublist" + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); }; function ICPSDK_Dispatch_Group() { this.MAX_DYNAMICGROUP_ID = 9999999999999; this.MIN_DYNAMICGROUP_ID = 1; this.MAX_DYNAMICGROUP_MAXPERIOD = 65535; this.MAX_DYNAMICGROUP_PRIORITY = 255; this.MAX_DYNAMICGROUP_GROUPLIST_LENGTH = 8; this.MAX_DYNAMICGROUP_USERLIST_LENGTH = 200; this.MAX_PATCHGROUP_NAME_LENGTH = 32; this.MAX_PATCHGROUP_USERLIST_LENGTH = 20; // 最大支持组呼并发数 this.MAX_GROUP_CALL_NUM = 30; // 当前组呼数量 this.current_groupcall_num = 0; this.isCurrentPtt = { "grpid": "-1", "isPtt": false }; }; /** * 新增动态群组 * @param param { * "alias" : , * "grpid" : , * "maxperiod":, * "priority" : , * "grouplist" : * "uelist" : * "callback" * } */ ICPSDK_Dispatch_Group.prototype.addDynamicGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "addDynamicGroup: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "addDynamicGroup: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "addDynamicGroup: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; var requestParam = { "opt": "create", "param": {} }; if (!cloudICP.util.checkAliasOfGroup(param["alias"])) { result["desc"] = "addDynamicGroup: The alias is invalid"; param["callback"](result); return; } requestParam["param"]["alias"] = param["alias"]; requestParam["param"]["dcid"] = cloudICP.userInfo["isdn"]; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) == 0 || (parseInt(param["grpid"]) >= this.MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= this.MAX_DYNAMICGROUP_ID)))) { result["desc"] = "addDynamicGroup: The grpid is invalid"; param["callback"](result); return; } requestParam["param"]["grpid"] = param["grpid"]; if (!(cloudICP.util.isNumber(param["maxperiod"]) && (parseInt(param["maxperiod"]) >= 1 && parseInt(param["maxperiod"]) <= this.MAX_DYNAMICGROUP_MAXPERIOD) )) { result["desc"] = "addDynamicGroup: The maxperiod is invalid"; param["callback"](result); return; } requestParam["param"]["maxperiod"] = param["maxperiod"]; if (!(cloudICP.util.isNumber(param["priority"]) && (parseInt(param["priority"]) >= 1 && parseInt(param["priority"]) <= this.MAX_DYNAMICGROUP_PRIORITY))) { result["desc"] = "addDynamicGroup: The priority is invalid"; param["callback"](result); return; } requestParam["param"]["priority"] = param["priority"]; if (!Array.isArray(param["grouplist"]) || !Array.isArray(param["uelist"])) { result["desc"] = "addDynamicGroup: The grouplist or uelist is not array"; param["callback"](result); return; } if (param["grouplist"].length == 0 && param["uelist"].length == 0) { result["desc"] = "addDynamicGroup: The grouplist or uelist must have one isdn at least"; param["callback"](result); return; } if (param["grouplist"].length > this.MAX_DYNAMICGROUP_GROUPLIST_LENGTH) { result["desc"] = "addDynamicGroup: grouplist is invalid"; param["callback"](result); return; } var length = param["grouplist"].length; for (var i = 0; i < length; i++) { var group = param["grouplist"][i]; if (!cloudICP.util.checkGroupID(group["isdn"])) { result["desc"] = "addDynamicGroup: isdn is invalid in grouplist"; param["callback"](result); return; } } requestParam["param"]["grouplist"] = param["grouplist"]; if (param["uelist"].length > this.MAX_DYNAMICGROUP_USERLIST_LENGTH) { result["desc"] = "addDynamicGroup: grouplist is invalid"; param["callback"](result); return; } var length = param["uelist"].length; for (var i = 0; i < length; i++) { var user = param["uelist"][i]; if (!cloudICP.util.checkIsdn(user["isdn"])) { result["desc"] = "addDynamicGroup: isdn is invalid in uelist"; param["callback"](result); return; } } requestParam["param"]["uelist"] = param["uelist"]; requestParam["param"]["reqId"] = tabPageId; var url = cloudICP.getSdkServerUrl() + "/v1/group/" + cloudICP.userInfo["isdn"] + "/dynamicgroup"; var ajaxCfg = { "type": "PUT", "url": url, "data": requestParam, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); } /** * 删除动态群组 * @param param { * "grpid" : , * "callback" * } */ ICPSDK_Dispatch_Group.prototype.deleteDynamicGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "deleteDynamicGroup: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "deleteDynamicGroup: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "deleteDynamicGroup: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= this.MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= this.MAX_DYNAMICGROUP_ID))) { result["desc"] = "deleteDynamicGroup: The grpid is invalid"; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/group/" + cloudICP.userInfo["isdn"] + "/dynamicgroup/cancel/" + param["grpid"]; var requestParam = {}; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "DELETE", "url": url, "data": requestParam, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); } /** * 修改动态群组 * @param param { * "alias" : , * "grpid" : , * "maxperiod":, * "priority" : , * "grouplist" : * "uelist" : * "callback" * } */ ICPSDK_Dispatch_Group.prototype.modifyDynamicGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "modifyDynamicGroup: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "modifyDynamicGroup: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "modifyDynamicGroup: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; var requestParam = { "opt": "modify", "param": {} }; requestParam["param"]["dcid"] = cloudICP.userInfo["isdn"]; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= this.MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= this.MAX_DYNAMICGROUP_ID))) { result["desc"] = "modifyDynamicGroup: The grpid is invalid"; param["callback"](result); return; } requestParam["param"]["grpid"] = param["grpid"]; if (!Array.isArray(param["addlist"]) || !Array.isArray(param["dellist"])) { result["desc"] = "modifyDynamicGroup: The addlist or dellist is not array"; param["callback"](result); return; } if (param["dellist"].length == 0 && param["addlist"].length == 0) { result["desc"] = "modifyDynamicGroup: The addlist or dellist must have one isdn at least"; param["callback"](result); return; } if (param["addlist"].length > this.MAX_DYNAMICGROUP_USERLIST_LENGTH) { result["desc"] = "modifyDynamicGroup: addlist is invalid"; param["callback"](result); return; } var length = param["addlist"].length; for (var i = 0; i < length; i++) { var user = param["addlist"][i]; if (!cloudICP.util.checkIsdn(user["isdn"])) { result["desc"] = "modifyDynamicGroup: isdn is invalid in grouplist in addlist"; param["callback"](result); return; } } requestParam["param"]["addlist"] = param["addlist"]; if (param["dellist"].length > this.MAX_DYNAMICGROUP_USERLIST_LENGTH) { result["desc"] = "modifyDynamicGroup: dellist is invalid"; param["callback"](result); return; } var length = param["dellist"].length; for (var i = 0; i < length; i++) { var user = param["dellist"][i]; if (!cloudICP.util.checkIsdn(user["isdn"])) { result["desc"] = "modifyDynamicGroup: isdn is invalid in dellist"; param["callback"](result); return; } } requestParam["param"]["dellist"] = param["dellist"]; cloudICP.dispatch.query.queryDynamicGroupMembers({ "grpid": requestParam["param"]["grpid"], "callback": function(data) { if (data["rsp"] != "-1" && data["list"] != null) { var memberlist = data["list"]; var members = []; for (var index = 0; index < memberlist.length; index++) { members.push(memberlist[index]["isdn"]); } for (var index = 0; index < requestParam["param"]["dellist"].length; index++) { var isdn = requestParam["param"]["dellist"][index]["isdn"]; if (!cloudICP.util.includes(members, isdn)) { result["rsp"] = "-2"; result["desc"] = "modifyDynamicGroup: dellist is invalid."; param["callback"](result); return; } } for (var index = 0; index < requestParam["param"]["addlist"].length; index++) { var isdn = requestParam["param"]["addlist"][index]["isdn"]; if (cloudICP.util.includes(members, isdn)) { result["rsp"] = "-2"; result["desc"] = "modifyDynamicGroup: addlist is invalid."; param["callback"](result); return; } } var url = cloudICP.getSdkServerUrl() + "/v1/group/" + cloudICP.userInfo["isdn"] + "/dynamicgroup"; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); } else { result["rsp"] = "-2"; result["desc"] = "modifyDynamicGroup: grpid is invalid"; param["callback"](result); return; } } }) } /** * 新增派接组 */ ICPSDK_Dispatch_Group.prototype.addPatchGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "addPatchGroup: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "addPatchGroup: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "addPatchGroup: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; var requestParam = { "opt": "create", "param": {} }; if (param["name"] == undefined || param["name"] == null) { result["desc"] = "addPatchGroup: name is invalid"; param["callback"](result); return; } if (param["name"].length > this.MAX_PATCHGROUP_NAME_LENGTH) { result["desc"] = "addPatchGroup: name is invalid"; param["callback"](result); return; } var regex = /^[\u4e00-\u9fa5_0-9A-Za-z]+$/; if (param["name"] != "" && !regex.test(param["name"])) { result["desc"] = "addPatchGroup: name is invalid"; param["callback"](result); return; } requestParam["param"]["name"] = param["name"]; var url = cloudICP.getSdkServerUrl() + "/v1/group/" + cloudICP.userInfo["isdn"] + "/patchgroup"; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "PUT", "url": url, "data": requestParam, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); } /** * 删除派接组 * @param param { * "grpid" : , * "callback" * } */ ICPSDK_Dispatch_Group.prototype.deletePatchGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "deletePatchGroup: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "deletePatchGroup: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "deletePatchGroup: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= this.MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= this.MAX_DYNAMICGROUP_ID))) { result["desc"] = "deletePatchGroup: The grpid is invalid"; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/group/" + cloudICP.userInfo["isdn"] + "/patchgroup/cancel/" + param["grpid"]; var requestParam = {}; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "DELETE", "url": url, "data": requestParam, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); } /** * 新增派接组成员 * @param param { * "grpid" : , * "callback" * } */ ICPSDK_Dispatch_Group.prototype.addPatchGroupMember = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "addPatchGroupMember: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "addPatchGroupMember: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "addPatchGroupMember: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; var requestParam = { "opt": "add", "param": {} }; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= this.MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= this.MAX_DYNAMICGROUP_ID))) { result["desc"] = "addPatchGroupMember: The grpid is invalid"; param["callback"](result); return; } requestParam["param"]["grpid"] = param["grpid"]; if (!Array.isArray(param["memberlist"]) || param["memberlist"].length == 0 || param["memberlist"].length > this.MAX_PATCHGROUP_USERLIST_LENGTH) { result["desc"] = "addPatchGroupMember: memberlist is invalid"; param["callback"](result); return; } var length = param["memberlist"].length; for (var i = 0; i < length; i++) { var user = param["memberlist"][i]; if (!cloudICP.util.checkGroupID(user["isdn"])) { result["desc"] = "addPatchGroupMember: isdn is invalid in memberlist"; param["callback"](result); return; } } requestParam["param"]["memberlist"] = param["memberlist"]; var url = cloudICP.getSdkServerUrl() + "/v1/group/" + cloudICP.userInfo["isdn"] + "/patchgroup"; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); } /** * 删除派接组成员 * @param param { * "grpid" : , * "callback" * } */ ICPSDK_Dispatch_Group.prototype.deletePatchGroupMember = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "deletePatchGroupMember: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "deletePatchGroupMember: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "deletePatchGroupMember: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; var requestParam = { "opt": "del", "param": {} }; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= this.MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= this.MAX_DYNAMICGROUP_ID))) { result["desc"] = "deletePatchGroupMember: The grpid is invalid"; param["callback"](result); return; } requestParam["param"]["grpid"] = param["grpid"]; if (!Array.isArray(param["memberlist"]) || param["memberlist"].length == 0 || param["memberlist"].length > this.MAX_PATCHGROUP_USERLIST_LENGTH) { result["desc"] = "deletePatchGroupMember: memberlist is invalid"; param["callback"](result); return; } var length = param["memberlist"].length; for (var i = 0; i < length; i++) { var user = param["memberlist"][i]; if (!cloudICP.util.checkGroupID(user["isdn"])) { result["desc"] = "deletePatchGroupMember: isdn is invalid in memberlist"; param["callback"](result); return; } } requestParam["param"]["memberlist"] = param["memberlist"]; var url = cloudICP.getSdkServerUrl() + "/v1/group/" + cloudICP.userInfo["isdn"] + "/patchgroup"; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); } /** * subscribeTalkingGroup() subscribe talking group * @param {Object} param { * "grpid": , * "callback": , * } */ ICPSDK_Dispatch_Group.prototype.subscribeTalkingGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "subscribeTalkingGroup": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "subscribeTalkingGroup": "callback is not a function" }); return; } var resParam = {}; var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "subscribeTalkingGroup: User not logged."; param["callback"](result); return; }; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= cloudICP.dispatch.group .MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= cloudICP.dispatch.group.MAX_DYNAMICGROUP_ID))) { result["rsp"] = "-2"; result["desc"] = "subscribeTalkingGroup: grpid is invalid."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/groupcall/" + cloudICP.userInfo["isdn"]; resParam["opt"] = "sub"; resParam["to"] = param["grpid"]; resParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "async": false, "data": resParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * unsubscribeTalkingGroup() unsubscribe talking group * @param {Object} param { * "grpid": , * "callback": , * } */ ICPSDK_Dispatch_Group.prototype.unsubscribeTalkingGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "unsubscribeTalkingGroup": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "unsubscribeTalkingGroup": "callback is not a function" }); return; } var resParam = {}; var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "unsubscribeTalkingGroup: User not logged."; param["callback"](result); return; }; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= cloudICP.dispatch.group .MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= cloudICP.dispatch.group.MAX_DYNAMICGROUP_ID))) { result["rsp"] = "-2"; result["desc"] = "unsubscribeTalkingGroup: grpid is invalid."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/groupcall/" + cloudICP.userInfo["isdn"]; resParam["opt"] = "unsub"; resParam["to"] = param["grpid"]; resParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "async": false, "data": resParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * subjoinTalkingGroup() subjoin talking group * @param {Object} param { * "grpid": , * "callback": , * } */ ICPSDK_Dispatch_Group.prototype.subjoinTalkingGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "subjoinTalkingGroup": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "subjoinTalkingGroup": "callback is not a function" }); return; } var resParam = {}; var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "subjoinTalkingGroup: User not logged."; param["callback"](result); return; }; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= cloudICP.dispatch.group .MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= cloudICP.dispatch.group.MAX_DYNAMICGROUP_ID))) { result["rsp"] = "-2"; result["desc"] = "subjoinTalkingGroup: grpid is invalid."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/groupcall/" + cloudICP.userInfo["isdn"]; resParam["opt"] = "subjoin"; resParam["to"] = param["grpid"]; resParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "async": false, "data": resParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * joinTalkingGroup() subjoin talking group * @param {Object} param { * "grpid": , * "callback": , * } */ ICPSDK_Dispatch_Group.prototype.joinTalkingGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "joinTalkingGroup": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "joinTalkingGroup": "callback is not a function" }); return; } var resParam = {}; var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "joinTalkingGroup: User not logged."; param["callback"](result); return; }; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= cloudICP.dispatch.group .MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= cloudICP.dispatch.group.MAX_DYNAMICGROUP_ID))) { result["rsp"] = "-2"; result["desc"] = "joinTalkingGroup: grpid is invalid."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/groupcall/" + cloudICP.userInfo["isdn"]; resParam["opt"] = "join"; resParam["to"] = param["grpid"]; resParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "async": false, "data": resParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * pttTalkingGroup() ptt talking group * @param {Object} param { * "grpid": , * "callback": , * } */ ICPSDK_Dispatch_Group.prototype.pttTalkingGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "pttTalkingGroup": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "pttTalkingGroup": "callback is not a function" }); return; } var resParam = {}; var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "pttTalkingGroup: User not logged."; param["callback"](result); return; }; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= cloudICP.dispatch.group .MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= cloudICP.dispatch.group.MAX_DYNAMICGROUP_ID))) { result["rsp"] = "-2"; result["desc"] = "pttTalkingGroup: grpid is invalid."; param["callback"](result); return; } if (cloudICP.dispatch.group.current_groupcall_num >= cloudICP.dispatch.group.MAX_GROUP_CALL_NUM) { result["rsp"] = "-4"; result["desc"] = "pttTalkingGroup: Exceeded the maximum number of group calls."; param["callback"](result); return; } if (cloudICP.dispatch.group.isCurrentPtt["isPtt"]) { result["rsp"] = "-5"; result["desc"] = "pttTalkingGroup: The number of ptt is limited to 1."; param["callback"](result); return; } var callStatusMgr = cloudICP.util.callStatusMgr; if (callStatusMgr.connectingCallMgr[callStatusMgr.HALFVOICE].length != 0) { result["rsp"] = "-6"; result["desc"] = "pttTalkingGroup: The group call ptt is confliced with halfdial."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/groupcall/" + cloudICP.userInfo["isdn"]; resParam["opt"] = "snatch"; resParam["to"] = param["grpid"]; resParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "async": false, "data": resParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * pttreleaseTalkingGroup() ptt release talking group * @param {Object} param { * "grpid": , * "callback": , * } */ ICPSDK_Dispatch_Group.prototype.pttreleaseTalkingGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "pttreleaseTalkingGroup": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "pttreleaseTalkingGroup": "callback is not a function" }); return; } var resParam = {}; var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "pttreleaseTalkingGroup: User not logged."; param["callback"](result); return; }; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= cloudICP.dispatch.group .MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= cloudICP.dispatch.group.MAX_DYNAMICGROUP_ID))) { result["rsp"] = "-2"; result["desc"] = "pttreleaseTalkingGroup: grpid is invalid."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/groupcall/" + cloudICP.userInfo["isdn"]; resParam["opt"] = "release"; resParam["to"] = param["grpid"]; resParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "async": false, "data": resParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * leaveTalkingGroup() ptt release talking group * @param {Object} param { * "cid": , * "callback": , * } */ ICPSDK_Dispatch_Group.prototype.leaveTalkingGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "leaveTalkingGroup": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "leaveTalkingGroup": "callback is not a function" }); return; } var resParam = {}; var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "leaveTalkingGroup: User not logged."; param["callback"](result); return; }; result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "leaveTalkingGroup: The cid is invalid"; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/groupcall/" + cloudICP.userInfo["isdn"]; resParam["opt"] = "hangup"; resParam["cid"] = param["cid"]; resParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "async": false, "data": resParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * pttTalkingGroupEmergencyCall() ptt talking group emergency call * @param {Object} param { * "grpid": , * "callback": , * } */ ICPSDK_Dispatch_Group.prototype.pttTalkingGroupEmergencyCall = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "pttTalkingGroupEmergencyCall": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "pttTalkingGroupEmergencyCall": "callback is not a function" }); return; } var resParam = {}; var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "pttTalkingGroupEmergencyCall: User not logged."; param["callback"](result); return; }; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= cloudICP.dispatch.group .MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= cloudICP.dispatch.group.MAX_DYNAMICGROUP_ID))) { result["rsp"] = "-2"; result["desc"] = "pttTalkingGroupEmergencyCall: grpid is invalid."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/groupcall/" + cloudICP.userInfo["isdn"]; resParam["opt"] = "emergency"; resParam["to"] = param["grpid"]; resParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "async": false, "data": resParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * breakoffTalkingGroup() break off talking group * @param {Object} param { * "grpid": , * "callback": , * } */ ICPSDK_Dispatch_Group.prototype.breakoffTalkingGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "breakoffTalkingGroup": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "breakoffTalkingGroup": "callback is not a function" }); return; } var resParam = {}; var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "breakoffTalkingGroup: User not logged."; param["callback"](result); return; }; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= cloudICP.dispatch.group .MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= cloudICP.dispatch.group.MAX_DYNAMICGROUP_ID))) { result["rsp"] = "-2"; result["desc"] = "breakoffTalkingGroup: grpid is invalid."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/groupcall/" + cloudICP.userInfo["isdn"] + "/breakoff"; resParam["opt"] = "group"; resParam["to"] = param["grpid"]; resParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "async": false, "data": resParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * addTalkingGroupTempUser() add talking group temp user * @param {Object} param { * "grpid": , * "userid" , * "callback": , * } */ ICPSDK_Dispatch_Group.prototype.addTalkingGroupTempUser = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "addTalkingGroupTempUser": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "addTalkingGroupTempUser": "callback is not a function" }); return; } var resParam = {}; var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "addTalkingGroupTempUser: User not logged."; param["callback"](result); return; }; if (!cloudICP.util.checkIsdn(param["userid"])) { result["rsp"] = "-2"; result["desc"] = "addTalkingGroupTempUser: userid is invalid"; param["callback"](result); return; } if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= cloudICP.dispatch.group .MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= cloudICP.dispatch.group.MAX_DYNAMICGROUP_ID))) { result["rsp"] = "-2"; result["desc"] = "addTalkingGroupTempUser: grpid is invalid."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/groupcall/" + cloudICP.userInfo["isdn"]; resParam["opt"] = "adduser"; resParam["to"] = param["grpid"]; resParam["userid"] = param["userid"]; resParam["reqId"] = tabPageId; if (undefined != param["waitcallresult"] && "0" != param["waitcallresult"]) { resParam["waitcallresult"] = "1"; } else { resParam["waitcallresult"] = "0"; } var ajaxCfg = { "type": "POST", "url": url, "async": false, "data": resParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * breakinTalkingGroup() break in talking group * @param {Object} param { * "grpid": , * "callback": , * } */ ICPSDK_Dispatch_Group.prototype.breakinTalkingGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "breakinTalkingGroup": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "breakinTalkingGroup": "callback is not a function" }); return; } var resParam = {}; var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "breakinTalkingGroup: User not logged."; param["callback"](result); return; }; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= cloudICP.dispatch.group .MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= cloudICP.dispatch.group.MAX_DYNAMICGROUP_ID))) { result["rsp"] = "-2"; result["desc"] = "breakinTalkingGroup: grpid is invalid."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/groupcall/" + cloudICP.userInfo["isdn"]; resParam["opt"] = "breakin"; resParam["to"] = param["grpid"]; resParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "async": false, "data": resParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * getPDTGroupInfo() get pdt group info * @param {Object} param { * "operation": , * "userid" , * "callback": , * } */ ICPSDK_Dispatch_Group.prototype.getPDTGroupInfo = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "getPDTGroupInfo": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "getPDTGroupInfo": "callback is not a function" }); return; } var resParam = {}; var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "getPDTGroupInfo: User not logged."; param["callback"](result); return; }; if (!cloudICP.util.checkIsdn(param["userid"])) { result["rsp"] = "-2"; result["desc"] = "getPDTGroupInfo: userid is invalid"; param["callback"](result); return; } if (!param["operation"] || typeof param["operation"] != "string") { result["desc"] = "getPDTGroupInfo: operation is invalid"; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/groupcall/" + cloudICP.userInfo["isdn"]; resParam["opt"] = "pdt_query"; resParam["operation"] = param["operation"]; resParam["userId"] = param["userid"]; resParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "async": false, "data": resParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * setListenGroup() get pdt group info * @param {Object} param { * "operation": , * "userid" , * "callback": , * } */ ICPSDK_Dispatch_Group.prototype.setListenGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "setListenGroup": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "setListenGroup": "callback is not a function" }); return; } var resParam = {}; var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "setListenGroup: User not logged."; param["callback"](result); return; }; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= cloudICP.dispatch.group .MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= cloudICP.dispatch.group.MAX_DYNAMICGROUP_ID))) { result["rsp"] = "-2"; result["desc"] = "setListenGroup: grpid is invalid."; param["callback"](result); return; } if (!param["operation"] || typeof param["operation"] != "string") { result["desc"] = "setListenGroup: operation is invalid"; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/groupcall/" + cloudICP.userInfo["isdn"]; resParam["opt"] = "set_listen"; resParam["operation"] = param["operation"]; resParam["grpid"] = param["grpid"]; resParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "async": false, "data": resParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; function ICPSDK_Dispatch_Query() {}; var PAGE_QUERY_LIMIT_MAX = 5000; /** * queryTalkingGroup() query talking group * @param {Object} param { * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryTalkingGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryTalkingGroup": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryTalkingGroup": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryTalkingGroup: User not logged."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/group/-1" + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryTalkingGroupV1() query talking group * @param {Object} param { * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryTalkingGroupV1 = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryTalkingGroupV1": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryTalkingGroupV1": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryTalkingGroupV1: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; if (undefined == param["offset"]) { param["offset"] = "0"; } if (undefined == param["limit"]) { param["limit"] = "1000"; } if (!(cloudICP.util.isNumber(param["category"])) ) { param["category"] = "10"; } if (!(cloudICP.util.isNumber(param["offset"]))) { result["desc"] = "queryTalkingGroupV1: offset invalid."; param["callback"](result); return; } if (!(cloudICP.util.isNumber(param["limit"])) || param["limit"] > PAGE_QUERY_LIMIT_MAX) { result["desc"] = "queryTalkingGroupV1: limit invalid."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v2/" + cloudICP.userInfo["isdn"] + "/group?offset={0}&limit={1}&reqId={2}&category={3}" .format(param["offset"], param["limit"], tabPageId, param["category"]); var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryTalkingGroupMembers() query talking group members * @param {Object} param { * "grpid": , * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryTalkingGroupMembers = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryTalkingGroupMembers": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryTalkingGroupMembers": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryTalkingGroupMembers: User not logged."; param["callback"](result); return; }; result["rsp"] = "-2"; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= cloudICP.dispatch.group .MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= cloudICP.dispatch.group.MAX_DYNAMICGROUP_ID))) { result["desc"] = "queryTalkingGroupMembers: grpid is invalid."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/" + param["grpid"] + "/groupmember/-1" + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryTalkingGroupMembersV1() query talking group members * @param {Object} param { * "grpid": , * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryTalkingGroupMembersV1 = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryTalkingGroupMembersV1": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryTalkingGroupMembersV1": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryTalkingGroupMembersV1: User not logged."; param["callback"](result); return; }; result["rsp"] = "-2"; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= cloudICP.dispatch.group .MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= cloudICP.dispatch.group.MAX_DYNAMICGROUP_ID))) { result["desc"] = "queryTalkingGroupMembersV1: grpid is invalid."; param["callback"](result); return; } if (undefined == param["offset"]) { param["offset"] = "0"; } if (undefined == param["limit"]) { param["limit"] = "1000"; } if (!(cloudICP.util.isNumber(param["offset"]))) { result["desc"] = "queryTalkingGroupMembersV1: offset is invalid."; param["callback"](result); return; } if (!(cloudICP.util.isNumber(param["limit"])) || param["limit"] > PAGE_QUERY_LIMIT_MAX) { result["desc"] = "queryTalkingGroupMembersV1: limit is invalid."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v2/" + cloudICP.userInfo["isdn"] + "/groupmember?number={0}&offset={1}&limit={2}&reqId={3}".format( param["grpid"], param["offset"], param["limit"], tabPageId); var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryDynamicGroupMembers() query talking group members * @param {Object} param { * "grpid": , * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryDynamicGroupMembers = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryDynamicGroupMembers": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryDynamicGroupMembers": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryDynamicGroupMembers: User not logged."; param["callback"](result); return; }; result["rsp"] = "-2"; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= cloudICP.dispatch.group .MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= cloudICP.dispatch.group.MAX_DYNAMICGROUP_ID))) { result["desc"] = "queryDynamicGroupMembers: grpid is invalid."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/" + param["grpid"] + "/dynamicgroupmember/-1" + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryDynamicGroup() query dynamic group * @param {Object} param { * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryDynamicGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryDynamicGroup": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryDynamicGroup": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryDynamicGroup: User not logged."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/dynamicgroup/-1" + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { if (undefined != data["list"] && data["list"] != null) { var index = 0; for (var index = 0; index < data["list"].length; index++) { if (undefined != data["list"][index]["speakerfixed"]) { delete data["list"][index]["speakerfixed"]; } } } param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryStaticGroup() query static group * @param {Object} param { * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryStaticGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryStaticGroup": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryStaticGroup": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryStaticGroup: User not logged."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/staticgroup/-1" + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryStaticGroupV1() query static group * @param {Object} param { * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryStaticGroupV1 = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryStaticGroupV1": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryStaticGroupV1": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryStaticGroupV1: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; if (undefined == param["offset"]) { param["offset"] = "0"; } if (undefined == param["limit"]) { param["limit"] = "1000"; } if (!(cloudICP.util.isNumber(param["offset"]))) { result["desc"] = "queryStaticGroupV1: offset invalid."; param["callback"](result); return; } if (!(cloudICP.util.isNumber(param["limit"])) || param["limit"] > PAGE_QUERY_LIMIT_MAX ) { result["desc"] = "queryStaticGroupV1: limit invalid."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v2/" + cloudICP.userInfo["isdn"] + "/staticgroup?offset={0}&limit={1}&reqId={2}" .format( param["offset"], param["limit"], tabPageId); var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryPatchGroup() query patch group * @param {Object} param { * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryPatchGroup = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryPatchGroup": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryPatchGroup": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryPatchGroup: User not logged."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/patchgroup/-1" + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryPatchGroupMembers() query patch group members * @param {Object} param { * "grpid": , * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryPatchGroupMembers = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryPatchGroupMembers": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryPatchGroupMembers": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryPatchGroupMembers: User not logged."; param["callback"](result); return; }; result["rsp"] = "-2"; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= cloudICP.dispatch.group .MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= cloudICP.dispatch.group.MAX_DYNAMICGROUP_ID))) { result["desc"] = "queryPatchGroupMembers: grpid is invalid."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/" + param["grpid"] + "/patchgroupmember/-1" + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryUserList() query user * @param {Object} param { * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryUserList = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryUserList": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryUserList": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryUserList: User not logged."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/user/-1" + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryUserListV1() query user * @param {Object} param { * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryUserListV1 = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryUserListV1": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryUserListV1": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryUserListV1: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; if (undefined == param["offset"]) { param["offset"] = "0"; } if (undefined == param["limit"]) { param["limit"] = "1000"; } if ( !(cloudICP.util.isNumber(param["category"])) ) { param["category"] = "-1"; } if (!(cloudICP.util.isNumber(param["offset"]))) { result["desc"] = "queryUserListV1: offset invalid."; param["callback"](result); return; } if (!(cloudICP.util.isNumber(param["limit"])) || param["limit"] > PAGE_QUERY_LIMIT_MAX) { result["desc"] = "queryUserListV1: limit invalid."; param["callback"](result); return; } let departmentId = ""; if ((undefined != param["departmentid"]) && param["departmentid"] != "") { if (!(cloudICP.util.isNumber(param["departmentid"]))|| param["departmentid"].length > 18) { result["desc"] = "queryUserListV1: departmentid invalid."; param["callback"](result); return; } else { departmentId = param["departmentid"]; } } var url = cloudICP.getSdkServerUrl() + "/v2/" + cloudICP.userInfo["isdn"] + "/user?offset={0}&limit={1}&reqId={2}&category={3}&departmentid={4}".format( param["offset"], param["limit"], tabPageId, param["category"], departmentId); var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryCameras() query cameras * @param {Object} param { * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryCameras = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryCameras": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryCameras": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryCameras: User not logged."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/camera/-1" + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } ICPSDK_Dispatch_Query.prototype.queryCamerasV1 = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"]) { var param = param["value"]; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryCamerasV1": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryCamerasV1": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryCamerasV1: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; if (undefined == param["offset"]) { param["offset"] = "0"; } if (undefined == param["limit"]) { param["limit"] = "1000"; } if ( !(cloudICP.util.isNumber(param["offset"])) ) { result["desc"] = "queryCamerasV1: offset invalid."; param["callback"](result); return; } if ( !(cloudICP.util.isNumber(param["limit"])) || param["limit"] > PAGE_QUERY_LIMIT_MAX) { result["desc"] = "queryCamerasV1: limit invalid."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v2/" + cloudICP.userInfo["isdn"] + "/camera?offset={0}&limit={1}&reqId={2}".format( param["offset"], param["limit"], tabPageId); var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * query cameras at a specified level. * @param {Object} param { * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.querySpecifiedLevelCamera = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "querySpecifiedLevelCamera": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "querySpecifiedLevelCamera": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "querySpecifiedLevelCamera: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; if (!(cloudICP.util.isNumber(param["levelnumber"]))) { result["desc"] = "querySpecifiedLevelCamera: levelnumber is invalid."; param["callback"](result); return; } if (undefined == param["offset"]) { param["offset"] = "0"; } if (!(cloudICP.util.isNumber(param["offset"]))) { result["desc"] += " querySpecifiedLevelCamera: offset is invalid"; param["callback"](result); return; } if (undefined == param["limit"]) { param["limit"] = "1000"; } if (!(cloudICP.util.isNumber(param["limit"]))) { result["desc"] += " querySpecifiedLevelCamera: limit is invalid"; param["callback"](result); return; } else { var iLimit = parseInt(param["limit"]); if (1 > iLimit || 5000 < iLimit) { result["desc"] += " querySpecifiedLevelCamera: limit not in [1,5000]"; param["callback"](result); return; } } var url = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/querylevelcameras"; var ajaxCfg = { "type": "POST", "url": url, "async": true, "data": param, "callback": function(data) { data["desc"] += result["desc"]; param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryDecoder() query decoder * @param {Object} param { * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryDecoder = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryDecoder": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryDecoder": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryDecoder: User not logged."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/decoder/-1" + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryDepartmentList() query department list * @param {Object} param { * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryDepartmentList = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryDepartmentList": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryDepartmentList": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryDepartmentList: User not logged."; param["callback"](result); return; } if (undefined == param["name"]) { param["name"] = ""; } var url = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/department" + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": param, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryCameraLevel() query camera level * @param {Object} param { * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryCameraLevel = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryCameraLevel": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryCameraLevel": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryCameraLevel: User not logged."; param["callback"](result); return; } if (undefined == param["name"]) { param["name"] = ""; } var url = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/cameralevel" + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": param, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryCameraLevelPermission() query camera level permission * @param {Object} param { * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryCameraLevelPermission = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryCameraLevelPermission": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryCameraLevelPermission": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryCameraLevelPermission: User not logged."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/cameralevelpermission/-1" + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryTalkingGroupInfo() query talking group info * @param {Object} param { * "grpid": , * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryTalkingGroupInfo = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryTalkingGroupInfo": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryTalkingGroupInfo": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryTalkingGroupInfo: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= cloudICP.dispatch.group .MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= cloudICP.dispatch.group.MAX_DYNAMICGROUP_ID))) { result["desc"] = "queryTalkingGroupInfo: grpid is invalid."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/queryattribute/" + cloudICP.userInfo["isdn"] + "/group/" + param["grpid"] + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryPatchGroupInfo() query patch group info * @param {Object} param { * "grpid": , * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryPatchGroupInfo = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryPatchGroupInfo": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryPatchGroupInfo": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryPatchGroupInfo: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= cloudICP.dispatch.group .MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= cloudICP.dispatch.group.MAX_DYNAMICGROUP_ID))) { result["desc"] = "queryPatchGroupInfo: grpid is invalid."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/queryattribute/" + cloudICP.userInfo["isdn"] + "/patchgroup/" + param["grpid"] + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryTalkingGroupPatchedInfo() query patched info * @param {Object} param { * "grpid": , * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryTalkingGroupPatchedInfo = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryTalkingGroupPatchedInfo": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryTalkingGroupPatchedInfo": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryTalkingGroupPatchedInfo: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; if (!(cloudICP.util.isNumber(param["grpid"]) && (parseInt(param["grpid"]) >= cloudICP.dispatch.group .MIN_DYNAMICGROUP_ID && parseInt(param["grpid"]) <= cloudICP.dispatch.group.MAX_DYNAMICGROUP_ID))) { result["desc"] = "queryTalkingGroupPatchedInfo: grpid is invalid."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/queryattribute/" + cloudICP.userInfo["isdn"] + "/patched/" + param["grpid"] + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryUserInfo() query user info * @param {Object} param { * "isdn": , * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryUserInfo = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryUserInfo": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryUserInfo": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryUserInfo: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["isdn"])) { result["desc"] = "queryUserInfo: isdn is invalid"; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/queryattribute/" + cloudICP.userInfo["isdn"] + "/user/" + param["isdn"] + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryCameraInfo() query camera info * @param {Object} param { * "isdn": , * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryCameraInfo = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryCameraInfo": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryCameraInfo": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryCameraInfo: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["isdn"])) { result["desc"] = "queryCameraInfo: isdn is invalid"; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/queryattribute/" + cloudICP.userInfo["isdn"] + "/camera/" + param["isdn"] + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryCameraPermissionInfo() query camera permission info * @param {Object} param { * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryCameraPermissionInfo = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryCameraPermissionInfo": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryCameraPermissionInfo": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryCameraPermissionInfo: User not logged."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/queryattribute/" + cloudICP.userInfo["isdn"] + "/camerapermission" + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryCallInfo() query decoder info * @param {Object} param { * "isdn": , * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryCallInfo = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryCallInfo": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryCallInfo": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryCallInfo: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["isdn"])) { result["desc"] = "queryCallInfo: isdn is invalid"; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/queryattribute/" + cloudICP.userInfo["isdn"] + "/decoder/" + param["isdn"] + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryDCInfo() query DC info * @param {Object} param { * "isdn": , * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryDCInfo = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryDCInfo": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryDCInfo": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryDCInfo: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["isdn"])) { result["desc"] = "queryDCInfo: isdn is invalid"; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/queryattribute/" + cloudICP.userInfo["isdn"] + "/dc/" + param[ "isdn"] + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryUEInfo() query UE info * @param {Object} param { * "isdn": , * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryUEInfo = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryUEInfo": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryUEInfo": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryUEInfo: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["isdn"])) { result["desc"] = "queryUEInfo: isdn is invalid"; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/queryattribute/" + cloudICP.userInfo["isdn"] + "/ue/" + param[ "isdn"] + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * queryUEGisInfo() query UE gis info * @param {Object} param { * "isdn": , * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryUEGisInfo = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryUEGisInfo": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryUEGisInfo": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryUEGisInfo: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["isdn"])) { result["desc"] = "queryUEGisInfo: isdn is invalid"; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/queryattribute/" + cloudICP.userInfo["isdn"] + "/uegis/" + param[ "isdn"] + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * queryGISTrack() query department list * @param {Object} param { * "ueId": , * "start_sec": , * "end_sec": , * "offset", * "limit", * "policy", * "maxNum", * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryGISTrack = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } /**检查是不是合法年月日输入 */ if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryGISTrack": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryGISTrack": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryGISTrack: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; if (!(cloudICP.util.isNumber(param["ueid"]))) { result["desc"] += " queryGISTrack: ueid is invalid"; param["callback"](result); return; } var tmpBeginStr; if (!(dateStrIsValid(param["begintime"])) || (undefined == param["begintime"])) { result["desc"] = "queryGISTrack: begintime is invalid"; param["callback"](result); return; } else { tmpBeginStr = param["begintime"].replace(/-/g,"/"); if (isNaN(Date.parse(tmpBeginStr))) { result["desc"] = "queryGISTrack: begintime is invalid"; param["callback"](result); return; } } var tmpEndStr; if (!(dateStrIsValid(param["endtime"])) || (undefined == param["endtime"])) { result["desc"] = "queryGISTrack: endtime is invalid"; param["callback"](result); return; } else { tmpEndStr = param["endtime"].replace(/-/g,"/"); if (isNaN(Date.parse(tmpEndStr))) { result["desc"] = "queryGISTrack: endtime is invalid"; param["callback"](result); return; } } if (((Date.parse(tmpEndStr) - Date.parse(tmpBeginStr))/1000) > 604800 || ((Date.parse(tmpEndStr) - Date.parse(tmpBeginStr))/1000) < 0) {//604,800 为 7天的 s数 3600*24*7 result["desc"] = "The start time must be earlier than the end time and The difference between the start time and end time cannot exceed 7 days."; param["callback"](result); return; } if (undefined == param["offset"]) { param["offset"] = "0"; } else if (!(cloudICP.util.isNumber(param["offset"]))) { result["desc"] += " queryGISTrack: offset is invalid.."; param["callback"](result); return; } if (undefined == param["limit"]) { param["limit"] = "1000"; } else if (!(cloudICP.util.isNumber(param["limit"]))) { result["desc"] += " queryGISTrack: limit is error or null."; param["callback"](result); return; } else { var iLimit = parseInt(param["limit"]); if (1 > iLimit || 2000 < iLimit) { result["desc"] += " queryGISTrack: limit not in [1,2000]"; param["callback"](result); return; } } if (undefined == param["policy"]) { param["policy"] = "1"; } else if (!(cloudICP.util.isNumber(param["policy"]))) { result["desc"] += " queryGISTrack: policy is invalid, policy not in [0,1]"; param["callback"](result); return; } if (undefined == param["maxnum"]) { param["maxnum"] = "2147483647"; } else if (!(cloudICP.util.isNumber(param["maxnum"]))) { result["desc"] += " queryGISTrack: maxnum is invalid"; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/gistrack"; var requestParam = { "ueid": param["ueid"], "begintime": param["begintime"], "endtime": param["endtime"], "offset": param["offset"], "limit": param["limit"], "policy": param["policy"], "maxnum": param["maxnum"] }; var ajaxCfg = { "type": "POST", "url": url, "async": true, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * queryConfWallInfo() query department list * @param {Object} param { * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryConfWallInfo = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryConfWallInfo": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryConfWallInfo": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryDepartmentList: User not logged."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/phoneconf/" + cloudICP.userInfo["isdn"] + "/querywallinfo"; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "async": true, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * queryRecord() query department list * @param {Object} param { * "call_type": , * "callee": , * "caller": , * "resource_id": , * "start_sec": , * "end_sec": , * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryRecord = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryRecord": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryRecord": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryRecord: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; var types = ["0", "1", "2", "3", "5", "6", "7", "8"]; if (!param["call_type"] || !cloudICP.util.includes(types, param["call_type"])) { result["desc"] = "queryRecord: The call_type is invalid"; param["callback"](result); return; } if (param["caller"] != "" && !cloudICP.util.checkIsdn(param["caller"])) { result["desc"] = "queryRecord: caller is invalid"; param["callback"](result); return; } if (param["callee"] != "" && !cloudICP.util.checkIsdn(param["callee"])) { result["desc"] = "queryRecord: callee is invalid"; param["callback"](result); return; } if (!(/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(param["end_sec"]))) { result["desc"] = "queryRecord: end_sec is invalid"; param["callback"](result); return; } else { var tmpStr = param["end_sec"].replace(/-/g, "/") if (isNaN(Date.parse(tmpStr))) { result["desc"] = "queryRecord: end_sec is invalid"; param["callback"](result); return; } } if (!(/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$/.test(param["start_sec"]))) { result["desc"] = "queryRecord: start_sec is invalid"; param["callback"](result); return; } else { var tmpStr = param["start_sec"].replace(/-/g, "/") if (isNaN(Date.parse(tmpStr))) { result["desc"] = "queryRecord: start_sec is invalid"; param["callback"](result); return; } } if (undefined == param["offset"]) { param["offset"] = "0"; } else if (!(cloudICP.util.isNumber(param["offset"]))) { result["desc"] += " queryRecord: offset is invalid"; param["callback"](result); return; } if (undefined == param["limit"]) { param["limit"] = "100"; } else if (!(cloudICP.util.isNumber(param["limit"]))) { result["desc"] += " queryRecord: limit is error or null."; param["callback"](result); return; } else { var iLimit = parseInt(param["limit"]); if (1 > iLimit || 1000 < iLimit) { result["desc"] += " queryRecord: limit not in [1,1000]."; param["callback"](result); return; } } var url = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/recfileinfo"; var requestParam = { "call_type": param["call_type"], "callee": param["callee"], "caller": param["caller"], "resource_id": param["resource_id"], "start_sec": param["start_sec"], "end_sec": param["end_sec"], "offset": param["offset"], "fileNum": param["limit"] }; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "async": true, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * queryCameraGPSInfo() query department list * @param {Object} param { * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryCameraGPSInfo = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryCameraGPSInfo": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryCameraGPSInfo": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryCameraGPSInfo: User not logged."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/gisipc" + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * queryMRS() query department list * @param {Object} param { * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryMRS = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryMRS": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryMRS": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryMRS: User not logged."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/mrsnodes" + "?reqId=" + tabPageId; var ajaxCfg = { "type": "GET", "url": url, "async": true, "data": null, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * query ralationship of GBID and ISDN * @param {Object} param { * "callback": , * } */ ICPSDK_Dispatch_Query.prototype.queryDeviceIDRelationship = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; param.reqId = tabPageId; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryDeviceIDRelationship": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "queryDeviceIDRelationship": "callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "queryDeviceIDRelationship: User not logged."; param["callback"](result); return; } result["rsp"] = "-2"; if (undefined == param["Type"] || ('0' != param["Type"] && '2' != param["Type"] && '1' != param["Type"])) { result["desc"] = " queryDeviceIDRelationship: Type is invalid."; param["callback"](result); return; } if (!cloudICP.util.checkIdList(param["IDList"]) && '0' == param["Type"]) { result["desc"] = " queryDeviceIDRelationship: IDList is invalid."; param["callback"](result); return; } if (param["Method"] != 'async' && param["Method"] != 'sync' && param["Method"] != '') { result["desc"] = " queryDeviceIDRelationship: Method is invalid."; param["callback"](result); return; } if (undefined == param["OffSet"] && '2' == param["Type"]) { param["OffSet"] = "0"; } else if (!(cloudICP.util.isNumber(param["OffSet"])) && '2' == param["Type"]) { result["desc"] += " queryDeviceIDRelationship: OffSet is error or null."; param["callback"](result); return; } else if ('2' == param["Type"]) { var iLimit = parseInt(param["OffSet"]); if (0 > iLimit || 1000000 < iLimit) { result["desc"] += " queryDeviceIDRelationship: OffSet not in [1,1000]."; param["callback"](result); return; } } if (undefined == param["Limit"] && '2' == param["Type"]) { param["Limit"] = "10000"; } else if (!(cloudICP.util.isNumber(param["Limit"])) && '2' == param["Type"]) { result["desc"] += " queryDeviceIDRelationship: Limit is error or null."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/querylist/" + cloudICP.userInfo["isdn"] + "/deviceidelationship"; var ajaxCfg = { "type": "POST", "url": url, "async": true, "data": param, "callback": function(data) { data["desc"] += result["desc"]; param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } dateStrIsValid = function(dateStr) { var regStr = "^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)" +"|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579]" +"[26])00)-02-29)\\s+([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$"; return new RegExp(regStr).test(dateStr); }; function ICPSDK_Dispatch_Sms() { this.MAX_MESSAGE_CONTENT = 10000; this.MAX_DEST_COUNT = 200; this.lastSendTime = 0; }; /** * sendDispSMS() send short message * @param {Object} param { * "dest": , * "content": , * "callback": , * } */ ICPSDK_Dispatch_Sms.prototype.sendDispSMS = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "sendDispSMS": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "sendDispSMS": "callback is not a function" }); return; } var sendDispSMSParam = {}; var result = { "rsp": "-3", "desc": "" }; var oldTime = this.lastSendTime; this.lastSendTime = new Date().getTime(); if (this.lastSendTime - oldTime <= 1000) { result["rsp"] = "-4"; result["desc"] = "sendDispSMS: The interval of sending message should be larger than 1 second."; param["callback"](result); return; } if (!cloudICP.userInfo["isdn"]) { result["desc"] = "sendDispSMS: User not logged."; param["callback"](result); return; } if (!param["content"]) { result["rsp"] = "-2"; result["desc"] = "sendDispSMS: content is invalid."; param["callback"](result); return; } else { var clength = 0; for (var index = 0; index < param["content"].length; index++) { if (encodeURI(param["content"][index]).length > 1) { clength += 3; } else { clength += 1; } } if (clength > this.MAX_MESSAGE_CONTENT) { result["rsp"] = "-2"; result["desc"] = "sendDispSMS: content is invalid."; param["callback"](result); return; } } if ((!param["dest"]) || cloudICP.util.includes(param["dest"], " ") || !(/^(([1-9]+[0-9]*)+;)*(([1-9]+[0-9]*)+)$/ .test(param["dest"]))) { result["rsp"] = "-2"; result["desc"] = "sendDispSMS: dest is invalid."; param["callback"](result); return; } if (param["dest"].split(";").length > this.MAX_DEST_COUNT) { result["rsp"] = "-2"; result["desc"] = "sendDispSMS: dest is invalid."; param["callback"](result); return; } sendDispSMSParam["param"] = {}; sendDispSMSParam["param"]["msgid"] = ""; sendDispSMSParam["param"]["content"] = param["content"]; sendDispSMSParam["param"]["dest"] = param["dest"]; sendDispSMSParam["param"]["locationshare"] = param["locationshare"]; if (undefined != param["msgid"]) { sendDispSMSParam["param"]["msgid"] = param["msgid"]; } var url = cloudICP.getSdkServerUrl() + "/v1/sds/" + cloudICP.userInfo["isdn"] + "/sms"; sendDispSMSParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "async": false, "data": sendDispSMSParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * sendDispMMS() send multi media message * @param {Object} param { * "dest": [ * { * "isdn": "", * "msgid": "", * } * ], * "content": , * "attach": , * "callback": , * } */ ICPSDK_Dispatch_Sms.prototype.sendDispMMS = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "sendDispMMS": "param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "sendDispMMS": "callback is not a function" }); return; } var sendDispMMSParam = {}; var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "sendDispMMS: User not logged."; param["callback"](result); return; } if (!(param["dest"] && Array.isArray(param["dest"])) || param["dest"].length >= this.MAX_DEST_COUNT || param[ "dest"].length <= 0) { result["rsp"] = "-2"; result["desc"] = "sendDispMMS: dest is invalid"; param["callback"](result); return; } var dests = param["dest"]; for (var item = 0; item < dests.length; item++) { if (!cloudICP.util.isNumber(dests[item]["msgid"])) { result["rsp"] = "-2"; result["desc"] = "sendDispMMS: msgid is invalid"; param["callback"](result); return; } } if (undefined != param["audioinfo"]) { if (!cloudICP.util.isNumber(param["audioinfo"])) { result["rsp"] = "-2"; result["desc"] = "sendDispMMS: audioinfo is invalid"; param["callback"](result); return; } else if ("" == param["audiocontent"]) { result["rsp"] = "-2"; result["desc"] = "sendDispMMS: audioinfo is valid, audiocontent is invalid"; param["callback"](result); return; } } if (undefined != param["audiocontent"]) { if ("" == param["audiocontent"]) { result["rsp"] = "-2"; result["desc"] = "sendDispMMS: audiocontent is invalid"; param["callback"](result); return; } else if (!param["audiocontent"]) { result["rsp"] = "-2"; result["desc"] = "sendDispMMS: audiocontent is valid, audioinfo is invalid"; param["callback"](result); return; } } sendDispMMSParam["param"] = {}; sendDispMMSParam["param"]["msgid"] = ""; sendDispMMSParam["param"]["dest"] = ""; if (undefined !=param["attach"]) { sendDispMMSParam["param"]["attach"] = param["attach"]; } if (undefined !=param["attach_thumb"]) { sendDispMMSParam["param"]["attach_thumb"] = param["attach_thumb"]; } if (undefined !=param["original_image"]) { sendDispMMSParam["param"]["original_image"] = param["original_image"]; } var length = param["dest"].length; for (var i = 0; i < length; i++) { var user = param["dest"][i]; if (!cloudICP.util.checkIsdn(user["isdn"])) { result["rsp"] = "-2"; result["desc"] = "sendDispMMS: isdn is invalid"; param["callback"](result); return; } if (user["msgid"] == undefined || !user["msgid"]) { result["rsp"] = "-2"; result["desc"] = "sendDispMMS: msgid is invalid"; param["callback"](result); return; } if (i == length - 1) { sendDispMMSParam["param"]["msgid"] += user["msgid"]; sendDispMMSParam["param"]["dest"] += user["isdn"]; } else { sendDispMMSParam["param"]["msgid"] += user["msgid"] + ";"; sendDispMMSParam["param"]["dest"] += user["isdn"] + ";"; } } if (param["audiocontent"] || param["audioinfo"]) { if (param["audiocontent"] && param["audioinfo"]) { sendDispMMSParam["param"]["audiocontent"] = param["audiocontent"]; sendDispMMSParam["param"]["audioinfo"] = param["audioinfo"]; } else { result["rsp"] = "-2"; result["desc"] = "sendDispMMS: audio msg must has audiocontent and audioinfo"; param["callback"](result); return; } } var url = cloudICP.getSdkServerUrl() + "/v1/sds/" + cloudICP.userInfo["isdn"] + "/mms"; sendDispMMSParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "async": false, "data": sendDispMMSParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; function ICPSDK_Dispatch_Video() { this.MAX_DISPATCH_LIST = 100; this.MAX_VIDEO_ABILITY = 50; // 当前视频能力,目前默认最大支持50单位的视频能力。 this.currentVideoAbility = 0; this.MAX_VIDEO_DIAL_NUM = 1; }; /** * monitorVideo * @param {Object} param { * to: , * monitorParam: { * fmt: , * mute: , * confirm: , * camera: , * videooffer: , * } * callback: , * } */ ICPSDK_Dispatch_Video.prototype.monitorVideo = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } cloudICP.util.log(tabPageId, { "logLevel": "INFO", "logMsg": "monitorVideo entry" }); if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "monitorVideo: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "monitorVideo: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "monitorVideo: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["to"])) { result["desc"] = "monitorVideo: The to is invalid"; param["callback"](result); return; } if (!param["monitorParam"]) { result["desc"] = "monitorVideo: The monitorParam is invalid"; param["callback"](result); return; } if (!param["monitorParam"]["fmt"]) { param["monitorParam"]["fmt"] = "4K"; } var fmts = ["4K", "2K", "1080P", "720P", "D1", "CIF", "QCIF", "GCIF"]; if (!param["monitorParam"]["fmt"] || !cloudICP.util.includes(fmts, param["monitorParam"]["fmt"])) { result["desc"] = "monitorVideo: The fmt is invalid"; param["callback"](result); return; } var mutes = ["0", "1"]; if (!param["monitorParam"]["mute"] || !cloudICP.util.includes(mutes, param["monitorParam"]["mute"])) { result["desc"] = "monitorVideo: The mute is invalid"; param["callback"](result); return; } var confirms = ["0", "1"]; if (!param["monitorParam"]["confirm"] || !cloudICP.util.includes(confirms, param["monitorParam"]["confirm"])) { result["desc"] = "monitorVideo: The confirm is invalid"; param["callback"](result); return; } var cameras = ["0", "1", "2"]; if (!param["monitorParam"]["camera"] || !cloudICP.util.includes(cameras, param["monitorParam"]["camera"])) { result["desc"] = "monitorVideo: The camera is invalid"; param["callback"](result); return; } var strWindowinfo = {}; if (undefined !=param["monitorParam"]) { strWindowinfo["fmt"] = param["monitorParam"]["fmt"]; strWindowinfo["mute"] = param["monitorParam"]["mute"]; strWindowinfo["confirm"] = param["monitorParam"]["confirm"]; strWindowinfo["camera"] = param["monitorParam"]["camera"]; strWindowinfo["videooffer"] = param["monitorParam"]["mode"]; strWindowinfo["mode"] = param["monitorParam"]["mode"]; strWindowinfo["showToolbar"] = param["monitorParam"]["showToolbar"]; strWindowinfo["buttonIDs"] = param["monitorParam"]["buttonIDs"]; strWindowinfo["posX"] = param["monitorParam"]["posX"]; strWindowinfo["posY"] = param["monitorParam"]["posY"]; strWindowinfo["width"] = param["monitorParam"]["width"]; strWindowinfo["height"] = param["monitorParam"]["height"]; strWindowinfo["hide"] = param["monitorParam"]["hide"]; strWindowinfo["enableDrag"] = param["monitorParam"]["enableDrag"]; strWindowinfo["videoResizeMode"] = param["monitorParam"]["videoResizeMode"]; } if (undefined == param["monitorParam"]["mode"] || !cloudICP.util.checkmode(param["monitorParam"]["mode"])) { result["desc"] += "monitorVideo: The mode is invalid, use defult value " + cloudICP.config["mode"] + "; "; strWindowinfo["mode"] = cloudICP.config["mode"]; } if ("wssflow" == strWindowinfo["mode"]) { //推流模式 if (undefined == param["monitorParam"]["width"] || !cloudICP.util.isNumber(param["monitorParam"][ "width" ]) || param["monitorParam"]["width"] > 2147483647 || param["monitorParam"]["width"] < 0) { result["desc"] = "monitorVideo: The width is invalid."; param["callback"](result); return; } if (undefined == param["monitorParam"]["height"] || !cloudICP.util.isNumber(param["monitorParam"][ "height" ]) || param["monitorParam"]["height"] > 2147483647 || param["monitorParam"]["height"] < 0) { result["desc"] = "monitorVideo: The height is invalid."; param["callback"](result); return; } delete strWindowinfo["userWindowId"]; } else if ("window" == strWindowinfo["mode"]) { //弹窗模式 if (!cloudICP.util.checkWindowParam(param["monitorParam"]["posX"])) { result["desc"] += "monitorVideo: The posX is invalid, use defult value 400; "; strWindowinfo["posX"] = 400; } if (!cloudICP.util.checkWindowParam(param["monitorParam"]["posY"])) { result["desc"] += "monitorVideo: The posY is invalid, use defult value 400; "; strWindowinfo["posY"] = 400; } if (!cloudICP.util.checkWindowParam(param["monitorParam"]["width"])) { result["desc"] += "monitorVideo: The width is invalid, use defult value 640; "; strWindowinfo["width"] = 640; } if (!cloudICP.util.checkWindowParam(param["monitorParam"]["height"])) { result["desc"] += "monitorVideo: The height is invalid, use defult value 480; "; strWindowinfo["height"] = 480; } if (undefined == param["monitorParam"]["showToolbar"] || !cloudICP.util.checkshowToolbar(param[ "monitorParam"]["showToolbar"])) { result["desc"] += "monitorVideo: The showToolbar is invalid, use defult value 1; "; strWindowinfo["showToolbar"] = 1; } if (undefined == param["monitorParam"]["buttonIDs"] || !cloudICP.util.checkbuttonIDs(param["monitorParam"][ "buttonIDs" ])) { result["desc"] += "monitorVideo: The buttonIDs is invalid, use defult value 0; "; strWindowinfo["buttonIDs"] = 0; } if (undefined == param["monitorParam"]["hide"]) { result["desc"] += "monitorVideo: The hide is invalid, use defult value false; "; strWindowinfo["hide"] = false; } if (undefined == param["monitorParam"]["enableDrag"]) { result["desc"] += "monitorVideo: The enableDrag is invalid, use defult value true; "; strWindowinfo["enableDrag"] = true; } if (undefined != param["monitorParam"]["userWindowId"]) { //检测userWindowId是否被占用、值是否有效 var iResult = cloudICP.util.checkUserWindowId(param["monitorParam"]["userWindowId"], "use"); if (0 == iResult) { result["desc"] = "monitorVideo: The userWindowId is invalid."; param["callback"](result); return; } else if (2 == iResult) { result["desc"] = "monitorVideo: The userWindowId not create window or used in other video operate."; param["callback"](result); return; } } } else { result["desc"] = "monitorVideo: The mode is invalid."; param["callback"](result); return; } //监控相同摄像头的视频流 不支持用户窗口 var jsonMediaValue = { "value": "" }; var videoResizeMode = cloudICP.config["videoResizeMode"]; if (cloudICP.util.createNewCopyMonitor(cloudICP.userInfo["isdn"], param["to"], jsonMediaValue)) { if ("" == jsonMediaValue["value"]) { result["desc"] = "monitorVideo: The " + param["to"] + " is not get video stream, please wait a minute."; result["rsp"] = "-5"; param["callback"](result); return; } var repeatsId = jsonMediaValue["value"]["cid"]; var monitorRepeatsCid = cloudICP.util.getMonitorRepeatsCid(); if (undefined == cloudICP.util.callStatusMgr.videoMediaInfoBuf[monitorRepeatsCid.toString()]) { cloudICP.util.callStatusMgr.videoMediaInfoBuf[monitorRepeatsCid.toString()] = {}; } if (undefined != strWindowinfo["videoResizeMode"]) { videoResizeMode = strWindowinfo["videoResizeMode"]; } cloudICP.util.callStatusMgr.videoMediaInfoBuf[monitorRepeatsCid.toString()]["value"] = jsonMediaValue["value"]; cloudICP.util.callStatusMgr.videoMediaInfoBuf[monitorRepeatsCid.toString()]["value"]["videoResizeMode"] = videoResizeMode; cloudICP.util.callStatusMgr.videoMediaInfoBuf[monitorRepeatsCid.toString()]["value"]["cid"] = monitorRepeatsCid; cloudICP.util.callStatusMgr.videoMediaInfoBuf[monitorRepeatsCid.toString()]["value"]["tabPageId"] = tabPageId; cloudICP.util.callStatusMgr.videoMediaInfoBuf[monitorRepeatsCid.toString()]["value"]["repeatsMonitor"] = true; cloudICP.util.callStatusMgr.videoMediaInfoBuf[monitorRepeatsCid.toString()]["value"]["createId"] = repeatsId; // 创建流监控cid cloudICP.util.callStatusMgr.videoMediaInfoBuf[monitorRepeatsCid.toString()]["value"]["releaseTag"] = false; // 创建流监控是否释放 cloudICP.util.callStatusMgr.videoMediaInfoBuf[monitorRepeatsCid.toString()]["value"]["winMode"] = strWindowinfo["mode"]; cloudICP.util.callStatusMgr.videoMediaInfoBuf[monitorRepeatsCid.toString()]["value"]["posX"] = strWindowinfo["posX"]; cloudICP.util.callStatusMgr.videoMediaInfoBuf[monitorRepeatsCid.toString()]["value"]["posY"] = strWindowinfo["posY"]; cloudICP.util.callStatusMgr.videoMediaInfoBuf[monitorRepeatsCid.toString()]["value"]["width"] = strWindowinfo["width"]; cloudICP.util.callStatusMgr.videoMediaInfoBuf[monitorRepeatsCid.toString()]["value"]["height"] = strWindowinfo["height"]; cloudICP.util.callStatusMgr.videoMediaInfoBuf[monitorRepeatsCid.toString()]["value"]["buttonIDs"] = strWindowinfo["buttonIDs"]; cloudICP.util.callStatusMgr.videoMediaInfoBuf[monitorRepeatsCid.toString()]["value"]["showToolbar"] = strWindowinfo["showToolbar"]; cloudICP.util.callStatusMgr.videoMediaInfoBuf[monitorRepeatsCid.toString()]["value"]["enableDrag"] = strWindowinfo["enableDrag"]; cloudICP.util.callStatusMgr.videoMediaInfoBuf[monitorRepeatsCid.toString()]["value"]["hide"] = strWindowinfo["hide"]; cloudICP.util.callStatusMgr.videoMediaInfoBuf[monitorRepeatsCid.toString()]["value"]["repeats"] = true; var params; if (undefined != param["monitorParam"]["userWindowId"]) { params = "{\"description\":\"msp_create_video_window\", \"cmd\": 196610, \"param\":{\"resID\":{0}, \"windowName\": \"{1}\", \"mode\": \"{2}\", \"width\": {3}, \"height\": {4}, \"x\": {5}, \"y\":{6}, \"hide\": {7}, \"enableDrag\":{8}, \"scrollX\": {9}, \"scrollY\":{10}, \"showToolbar\": {11}, \"buttonIDs\": {12}, \"userWindowId\": {13}, \"repeatsMonitor\": {14}, \"videoResizeMode\": {15}, \"createId\": {16} }}" .format( monitorRepeatsCid, monitorRepeatsCid, strWindowinfo["mode"], strWindowinfo["width"], strWindowinfo["height"], strWindowinfo["posX"], strWindowinfo["posY"], strWindowinfo["hide"], strWindowinfo["enableDrag"], 0, 0, strWindowinfo["showToolbar"], strWindowinfo["buttonIDs"], param["monitorParam"]["userWindowId"], true, videoResizeMode, repeatsId ); } else if (strWindowinfo["mode"] != 'wssflow') { params = "{\"description\":\"msp_create_video_window\", \"cmd\": 196610, \"param\":{\"resID\":{0}, \"windowName\": \"{1}\", \"mode\": \"{2}\", \"width\": {3}, \"height\": {4}, \"x\": {5}, \"y\":{6}, \"hide\": {7}, \"enableDrag\":{8}, \"scrollX\": {9}, \"scrollY\":{10}, \"showToolbar\": {11}, \"buttonIDs\": {12}, \"repeatsMonitor\": {13}, \"reqId\": \"{14}\", \"videoResizeMode\": {16}, \"createId\": {17} }, \"reqId\": \"{15}\" }" .format( monitorRepeatsCid, monitorRepeatsCid, strWindowinfo["mode"], strWindowinfo["width"], strWindowinfo["height"], strWindowinfo["posX"], strWindowinfo["posY"], strWindowinfo["hide"], strWindowinfo["enableDrag"], 0, 0, strWindowinfo["showToolbar"], strWindowinfo["buttonIDs"], true, tabPageId, tabPageId, videoResizeMode, repeatsId ); } else { // 内嵌模式重复视频监控 params = "{\"description\":\"msp_create_video_window\", \"cmd\": 196610, \"param\":{\"resID\":{0}, \"windowName\": \"{1}\", \"mode\": \"{2}\", \"width\": {3}, \"height\": {4}, \"repeatsMonitor\": {5} , \"reqId\": \"{6}\", \"videoResizeMode\": {8}, \"createId\": {9} }, \"reqId\": \"{7}\" }" .format( monitorRepeatsCid, monitorRepeatsCid, strWindowinfo["mode"], strWindowinfo["width"], strWindowinfo["height"], true, tabPageId, tabPageId, videoResizeMode, repeatsId ); } cloudICP.dispatch.webSocket.sendDataToMediaSDK(params, true); result["desc"] = "monitorVideo: the same camera success."; result["rsp"] = "0"; param["callback"](result); return; } else if ("" != jsonMediaValue["value"]) { result["desc"] = "monitorVideo: The object(" + param["to"] + ") is exist three monitor, can't monitor again."; result["rsp"] = "-5"; param["callback"](result); return; } if (cloudICP.dispatch.video.currentVideoAbility >= cloudICP.dispatch.video.MAX_VIDEO_ABILITY) { result["rsp"] = "-5"; result["desc"] = "monitorVideo: The ability of monitorVideo is limited"; param["callback"](result); return; } var videoOffers = ["0", "1", "2", "3"]; if (param["monitorParam"]["videooffer"]) { if(!cloudICP.util.includes(videoOffers, param["monitorParam"]["videooffer"])) { result["desc"] = "monitorVideo: The videooffer is invalid"; param["callback"](result); return; } } else { param["monitorParam"]["videooffer"] = "2"; } var requestParam = { "opt": "monitor", "to": param["to"], "param": { "fmt": param["monitorParam"]["fmt"], "mute": param["monitorParam"]["mute"], "confirm": param["monitorParam"]["confirm"], "camera": param["monitorParam"]["camera"], "videooffer": param["monitorParam"]["videooffer"] } }; var url = cloudICP.getSdkServerUrl() + "/v1/video/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "PUT", "url": url, "data": requestParam, "callback": function(data) { if (undefined != data["rsp"] && "0" == data["rsp"].toString()) { cloudICP.util.callStatusMgr.windowInfos[param["to"]] = strWindowinfo; if (undefined != param["monitorParam"]["userWindowId"] && undefined != cloudICP.util .callStatusMgr.videoMediaInfoBuf[param["monitorParam"]["userWindowId"].toString()]) { cloudICP.util.callStatusMgr.videoMediaInfoBuf[param["monitorParam"]["userWindowId"] .toString()]["value"]["to"] = parseInt(param["to"]); } } param["callback"](data) } } cloudICP.util.log(tabPageId, { "logLevel": "INFO", "logMsg": requestParam }); cloudICP.util.ajax(ajaxCfg); } /** * dialVideo * @param {Object} param { * to: , * dialVideoParam: { * fmt: , * } * callback: , * } */ ICPSDK_Dispatch_Video.prototype.dialVideo = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "dialVideo: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "dialVideo: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "dialVideo: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["to"])) { result["desc"] = "dialVideo: The to is invalid"; param["callback"](result); return; } if (!param["dialVideoParam"]) { result["desc"] = "dialVideo: The dialVideoParam is invalid"; param["callback"](result); return; } if (!param["dialVideoParam"]["fmt"]) { param["dialVideoParam"]["fmt"] = cloudICP.util.getDefaultFmt(); } var fmts = ["4K", "2K", "1080P", "720P", "D1", "CIF", "QCIF", "GCIF"]; if (!param["dialVideoParam"]["fmt"] || !cloudICP.util.includes(fmts, param["dialVideoParam"]["fmt"])) { result["desc"] = "dialVideo: The fmt is invalid"; param["callback"](result); return; } if (cloudICP.config.cameraInfo == 0) { result["rsp"] = "-6"; result["desc"] = "dialVideo: The camera is unavailable." param["callback"](result); return; } // if (!cloudICP.util.checkFmt(param["dialVideoParam"]["fmt"])) { // result["rsp"] = "-5"; // result["desc"] = "dialVideo: The fmt is not supported by the camera."; // param["callback"](result); // return; // } if (cloudICP.util.callStatusMgr.currentCallState == cloudICP.util.callStatusMgr.RINGING) { result["rsp"] = "-4"; result["desc"] = "dialVideo: There is a call is ringing." param["callback"](result); return; } var strWindowinfo = {}; if (undefined != param["dialVideoParam"]) { strWindowinfo["fmt"] = param["dialVideoParam"]["fmt"]; strWindowinfo["mode"] = param["dialVideoParam"]["mode"]; strWindowinfo["showToolbar"] = param["dialVideoParam"]["showToolbar"]; strWindowinfo["buttonIDs"] = param["dialVideoParam"]["buttonIDs"]; strWindowinfo["posX"] = param["dialVideoParam"]["posX"]; strWindowinfo["posY"] = param["dialVideoParam"]["posY"]; strWindowinfo["width"] = param["dialVideoParam"]["width"]; strWindowinfo["height"] = param["dialVideoParam"]["height"]; strWindowinfo["videoResizeMode"] = param["dialVideoParam"]["videoResizeMode"]; } if (undefined == param["dialVideoParam"]["mode"] || !cloudICP.util.checkmode(param["dialVideoParam"]["mode"])) { cloudICP.util.log(tabPageId, { "logLevel": "info", "logMsg": "dialVideo: The mode is invalid, use defult value " + cloudICP.config["mode"] }); strWindowinfo["mode"] = cloudICP.config["mode"]; } if ("wssflow" == strWindowinfo["mode"]) { //推流模式 if (undefined == param["dialVideoParam"]["width"] || !cloudICP.util.isNumber(param["dialVideoParam"][ "width" ]) || param["dialVideoParam"]["width"] > 2147483647 || param["dialVideoParam"]["width"] < 0) { result["desc"] = "dialVideo: The width is invalid."; param["callback"](result); return; } if (undefined == param["dialVideoParam"]["height"] || !cloudICP.util.isNumber(param["dialVideoParam"][ "height" ]) || param["dialVideoParam"]["height"] > 2147483647 || param["dialVideoParam"]["height"] < 0) { result["desc"] = "dialVideo: The height is invalid."; param["callback"](result); return; } } else if ("window" == strWindowinfo["mode"]) { //弹窗模式 if (!cloudICP.util.checkWindowParam(param["dialVideoParam"]["posX"])) { result["desc"] += "dialVideo: The posX is invalid, use defult value 400; "; strWindowinfo["posX"] = 400; } if (!cloudICP.util.checkWindowParam(param["dialVideoParam"]["posY"])) { result["desc"] += "dialVideo: The posY is invalid, use defult value 400; "; strWindowinfo["posY"] = 400; } if (!cloudICP.util.checkWindowParam(param["dialVideoParam"]["width"])) { result["desc"] += "dialVideo: The width is invalid, use defult value 640; "; strWindowinfo["width"] = 640; } if (!cloudICP.util.checkWindowParam(param["dialVideoParam"]["height"])) { result["desc"] += "dialVideo: The height is invalid, use defult value 480; "; strWindowinfo["height"] = 480; } if (undefined == param["dialVideoParam"]["showToolbar"] || !cloudICP.util.checkshowToolbar(param[ "dialVideoParam"]["showToolbar"])) { result["desc"] += "dialVideo: The showToolbar is invalid, use defult value 1; "; strWindowinfo["showToolbar"] = 1; } if (undefined == param["dialVideoParam"]["buttonIDs"] || !cloudICP.util.checkbuttonIDs(param[ "dialVideoParam"]["buttonIDs"])) { result["desc"] += "dialVideo: The buttonIDs is invalid, use defult value 0; "; strWindowinfo["buttonIDs"] = 0; } } else { result["desc"] = "dialVideo: The mode is invalid."; param["callback"](result); return; } var callStatusMgr = cloudICP.util.callStatusMgr; //strWindowinfo["to"] = param["to"]; if (callStatusMgr.numberOfCall[callStatusMgr.VIDEO] + callStatusMgr.numberOfCall[callStatusMgr.VIDEOCONF] >= cloudICP.dispatch.video.MAX_VIDEO_DIAL_NUM || cloudICP.dispatch.video.currentVideoAbility >= cloudICP.dispatch.video.MAX_VIDEO_ABILITY) { result["rsp"] = "-7"; result["desc"] = "dialVideo: The ability of video call is limited"; param["callback"](result); return; } if (callStatusMgr.isAnyCallExisted()) { result["rsp"] = "-8"; result["desc"] = "dialVideo: The voice dial is conflicted with other calls"; param["callback"](result); return; } callStatusMgr.windowInfos[param["to"]] = strWindowinfo; var requestParam = { "opt": "dial", "to": param["to"], "param": { "fmt": param["dialVideoParam"]["fmt"], "video_format": cloudICP.config.cameraInfo.toString(), "audio_format": "1" } }; var url = cloudICP.getSdkServerUrl() + "/v1/video/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "PUT", "url": url, "data": requestParam, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); } /** * answer * @param {Object} param { * cid: , * windowInfo: { * width: * height: * posX: * posY: * } * callback: , * } */ ICPSDK_Dispatch_Video.prototype.answer = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "answer: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "answer: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "answer: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "answer: The cid is invalid"; param["callback"](result); return; } var strWindowinfo = {}; if (param["windowInfo"] == undefined || undefined == param["windowInfo"]["mode"] || !cloudICP.util.checkmode(param["windowInfo"]["mode"])) { cloudICP.util.log(tabPageId, { "logLevel": "info", "logMsg": "answer: The mode is invalid, use defult value " + cloudICP.config["mode"] }); strWindowinfo["mode"] = cloudICP.config["mode"]; } if (param["windowInfo"] != undefined) { strWindowinfo["mode"] = param["windowInfo"]["mode"]; strWindowinfo["showToolbar"] = param["windowInfo"]["showToolbar"]; strWindowinfo["buttonIDs"] = param["windowInfo"]["buttonIDs"]; strWindowinfo["posX"] = param["windowInfo"]["posX"]; strWindowinfo["posY"] = param["windowInfo"]["posY"]; strWindowinfo["width"] = param["windowInfo"]["width"]; strWindowinfo["height"] = param["windowInfo"]["height"]; strWindowinfo["videoResizeMode"] = param["windowInfo"]["videoResizeMode"]; if ("wssflow" == strWindowinfo["mode"]) { //推流模式 if (undefined == param["windowInfo"]["width"] || !cloudICP.util.isNumber(param["windowInfo"][ "width" ]) || param["windowInfo"]["width"] > 2147483647 || param["windowInfo"]["width"] < 0) { result["desc"] = "answer: The width is invalid."; param["callback"](result); return; } if (undefined == param["windowInfo"]["height"] || !cloudICP.util.isNumber(param["windowInfo"][ "height" ]) || param["windowInfo"]["height"] > 2147483647 || param["windowInfo"]["height"] < 0) { result["desc"] = "answer: The height is invalid."; param["callback"](result); return; } } else if ("window" == strWindowinfo["mode"]) { //弹窗模式 if (!cloudICP.util.checkWindowParam(param["windowInfo"]["posX"])) { result["desc"] += "answer: The posX is invalid, use defult value 400; "; strWindowinfo["posX"] = 400; } if (!cloudICP.util.checkWindowParam(param["windowInfo"]["posY"])) { result["desc"] += "answer: The posY is invalid, use defult value 400; "; strWindowinfo["posY"] = 400; } if (!cloudICP.util.checkWindowParam(param["windowInfo"]["width"])) { result["desc"] += "answer: The width is invalid, use defult value 640; "; strWindowinfo["width"] = 640; } if (!cloudICP.util.checkWindowParam(param["windowInfo"]["height"])) { result["desc"] += "answer: The height is invalid, use defult value 480; "; strWindowinfo["height"] = 480; } if (undefined == param["windowInfo"]["showToolbar"] || !cloudICP.util.checkshowToolbar(param[ "windowInfo"]["showToolbar"])) { result["desc"] += "answer: The showToolbar is invalid, use defult value 1; "; strWindowinfo["showToolbar"] = 1; } if (undefined == param["windowInfo"]["buttonIDs"] || !cloudICP.util.checkbuttonIDs(param["windowInfo"][ "buttonIDs" ])) { result["desc"] += "answer: The buttonIDs is invalid, use defult value 0; "; strWindowinfo["buttonIDs"] = 0; } } else { result["desc"] = "answer: The mode is invalid."; param["callback"](result); return; } strWindowinfo["iCid"] = param["cid"]; } else { strWindowinfo["showToolbar"] = 1; strWindowinfo["buttonIDs"] = 0; strWindowinfo["iCid"] = param["cid"]; strWindowinfo["width"] = 640; strWindowinfo["height"] = 480; } var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.windowInfos[param["cid"]] = strWindowinfo; var calls = cloudICP.util.callStatusMgr.allCalls; if (calls[param["cid"]] && calls[param["cid"]]["callState"] >= cloudICP.util.callStatusMgr.CONNECTING) { var str; if (calls[param["cid"]]["callState"] == cloudICP.util.callStatusMgr.CONNECTING) { str = "answer: The cid is answered"; } else if (calls[param["cid"]]["callState"] == cloudICP.util.callStatusMgr.HOLD) { str = "answer: The cid is holded"; } else if (calls[param["cid"]]["callState"] == cloudICP.util.callStatusMgr.RELEASE) { str = "answer: The cid is ended"; } else { str = "answer: The cid is invalid"; } result["rsp"] = "-4"; result["desc"] = str; param["callback"](result); return; } var call = calls[param["cid"]]; if (call && call["callType"] == cloudICP.util.callStatusMgr.VIDEODISPATCH) { // current do nothing } else { if (cloudICP.config.cameraInfo == 0) { result["rsp"] = "-5"; result["desc"] = "answer: The camera is unavailable." param["callback"](result); return; }; var callStatusMgr = cloudICP.util.callStatusMgr; if (callStatusMgr.connectingCallMgr[callStatusMgr.VIDEO].length != 0 || callStatusMgr.connectingCallMgr[callStatusMgr.DISCREET].length != 0 || callStatusMgr.connectingCallMgr[callStatusMgr.HALFVOICE].length != 0 || callStatusMgr.connectingCallMgr[callStatusMgr.VIDEOCONF].length != 0) { result["rsp"] = "-6"; result["desc"] = "answer: The call is conflicted with other calls" param["callback"](result); return; }; } var callStatusMgr = cloudICP.util.callStatusMgr; if (cloudICP.dispatch.video.currentVideoAbility >= cloudICP.dispatch.video.MAX_VIDEO_ABILITY) { result["rsp"] = "-7"; result["desc"] = "answer: The ability of video is limited"; param["callback"](result); return; } var requestParam = { "opt": "recv", "cid": param["cid"], "param": { "video_format": cloudICP.config.cameraInfo.toString(), "audio_format": "1" } }; var url = cloudICP.getSdkServerUrl() + "/v1/video/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); } /** * reject * @param {Object} param { * cid: * callback: , * } */ ICPSDK_Dispatch_Video.prototype.reject = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "reject: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "reject: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "reject: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "reject: The cid is invalid"; param["callback"](result); return; } var calls = cloudICP.util.callStatusMgr.allCalls; if (calls[param["cid"]] && calls[param["cid"]]["callState"] >= cloudICP.util.callStatusMgr.CONNECTING) { var str; if (calls[param["cid"]]["callState"] == cloudICP.util.callStatusMgr.CONNECTING) { str = "reject: The cid is answered"; } else if (calls[param["cid"]]["callState"] == cloudICP.util.callStatusMgr.HOLD) { str = "reject: The cid is holded"; } else if (calls[param["cid"]]["callState"] == cloudICP.util.callStatusMgr.RELEASE) { str = "reject: The cid is ended"; } else { str = "reject: The cid is invalid"; } result["rsp"] = "-4"; result["desc"] = str; param["callback"](result); return; } var requestParam = { "opt": "reject", "cid": param["cid"] }; var url = cloudICP.getSdkServerUrl() + "/v1/video/" + cloudICP.userInfo["isdn"]; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { if (data["rsp"] == "0") { // 停止振铃音 var mediaParam = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}}".format( parseInt(param["cid"]) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(mediaParam, true); var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.VIDEO, callStatusMgr.RELEASE, { "value": { "cid": param["cid"] } }); } param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * release * @param {Object} param { * cid: , * callback: , * } */ ICPSDK_Dispatch_Video.prototype.release = function(param) { cloudICP.util.callStatusMgr.delWssflowDemoMap(param["cid"]); cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "release: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "release: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "release: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "release: The cid is invalid"; param["callback"](result); return; } var cid = param["cid"]; var callee = 0; Object.keys(cloudICP.util.callStatusMgr.windowInfos).forEach(function(key) { if (undefined != cloudICP.util.callStatusMgr.windowInfos[key]["userWindowId"] && cloudICP.util .callStatusMgr.windowInfos[key]["userWindowId"] == param["cid"]) { callee = key; } }); if (0 != callee) { var bRuning = false; Object.keys(cloudICP.util.callStatusMgr.videoMediaInfoBuf).forEach(function(key) { if (undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"] && cloudICP.util .callStatusMgr.videoMediaInfoBuf[key]["value"]["userWindowId"] == param["cid"]) { bRuning = true; cid = key; } }); if (false == bRuning) { delete cloudICP.util.callStatusMgr.windowInfos[callee.toString()]; result["rsp"] = "-2"; result["desc"] = "release: The userWindowId(" + param["cid"] + ") is release."; param["callback"](result); return; } } var call = cloudICP.util.callStatusMgr.allCalls[cid]; if (call && call["caller"] != cloudICP.userInfo["isdn"] && call.callState == cloudICP.util.callStatusMgr .RINGING) { result["rsp"] = "-4"; result["desc"] = "release: The callee can't release a ringing call."; param["callback"](result); return; } var repeats; //判断监控对象是否被多次监控 var jsonMediaValue = { "value": "" }; var bExistRepeatsMonitor = false; var callee; if (undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]) { callee = cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]["value"]["callee"]; } if (!cloudICP.util.checkUserIsMonitor(cloudICP.userInfo["isdn"], callee, jsonMediaValue)) { if ("" != jsonMediaValue["value"]) { repeats = true; } } if (undefined != repeats && true == repeats && undefined == cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid][ "value" ]["repeats"]) { bExistRepeatsMonitor = true; } var createReleaseTag = true; //重复视频监控的业务需要释放 if (undefined != repeats && repeats == true) { var newEvent = { "eventName": "", "rsp": "3009", "value": {} } if (true == bExistRepeatsMonitor) { //首次监控该对象发起的业务结束,重复监控业务也要被关闭 var params = "{\"description\":\"msp_delete_video_channel\", \"cmd\": 65540, \"param\":{\"resID\":{0}}, \"reqId\": \"{1}\"}" .format( parseInt(cid), tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(params, true); //通知上层OnCallRelease消息 newEvent["value"]["caller"] = cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]["value"]["caller"]; newEvent["value"]["callee"] = cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]["value"]["callee"]; newEvent["value"]["cid"] = cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]["value"]["cid"]; newEvent["value"]["fmt"] = cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]["value"]["fmt"]; newEvent["value"]["calltype"] = "monitor"; newEvent["value"]["releasetype"] = "self"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "out"; newEvent["eventName"] = "OnCallRelease"; cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(tabPageId, cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); cloudICP.util.callStatusMgr.delMediaModeInfo(param); // 创建流被释放 cloudICP.util.updateCopyMonitorReleaseTag(cloudICP.userInfo["isdn"], callee); createReleaseTag = false; } else { //只关闭重复监控的业务 // 删除视频媒体通道 var params = "{\"description\":\"msp_delete_video_channel\", \"cmd\": 65540, \"param\":{\"resID\":{0}}, \"reqId\": \"{1}\"}" .format( parseInt(cid), tabPageId ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(params, true); //通知上层OnCallRelease消息 newEvent["value"]["caller"] = cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]["value"]["caller"]; newEvent["value"]["callee"] = cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]["value"]["callee"]; newEvent["value"]["cid"] = cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]["value"]["cid"]; newEvent["value"]["fmt"] = cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]["value"]["fmt"]; newEvent["value"]["calltype"] = "monitor"; newEvent["value"]["releasetype"] = "other"; newEvent["value"]["src"] = ""; newEvent["value"]["direction"] = "out"; newEvent["eventName"] = "OnCallRelease"; cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnCallRelease"].event = newEvent; sendEvent2Page(tabPageId, cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnCallRelease"]); cloudICP.util.callStatusMgr.delMediaModeInfo(param); var createId; if (undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]["value"]["createId"]) { createId = cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]["value"]["createId"]; } createReleaseTag = cloudICP.util.getCopyMonitorReleaseTag(newEvent["value"]["caller"], newEvent["value"]["callee"]); if (undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]) { //该视频窗口有业务正在使用 delete cloudICP.util.callStatusMgr.videoMediaInfoBuf[cid]; } result["rsp"] = "0"; result["desc"] = "release: repeats monitor success."; param["callback"](result); if (createReleaseTag) { // 原视频流已经被释放场景,将cid赋值为创建视频流id 走释放场景 cid = createId; } } } cloudICP.util.log(undefined, { "logLevel": "info", "logMsg": "bExistRepeatsMonitor: " + bExistRepeatsMonitor + " createReleaseTag: " + createReleaseTag + " cid: " + cid }); if (!bExistRepeatsMonitor && createReleaseTag) { if(undefined == repeats || false == repeats) { // 不存在复制流时 // 停止提示音 var stopRingParam = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}}".format( parseInt(cid) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(stopRingParam, true); } var requestParam = { "opt": "close", "cid": cid }; var url = cloudICP.getSdkServerUrl() + "/v1/video/" + cloudICP.userInfo["isdn"] + "/close/" + cid; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "DELETE", "url": url, "data": requestParam, "callback": function(data) { if (data["rsp"] == "1") { data["rsp"] = "0"; } param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } } /** * dispatchVideo * @param {Object} param { * src: , * fmt: , * dest: [ * {"isdn": ,} * ] * callback: , * } */ ICPSDK_Dispatch_Video.prototype.dispatchVideo = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "dispatchVideo: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "dispatchVideo: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "dispatchVideo: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["src"])) { result["desc"] = "dispatchVideo: The src is invalid"; param["callback"](result); return; } if (!param["fmt"]) { param["fmt"] = "720P"; } var fmts = ["1080P", "720P", "D1", "CIF", "NO"]; if (!param["fmt"] || !cloudICP.util.includes(fmts, param["fmt"])) { result["desc"] = "dispatchVideo: The fmt is invalid"; param["callback"](result); return; } if (param["dest"] != undefined) { for (var item = 0; item < param["dest"].length; item++) { if (!cloudICP.util.checkCallNumber(param["dest"][item]["isdn"])) { result["desc"] = "dispatchVideo: reslist is invalid"; param["callback"](result); return; } } } if (param["destGroups"] != undefined) { for (var item = 0; item < param["destGroups"].length; item++) { if (!cloudICP.util.checkCallNumber(param["destGroups"][item]["isdn"])) { result["desc"] = "dispatchVideo: destGroups is invalid"; param["callback"](result); return; } } } var requestParam = { "opt": "dispatch", "param": { "src": param["src"], "fmt": param["fmt"], "dest": param["dest"], "destGroups": param["destGroups"] } }; var url = cloudICP.getSdkServerUrl() + "/v1/video/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); } /** * cancelVideoDispatch * @param {Object} param { * src: , * dest: , * callback: , * } */ ICPSDK_Dispatch_Video.prototype.cancelVideoDispatch = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "cancelVideoDispatch: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "cancelVideoDispatch: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "cancelVideoDispatch: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["src"])) { result["desc"] = "cancelVideoDispatch: The src is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkIsdn(param["dest"]) && !cloudICP.util.checkIsdn(param["destGroup"])) { result["desc"] = "cancelVideoDispatch: The dest and destGroup is invalid"; param["callback"](result); return; } var requestParam = { "opt": "dispatchDelete", "param": { "src": param["src"], "dest": param["dest"], "destGroup": param["destGroup"] } }; var url = cloudICP.getSdkServerUrl() + "/v1/video/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); } /** * startVideoUploadWall * @param {Object} param { * src: , * channel: , * callback: , * } */ ICPSDK_Dispatch_Video.prototype.startVideoUploadWall = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "startVideoUploadWall: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "startVideoUploadWall: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "startVideoUploadWall: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["src"])) { result["desc"] = "startVideoUploadWall: The src is invalid"; param["callback"](result); return; } if (!param["channel"] || !cloudICP.util.isNumber(param["channel"])) { result["desc"] = "startVideoUploadWall: The channel is invalid"; param["callback"](result); return; } var requestParam = { "opt": "start", "param": { "src": param["src"], "channel": param["channel"] } }; var url = cloudICP.getSdkServerUrl() + "/v1/video/" + cloudICP.userInfo["isdn"] + "/videowall"; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); } /** * stopVideoUploadWall * @param {Object} param { * src: , * channel: , * callback: , * } */ ICPSDK_Dispatch_Video.prototype.stopVideoUploadWall = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "stopVideoUploadWall: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "stopVideoUploadWall: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "stopVideoUploadWall: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["src"])) { result["desc"] = "stopVideoUploadWall: The src is invalid"; param["callback"](result); return; } if (!param["channel"] || !cloudICP.util.isNumber(param["channel"])) { result["desc"] = "stopVideoUploadWall: The channel is invalid"; param["callback"](result); return; } var requestParam = { "opt": "stop", "param": { "src": param["src"], "channel": param["channel"] } }; var url = cloudICP.getSdkServerUrl() + "/v1/video/" + cloudICP.userInfo["isdn"] + "/videowall"; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); } /** * ptzctrlCamera * @param {Object} param { * to: , * act: , * value: , * callback: , * } */ ICPSDK_Dispatch_Video.prototype.ptzctrlCamera = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param == undefined || typeof param == 'undefined') { return; } if (typeof param["tabPageId"] != 'undefined' && param["tabPageId"] != undefined) { var param = param["value"]; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "ptzctrlCamera: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "ptzctrlCamera: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "ptzctrlCamera: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["to"])) { result["desc"] = "ptzctrlCamera: The to is invalid"; param["callback"](result); return; } if (!param["act"] || !cloudICP.util.isNumber(param["act"]) || parseInt(param["act"]) < 1 || parseInt(param[ "act"]) > 18) { result["desc"] = "ptzctrlCamera: The act is invalid"; param["callback"](result); return; } if (!param["value"] || !cloudICP.util.isNumber(param["value"]) || parseInt(param["value"]) < 1 || parseInt( param["value"]) > 10) { result["desc"] = "ptzctrlCamera: The value is invalid"; param["callback"](result); return; } var requestParam = { "to": param["to"], "param": { "act": param["act"], "value": param["value"] } }; var url = cloudICP.getSdkServerUrl() + "/v1/video/" + cloudICP.userInfo["isdn"] + "/ptzcontrol"; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); }; /** * setWssflowWinFmttype * @param {Object} param { * callback: , * } */ ICPSDK_Dispatch_Video.prototype.setWssflowWinFmttype = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } var msg = { "description": "msp_set_wssflow_window_fmttype", "cmd": 0x10014, "param": {} }; if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "setWssflowWinFmttype: param is invalid" }); return; } var result = { "rsp": "-3", "desc": "" }; result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["resID"].toString())) { result["desc"] = "setWssflowWindowFmttype: The resID is invalid"; if (!!param["callback"]) { param["callback"](result); } return; } msg["param"]["resID"] = parseInt(param["resID"]); msg["param"]["width"] = parseInt(param["width"]); msg["param"]["height"] = parseInt(param["height"]); cloudICP.dispatch.webSocket._mediaSdkRspFuncs[msg.cmd.toString()] = param["callback"]; var curTime = cloudICP.util.getCurrentDate(); cloudICP.util.log(undefined, { "logLevel": "info", "logMsg": "setWssflowWinFmttype send msg=" + JSON.stringify(msg) }); cloudICP.dispatch.webSocket.sendDataToMediaSDK(msg, true); }; function ICPSDK_Dispatch_Voice() { this.MAX_SUB_LIST = 200; this.MAX_AMBIENCE_NUM = 1; this.MAX_HALF_DIAL_NUM = 1; this.MAX_VOICE_NUM = 30; }; /** * subscribeUserStatus() subscribe users * @param {Object} param { * reslist: [ * {isdn: ""}, * ], * callback: , * } */ ICPSDK_Dispatch_Voice.prototype.subscribeUserStatus = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "subscribeUserStatus: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "subscribeUserStatus: callback is not a function" }); return; } var subUserParam = {}; var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "subscribeUserStatus: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!(Array.isArray(param["reslist"]) && param["reslist"].length > 0 && param["reslist"].length <= this .MAX_SUB_LIST)) { result["desc"] = "subscribeUserStatus: reslist is invalid"; param["callback"](result); return; } for (var item = 0; item < param["reslist"].length; item++) { if (!cloudICP.util.checkIsdn(param["reslist"][item]["isdn"])) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "subscribeUserStatus: isdn is invalid." }); result["desc"] = "subscribeUserStatus: reslist is invalid"; param["callback"](result); return; } } subUserParam["type"] = "sub"; subUserParam["reslist"] = param["reslist"]; var url = cloudICP.getSdkServerUrl() + "/v1/person/" + cloudICP.userInfo["isdn"]; subUserParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "async": false, "data": subUserParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * unsubscribeUserStatus() unsubUser users * @param {Object} param { * reslist: [ * {isdn: ""}, * ], * callback: , * } */ ICPSDK_Dispatch_Voice.prototype.unsubscribeUserStatus = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "unsubscribeUserStatus: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "unsubscribeUserStatus: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "unsubscribeUserStatus: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!(Array.isArray(param["reslist"]) && param["reslist"].length > 0 && param["reslist"].length <= this .MAX_SUB_LIST)) { result["desc"] = "unsubscribeUserStatus: reslist is is invalid"; param["callback"](result); return; } for (var item = 0; item < param["reslist"].length; item++) { if (!cloudICP.util.checkIsdn(param["reslist"][item]["isdn"])) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "unsubscribeUserStatus: isdn is invalid." }); result["desc"] = "unsubscribeUserStatus: isdn is invalid"; param["callback"](result); return; } } var unsubUserParam = {}; unsubUserParam["type"] = "unsub"; unsubUserParam["reslist"] = param["reslist"]; var url = cloudICP.getSdkServerUrl() + "/v1/person/" + cloudICP.userInfo["isdn"]; unsubUserParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "async": false, "data": unsubUserParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * dial * @param {Object} param { * to: * callback: , * } */ ICPSDK_Dispatch_Voice.prototype.dial = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "dial: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "dial: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "dial: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["to"])) { result["desc"] = "dial: The to is invalid"; param["callback"](result); return; } var callStatusMgr = cloudICP.util.callStatusMgr; if (callStatusMgr.currentCallState == callStatusMgr.RINGING) { result["rsp"] = "-4"; result["desc"] = "dial: There is a call is ringing." param["callback"](result); return; } if (callStatusMgr.numberOfCall[callStatusMgr.VOICE] + callStatusMgr.numberOfCall[callStatusMgr.VOICECONF] > cloudICP.dispatch.voice.MAX_VOICE_NUM) { result["rsp"] = "-5"; result["desc"] = "dial: The number of voice call is limited to " + cloudICP.dispatch.voice.MAX_VOICE_NUM; param["callback"](result); return; } if (callStatusMgr.isAnyCallExisted()) { result["rsp"] = "-6"; result["desc"] = "dial: The voice dial is conflicted with other calls"; param["callback"](result); return; } var requestParam = { "opt": "dial", "to": param["to"], "Answer-Mode": param["Answer-Mode"] }; var url = cloudICP.getSdkServerUrl() + "/v1/voicecall/" + cloudICP.userInfo["isdn"]; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "PUT", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * answer * @param {Object} param { * cid: * callback: , * } */ ICPSDK_Dispatch_Voice.prototype.answer = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "answer: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "answer: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "answer: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "answer: The cid is invalid"; param["callback"](result); return; } var calls = cloudICP.util.callStatusMgr.allCalls; if (calls[param["cid"]] && calls[param["cid"]]["callState"] >= cloudICP.util.callStatusMgr.CONNECTING) { result["rsp"] = "-40002"; result["desc"] = ""; param["callback"](result); return; } var callStatusMgr = cloudICP.util.callStatusMgr; if (callStatusMgr.connectingCallMgr[callStatusMgr.VIDEO].length != 0 || callStatusMgr.connectingCallMgr[callStatusMgr.DISCREET].length != 0 || callStatusMgr.connectingCallMgr[callStatusMgr.HALFVOICE].length != 0 || callStatusMgr.connectingCallMgr[callStatusMgr.VIDEOCONF].length != 0) { result["rsp"] = "-5"; result["desc"] = "answer: The call is conflicted with other calls" param["callback"](result); return; }; var call = calls[param["cid"]]; var callStatusMgr = cloudICP.util.callStatusMgr; if (call) { var callType = call.callType; switch (callType) { case callStatusMgr.AMBIENCE: break; case callStatusMgr.VOICE: if (callStatusMgr.numberOfCall[callStatusMgr.VOICE] + callStatusMgr.numberOfCall[callStatusMgr .VOICECONF] > cloudICP.dispatch.voice.MAX_VOICE_NUM) { result["rsp"] = "-4"; result["desc"] = "answer: The number of voice call is limited to " + cloudICP.dispatch.voice .MAX_VOICE_NUM; param["callback"](result); return; } break; case callStatusMgr.HALFVOICE: if (callStatusMgr.numberOfCall[callStatusMgr.HALFVOICE] >= cloudICP.dispatch.voice .MAX_HALF_DIAL_NUM) { result["rsp"] = "-4"; result["desc"] = "answer: The number of halfDial is limited to " + cloudICP.dispatch.voice .MAX_HALF_DIAL_NUM; param["callback"](result); return; } break; default: break; } } var requestParam = { "opt": "recv", "cid": param["cid"] }; var url = cloudICP.getSdkServerUrl() + "/v1/voicecall/" + cloudICP.userInfo["isdn"]; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); } /** * reject * @param {Object} param { * cid: * callback: , * } */ ICPSDK_Dispatch_Voice.prototype.reject = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "reject: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "reject: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "reject: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "reject: The cid is invalid"; param["callback"](result); return; } var calls = cloudICP.util.callStatusMgr.allCalls; if (calls[param["cid"]] && calls[param["cid"]]["callState"] >= cloudICP.util.callStatusMgr.CONNECTING) { var str; if (calls[param["cid"]]["callState"] == cloudICP.util.callStatusMgr.CONNECTING) { str = "reject: The cid is answered"; } else if (calls[param["cid"]]["callState"] == cloudICP.util.callStatusMgr.HOLD) { str = "reject: The cid is holded"; } else if (calls[param["cid"]]["callState"] == cloudICP.util.callStatusMgr.RELEASE) { str = "reject: The cid is ended"; } else { str = "reject: The cid is invalid"; } result["rsp"] = "-4"; result["desc"] = str; param["callback"](result); return; } var requestParam = { "opt": "reject", "cid": param["cid"] }; var url = cloudICP.getSdkServerUrl() + "/v1/voicecall/" + cloudICP.userInfo["isdn"]; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { if (data["rsp"] == "0") { // 停止振铃音 var mediaParam = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}}".format( parseInt(param["cid"]) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(mediaParam, true); var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.updateCallStatus(callStatusMgr.VOICE, callStatusMgr.RELEASE, { "value": { "cid": param["cid"] } }); } param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * release * @param {Object} param { * cid: * callback: , * } */ ICPSDK_Dispatch_Voice.prototype.release = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "release: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "release: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "release: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "release: The cid is invalid"; param["callback"](result); return; } var call = cloudICP.util.callStatusMgr.allCalls[param["cid"]]; if (call && call["caller"] != cloudICP.userInfo["isdn"] && call.callState == cloudICP.util.callStatusMgr .RINGING) { result["rsp"] = "-4"; result["desc"] = "release: The callee can't release a ringing call."; param["callback"](result); return; } // 停止提示音 var stopRingParam = "{\"description\":\"msp_stop_tone\", \"cmd\": 131076, \"param\":{\"cid\": {0}}}".format( parseInt(param["cid"]) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(stopRingParam, true); var url = cloudICP.getSdkServerUrl() + "/v1/voicecall/" + cloudICP.userInfo["isdn"] + "/close/" + param["cid"]; var requestParam = {}; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "DELETE", "url": url, "data": requestParam, "callback": function(data) { if (data["rsp"] == "1") { data["rsp"] = "0"; } param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); } /** * transfer * @param {Object} param { * to:, * speaker: * callback: , * } */ ICPSDK_Dispatch_Voice.prototype.transfer = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "transfer: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "transfer: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "transfer: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["to"])) { result["desc"] = "transfer: The to is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkIsdn(param["speaker"])) { result["desc"] = "transfer: The speaker is invalid"; param["callback"](result); return; } var requestParam = { "opt": "transfer", "to": param["to"], "speaker": param["speaker"] }; var url = cloudICP.getSdkServerUrl() + "/v1/voicecall/" + cloudICP.userInfo["isdn"]; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); if (data["rsp"] != 0) { var retEvent = { "eventName": "OnTransferFailure", "rsp": "0" } cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnTransferFailure"].event = retEvent; sendEvent2Page(tabPageId, cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"][ "OnTransferFailure"]); } } } cloudICP.util.ajax(ajaxCfg); } /** * cancelTransfer * @param {Object} param { * to:, * speaker: * callback: , * } */ ICPSDK_Dispatch_Voice.prototype.cancelTransfer = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "cancelTransfer: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "cancelTransfer: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "cancelTransfer: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["to"])) { result["desc"] = "cancelTransfer: The to is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkIsdn(param["speaker"])) { result["desc"] = "cancelTransfer: The speaker is invalid"; param["callback"](result); return; } var requestParam = { "opt": "transfercancel", "to": param["to"], "speaker": param["speaker"] }; var url = cloudICP.getSdkServerUrl() + "/v1/voicecall/" + cloudICP.userInfo["isdn"]; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); } /** * breakOff * @param {Object} param { * to:, * callback: , * } */ ICPSDK_Dispatch_Voice.prototype.breakOff = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "breakOff: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "breakOff: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "breakOff: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["to"])) { result["desc"] = "breakOff: The to is invalid"; param["callback"](result); return; } var requestParam = { "opt": "P2P", "to": param["to"] }; var url = cloudICP.getSdkServerUrl() + "/v1/voicecall/" + cloudICP.userInfo["isdn"] + "/breakoff"; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); if (data["rsp"] != 0) { var retEvent = { "eventName": "OnBreakOffFailure", "rsp": "0" } cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnBreakOffFailure"].event = retEvent; sendEvent2Page(reqId, this.EVENT_LIST["VoiceNotify"]["OnBreakOffFailure"]) } } } cloudICP.util.ajax(ajaxCfg); } /** * halfDial * @param {Object} param { * to:, * callback: , * } */ ICPSDK_Dispatch_Voice.prototype.halfDial = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "halfDial: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "halfDial: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "halfDial: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["to"])) { result["desc"] = "halfDial: The to is invalid"; param["callback"](result); return; } var callStatusMgr = cloudICP.util.callStatusMgr; if (callStatusMgr.currentCallState == callStatusMgr.RINGING) { result["rsp"] = "-4"; result["desc"] = "halfDial: There is a call is ringing." param["callback"](result); return; } if (callStatusMgr.numberOfCall[callStatusMgr.HALFVOICE] >= cloudICP.dispatch.voice.MAX_HALF_DIAL_NUM) { var cid = callStatusMgr.connectingCallMgr[callStatusMgr.HALFVOICE][0]; var call = callStatusMgr.allCalls[cid]; if (call["callee"] != param["to"] && call["caller"] != param["to"]) { result["rsp"] = "-5"; result["desc"] = "halfDial: The number of halfDial is limited to " + cloudICP.dispatch.voice .MAX_HALF_DIAL_NUM; param["callback"](result); return; } } if (callStatusMgr.connectingCallMgr[callStatusMgr.VIDEO].length != 0 || callStatusMgr.connectingCallMgr[callStatusMgr.DISCREET].length != 0 || callStatusMgr.connectingCallMgr[callStatusMgr.HALFVOICE].length != 0 || callStatusMgr.connectingCallMgr[callStatusMgr.VIDEOCONF].length != 0) { if (callStatusMgr.connectingCallMgr[callStatusMgr.HALFVOICE].length != 0) { var cid = callStatusMgr.connectingCallMgr[callStatusMgr.HALFVOICE][0]; var call = callStatusMgr.allCalls[cid]; if (call["callee"] != param["to"] && call["caller"] != param["to"]) { result["rsp"] = "-6"; result["desc"] = "halfDial: The voice call is conflicted with other calls"; param["callback"](result); return; } } } if (callStatusMgr.isAnyCallExisted()) { if (callStatusMgr.connectingCallMgr[callStatusMgr.HALFVOICE].length != 0) { var cid = callStatusMgr.connectingCallMgr[callStatusMgr.HALFVOICE][0]; var call = callStatusMgr.allCalls[cid]; if (call["callee"] != param["to"] && call["caller"] != param["to"]) { result["rsp"] = "-6"; result["desc"] = "halfDial: The voice call is conflicted with other calls"; param["callback"](result); return; } } else { result["rsp"] = "-6"; result["desc"] = "halfDial: The voice call is conflicted with other calls"; param["callback"](result); return; } } if (cloudICP.dispatch.group.isCurrentPtt["isPtt"]) { result["rsp"] = "-6"; result["desc"] = "halfDial: The The voice call is conflicted with other calls."; param["callback"](result); return; } var requestParam = { "opt": "halfDial", "to": param["to"] }; var url = cloudICP.getSdkServerUrl() + "/v1/voicecall/" + cloudICP.userInfo["isdn"]; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); } /** * releaseHalfDial * @param {Object} param { * cid:, * callback: , * } */ ICPSDK_Dispatch_Voice.prototype.releaseHalfDial = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "releaseHalfDial: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "releaseHalfDial: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "releaseHalfDial: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "releaseHalfDial: The cid is invalid"; param["callback"](result); return; } var requestParam = { "opt": "halfDialRelease", "cid": param["cid"] }; var url = cloudICP.getSdkServerUrl() + "/v1/voicecall/" + cloudICP.userInfo["isdn"]; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { // 关闭麦克风 var mediaParam = "{\"description\":\"msp_mute_audio_channel\", \"cmd\": 65549, \"param\":{\"resID\": {0}, \"mute\":true}}" .format( parseInt(param["cid"]) ); cloudICP.dispatch.webSocket.sendDataToMediaSDK(mediaParam, true); param["callback"](data) } } cloudICP.util.ajax(ajaxCfg); } /** * closeHalfDial * @param {Object} param { * cid:, * callback: , * } */ ICPSDK_Dispatch_Voice.prototype.closeHalfDial = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "closeHalfDial: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "closeHalfDial: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "closeHalfDial: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "closeHalfDial: The cid is invalid"; param["callback"](result); return; } var requestParam = { "opt": "close", "cid": param["cid"] }; var url = cloudICP.getSdkServerUrl() + "/v1/voicecall/" + cloudICP.userInfo["isdn"]; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data) } } cloudICP.util.ajax(ajaxCfg); } /** * discreetListen * @param {Object} param { * opType : start|stop * to:, * callback: , * } */ ICPSDK_Dispatch_Voice.prototype.discreetListen = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "discreetListen: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "discreetListen: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "discreetListen: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if ("start" != param["opType"] && "stop" != param["opType"]) { result["opType"] = "discreetListen: opType is invalid"; param["callback"](result); return; } if (!cloudICP.util.checkIsdn(param["to"])) { result["desc"] = "discreetListen: The to is invalid"; param["callback"](result); return; } var requestParam = { "opt": param["opType"], "to": param["to"] }; var url = cloudICP.getSdkServerUrl() + "/v1/voicecall/" + cloudICP.userInfo["isdn"] + "/discreetlisten"; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); if (param["opType"] == "start") { if (data["rsp"] == 0) { var retEvent = { "eventName": "OnStartDiscreetlistenSuccess", "rsp": "0", } cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnStartDiscreetlistenSuccess"].event = retEvent; sendEvent2Page(tabPageId, cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"][ "OnStartDiscreetlistenSuccess"]); } else { var retEvent = { "eventName": "OnStartDiscreetlistenFailure", "rsp": "0", } cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnStartDiscreetlistenFailure"].event = retEvent; sendEvent2Page(tabPageId, cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"][ "OnStartDiscreetlistenFailure"]); } } else { if (data["rsp"] == 0) { var retEvent = { "eventName": "OnStopDiscreetlistenSuccess", "rsp": "0", } cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnStopDiscreetlistenSuccess"].event = retEvent; sendEvent2Page(tabPageId, cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"][ "OnStopDiscreetlistenSuccess"]); } else { var retEvent = { "eventName": "OnStopDiscreetlistenFailure", "rsp": "0", } cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnStopDiscreetlistenFailure"].event = retEvent; sendEvent2Page(tabPageId, cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"][ "OnStopDiscreetlistenFailure"]); } } } } cloudICP.util.ajax(ajaxCfg); } /** * ambienceListen * @param {Object} param { * to:, * callback: , * } */ ICPSDK_Dispatch_Voice.prototype.ambienceListen = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "ambienceListen: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "ambienceListen: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "ambienceListen: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["to"])) { result["desc"] = "ambienceListen: The to is invalid"; param["callback"](result); return; } var callStatusMgr = cloudICP.util.callStatusMgr; if (callStatusMgr.currentCallState == callStatusMgr.RINGING) { result["rsp"] = "-4"; result["desc"] = "ambienceListen: There is a call is ringing." param["callback"](result); return; } if (callStatusMgr.isAnyCallExisted()) { result["rsp"] = "-6"; result["desc"] = "ambienceListen: The voice dial is conflicted with other calls"; param["callback"](result); return; } var requestParam = { "to": param["to"] }; var url = cloudICP.getSdkServerUrl() + "/v1/voicecall/" + cloudICP.userInfo["isdn"] + "/ambiencelisten"; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); }; /** * dialout * @param {Object} param { * to: * callback: , * } */ ICPSDK_Dispatch_Voice.prototype.dialout = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "dialout: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "dialout: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "dialout: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["to"])) { result["desc"] = "dialout: The to is invalid"; param["callback"](result); return; } var callStatusMgr = cloudICP.util.callStatusMgr; if (callStatusMgr.currentCallState == callStatusMgr.RINGING) { result["rsp"] = "-4"; result["desc"] = "dialout: There is a call is ringing." param["callback"](result); return; } if (callStatusMgr.numberOfCall[callStatusMgr.VOICE] + callStatusMgr.numberOfCall[callStatusMgr.VOICECONF] > cloudICP.dispatch.voice.MAX_VOICE_NUM) { result["rsp"] = "-5"; result["desc"] = "dialout: The number of voice call is limited to " + cloudICP.dispatch.voice.MAX_VOICE_NUM; param["callback"](result); return; } if (callStatusMgr.isAnyCallExisted()) { result["rsp"] = "-6"; result["desc"] = "dialout: The voice dial is conflicted with other calls"; param["callback"](result); return; } var requestParam = { "opt": "ticDial", "to": param["to"] }; var url = cloudICP.getSdkServerUrl() + "/v1/voicecall/" + cloudICP.userInfo["isdn"]; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "PUT", "url": url, "data": requestParam, "callback": param["callback"] } cloudICP.util.ajax(ajaxCfg); }; /** * voiceBroadcast * @param {Object} param { * to: * audioFile: * callback: , * } */ ICPSDK_Dispatch_Voice.prototype.voiceBroadcast = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "dial: param is invalid" }); return; } if (undefined == param["callback"] || (undefined == param["audioFile"] && undefined == param["audioBase64"]) || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "dial: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "dial: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["to"])) { result["desc"] = "dial: The to is invalid"; param["callback"](result); return; } if (undefined != param["audioFile"] && !cloudICP.util.checkFileType(param["audioFile"],"wav")) { result["desc"] = "dial: The audioFile is invalid"; param["callback"](result); return; } var requestParam = { "opt": "ticDial", "to": param["to"] }; var url = cloudICP.getSdkServerUrl() + "/v1/voicecall/" + cloudICP.userInfo["isdn"]; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "PUT", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } var callStatusMgr = cloudICP.util.callStatusMgr; callStatusMgr.saveBroadcastFile(param["to"], param["audioFile"], param["audioBase64"]); cloudICP.util.ajax(ajaxCfg); } /** * releaseDialout * @param {Object} param { * cid: * callback: , * } */ ICPSDK_Dispatch_Voice.prototype.releaseDialout = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "releaseDialout: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "releaseDialout: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "releaseDialout: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "releaseDialout: The cid is invalid"; param["callback"](result); return; } var call = cloudICP.util.callStatusMgr.allCalls[param["cid"]]; if (call && call["caller"] != cloudICP.userInfo["isdn"] && call.callState == cloudICP.util.callStatusMgr .RINGING) { result["rsp"] = "-4"; result["desc"] = "releaseDialout: The callee can't release a ringing call."; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/voicecall/" + cloudICP.userInfo["isdn"] + "/ticclose/" + param[ "cid"]; var requestParam = {}; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "DELETE", "url": url, "data": requestParam, "callback": function(data) { if (data["rsp"] == "1") { data["rsp"] = "0"; } param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * intercept * @param {Object} param { * to: * callback: , * } */ ICPSDK_Dispatch_Voice.prototype.intercept = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "intercept: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "intercept: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "intercept: The user does not logined"; param["callback"](result); return; } result["rsp"] = "-2"; if (!cloudICP.util.checkIsdn(param["to"])) { result["desc"] = "intercept: The to is invalid"; param["callback"](result); return; } var callStatusMgr = cloudICP.util.callStatusMgr; if (callStatusMgr.currentCallState == callStatusMgr.RINGING) { result["rsp"] = "-4"; result["desc"] = "intercept: There is a call is ringing." param["callback"](result); return; } if (callStatusMgr.numberOfCall[callStatusMgr.VOICE] + callStatusMgr.numberOfCall[callStatusMgr.VOICECONF] > cloudICP.dispatch.voice.MAX_VOICE_NUM) { result["rsp"] = "-5"; result["desc"] = "intercept: The number of voice call is limited to " + cloudICP.dispatch.voice .MAX_VOICE_NUM; param["callback"](result); return; } if (callStatusMgr.isAnyCallExisted()) { result["rsp"] = "-6"; result["desc"] = "intercept: The voice dial is conflicted with other calls"; param["callback"](result); return; } var url = cloudICP.getSdkServerUrl() + "/v1/voicecall/" + cloudICP.userInfo["isdn"] + "/breakin/" + param["to"]; var requestParam = {}; requestParam["reqId"] = tabPageId; var ajaxCfg = { "type": "PUT", "url": url, "data": requestParam, "callback": function(data) { param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * hold * @param { * cid: * callback: * } */ ICPSDK_Dispatch_Voice.prototype.hold = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "hold: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "hold: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "hold: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "hold: The cid is invalid"; param["callback"](result); return; } var call = cloudICP.util.callStatusMgr.allCalls[param["cid"]]; if (!call) { result["rsp"] = "-4"; result["desc"] = "hold: The call is not existed"; param["callback"](result); return; } else if (call["callState"] != cloudICP.util.callStatusMgr.CONNECTING) { result["rsp"] = "-4"; result["desc"] = "hold: The call is not existed"; param["callback"](result); return; } var requestParam = { "opt": "hold", "param": { type: "0", cid: param["cid"] } }; var url = cloudICP.getSdkServerUrl() + "/v1/voicecall/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { if (data["rsp"] == "0") { cloudICP.util.callStatusMgr.holdMgr.push(param["cid"]); } param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; /** * unhold * @param { * cid: * callback: * } */ ICPSDK_Dispatch_Voice.prototype.unhold = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "unhold: param is invalid" }); return; } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "unhold: callback is not a function" }); return; } var result = { "rsp": "-3", "desc": "" }; if (!cloudICP.userInfo["isdn"]) { result["desc"] = "unhold: The user does not logined"; param["callback"](result); return; } //check param valid result["rsp"] = "-2"; if (!cloudICP.util.checkCid(param["cid"])) { result["desc"] = "unhold: The cid is invalid"; param["callback"](result); return; } var call = cloudICP.util.callStatusMgr.allCalls[param["cid"]]; if (!call) { result["rsp"] = "-4"; result["desc"] = "unhold: The call is not existed"; param["callback"](result); return; } else if (call["callState"] != cloudICP.util.callStatusMgr.HOLD) { result["rsp"] = "-2"; result["desc"] = "unhold: The cid is not holded"; param["callback"](result); return; } var callStatusMgr = cloudICP.util.callStatusMgr; if (cloudICP.util.callStatusMgr.numberOfCall[callStatusMgr.VIDEO] + cloudICP.util.callStatusMgr.numberOfCall[ callStatusMgr.VIDEOCONF] > 0) { result["rsp"] = "-7"; result["desc"] = "unhold: There is a video existed"; param["callback"](result); return; } var callStatusMgr = cloudICP.util.callStatusMgr; if (cloudICP.util.callStatusMgr.numberOfCall[callStatusMgr.DISCREET] + cloudICP.util.callStatusMgr.numberOfCall[ callStatusMgr.HALFVOICE] > 0) { result["rsp"] = "-8"; result["desc"] = "unhold: There is a discreet or halfdial existed"; param["callback"](result); return; } var requestParam = { "opt": "unhold", "param": { type: "0", cid: param["cid"] } }; var url = cloudICP.getSdkServerUrl() + "/v1/voicecall/" + cloudICP.userInfo["isdn"]; requestParam["param"]["reqId"] = tabPageId; var ajaxCfg = { "type": "POST", "url": url, "data": requestParam, "callback": function(data) { if (data["rsp"] == "0") { cloudICP.util.callStatusMgr.holdMgr.push(param["cid"]); } param["callback"](data); } } cloudICP.util.ajax(ajaxCfg); }; function ICPSDK_Dispatch_WebSocket() { this._sdkServerWs = null; this._localDeamonWs = null; this._medisServerWs = null; this._mediaSdkRspFuncs = {}; this._mediaDataServerWs = null; this.reconnectMediaServiceId = -1; this.reconnectMediaDataServiceId = -1; this.reconnectLocalDeamonId = -1; this.isMSPConflicted = false; this.needRecontMediaServer = true; this.needRecontMediaDataServer = true; this.needRecontLocalDeamonServer = true; }; /** * 连接本地Deamon线程 */ ICPSDK_Dispatch_WebSocket.prototype.connectToLocalDeamon = function() { if (this._localDeamonWs) { return; } var curTime = cloudICP.util.getCurrentDate(); if (!sendMsg2Page(0, messageType.log, "[INFO][" + curTime + "] connectToLocalDeamon: WebSocket connection begin.")) { console.log("[INFO][" + curTime + "] connectToLocalDeamon: WebSocket connection begin."); }; if (typeof MozWebSocket != "undefined") { this._localDeamonWs = new MozWebSocket(cloudICP.getLocalDeamonUrl()); } else { this._localDeamonWs = new WebSocket(cloudICP.getLocalDeamonUrl()); } // 监听sdkserver websocket建立事件 this._localDeamonWs.onopen = function(event) { clearInterval(cloudICP.dispatch.webSocket.reconnectLocalDeamonId); cloudICP.dispatch.webSocket.reconnectLocalDeamonId = -1; clearInterval(cloudICP.dispatch.webSocket.reconnectMediaServiceId); cloudICP.dispatch.webSocket.reconnectMediaServiceId = -1; var curTime = cloudICP.util.getCurrentDate(); if (!sendMsg2Page(0, messageType.log, "[INFO][" + curTime + "] connectToLocalDeamon: WebSocket connection open.")) { console.log("[INFO][" + curTime + "] connectToLocalDeamon: WebSocket connection open."); }; }; this._localDeamonWs.onclose = function(event) { var curTime = cloudICP.util.getCurrentDate(); if (!sendMsg2Page(0, messageType.log, "[INFO][" + curTime + "] connectToLocalDeamon: WebSocket connection closed.")) { console.log("[INFO][" + curTime + "] connectToLocalDeamon: WebSocket connection closed."); }; cloudICP.dispatch.webSocket._localDeamonWs = null; clearInterval(cloudICP.dispatch.webSocket.reconnectMediaServiceId); cloudICP.dispatch.webSocket.reconnectMediaServiceId = -1; if (cloudICP.dispatch.webSocket.reconnectLocalDeamonId == -1 && cloudICP.dispatch.webSocket.needRecontLocalDeamonServer) { cloudICP.dispatch.webSocket.reconnectLocalDeamonId = setInterval(function() { if (cloudICP.dispatch.webSocket._localDeamonWs == null ) { cloudICP.dispatch.webSocket.connectToLocalDeamon(); } }, 5000); } cloudICP.reportDispatchSdkStatus({ "status": "1", "desc": "connect to deamon thread failed." }); }; // 监听sdkserver websocket错误事件 this._localDeamonWs.onerror = function(event) { var curTime = cloudICP.util.getCurrentDate(); if (!sendMsg2Page(0, messageType.log, "[INFO][" + curTime + "] connectToLocalDeamon: WebSocket error observed.")) { console.error("[INFO][" + curTime + "] connectToLocalDeamon: WebSocket error observed."); }; }; // 监听sdkserver websocket消息事件 this._localDeamonWs.onmessage = function(event) { if (event.data == "this session has been downgraded") { cloudICP.dispatch.webSocket.needRecontLocalDeamonServer = false; var param = "{\"description\":\"end_this_link_MSP_D\", \"cmd\": 196613}"; this._localDeamonWs.send(param); } var data = JSON.parse(event.data); cloudICP.dispatch.webSocket.connectToMediaServer(); cloudICP.dispatch.webSocket.connectToMediaDataServer(); if (data["rsp"] != "131074") { setTimeout(function() { cloudICP.util.log(0, { "logLevel": "info", "logMsg": "recv Deamon msg:" + event.data }); }, 0); } if (data["msgType"] == "MspServiceStartUp") { cloudICP.userInfo["mspVersion"] = data["version"]; } cloudICP.dispatch.event.delMSPNotify(data); }; } /** * 连接本地媒体线程 */ ICPSDK_Dispatch_WebSocket.prototype.connectToMediaServer = function() { if (this._medisServerWs) { return; } var curTime = cloudICP.util.getCurrentDate(); if (!sendMsg2Page(0, messageType.log, "[INFO][" + curTime + "] connectToMediaServer: WebSocket connection begin.")) { console.log("[INFO][" + curTime + "] connectToMediaServer: WebSocket connection begin."); }; if (typeof MozWebSocket != "undefined") { this._medisServerWs = new MozWebSocket(cloudICP.getMediaServerUrl()); } else { this._medisServerWs = new WebSocket(cloudICP.getMediaServerUrl()); } // 监听sdkserver websocket建立事件 this._medisServerWs.onopen = function(event) { clearInterval(cloudICP.dispatch.webSocket.reconnectMediaServiceId); cloudICP.dispatch.webSocket.reconnectMediaServiceId = -1; var curTime = cloudICP.util.getCurrentDate(); if (!sendMsg2Page(0, messageType.log, "[INFO][" + curTime + "] connectToMediaServer: WebSocket connection open.")) { console.log("[INFO][" + curTime + "] connectToMediaServer: WebSocket connection open."); }; //this._medisServerWs.send("Login"); this._medisServerWs.send("ForceLogin"); }.bind(this); this._medisServerWs.onclose = function(event) { var curTime = cloudICP.util.getCurrentDate(); if (!sendMsg2Page(0, messageType.log, "[INFO][" + curTime + "] connectToMediaServer: WebSocket connection closed.")) { console.log("[INFO][" + curTime + "] connectToMediaServer: WebSocket connection closed."); }; cloudICP.dispatch.webSocket._medisServerWs = null; if (cloudICP.dispatch.webSocket.reconnectMediaServiceId == -1 && cloudICP.dispatch.webSocket .reconnectLocalDeamonId == -1 && cloudICP.dispatch.webSocket.needRecontMediaServer) { cloudICP.dispatch.webSocket.reconnectMediaServiceId = setInterval(function() { if (cloudICP.dispatch.webSocket._medisServerWs == null ) { cloudICP.dispatch.webSocket.connectToMediaServer(); } }, 5000); } cloudICP.reportDispatchSdkStatus({ "status": "2", "desc": "connect to media server failed." }); }; // 监听sdkserver websocket错误事件 this._medisServerWs.onerror = function(event) { var curTime = cloudICP.util.getCurrentDate(); if (!sendMsg2Page(0, messageType.log, "[INFO][" + curTime + "] connectToMediaServer: WebSocket error observed.")) { console.error("[INFO][" + curTime + "] connectToMediaServer: WebSocket error observed."); }; }; // 监听sdkserver websocket消息事件 this._medisServerWs.onmessage = function(event) { var data = {}; if (cloudICP.util.isJsonString(event.data)) { var curTime = cloudICP.util.getCurrentDate(); data = JSON.parse(event.data); if (data && data["rsp"] != "131074") { setTimeout(function() { cloudICP.util.log(0, { "logLevel": "debug", "logMsg": "recv mediaServer msg:" + event.data }); }, 0); } } else { setTimeout(function() { console.log("recv mediaServer msg:" + event.data); }, 0); } var ret = this.dealMSPEvent(event); if (ret == true) { return; } var cmd = data["rsp"] + ""; if (typeof this._mediaSdkRspFuncs[cmd] == "function") { this._mediaSdkRspFuncs[cmd](data); } else { cloudICP.dispatch.event.delMSPNotify(data); } }.bind(this); } /** * 连接本地媒体数据透传线程 */ ICPSDK_Dispatch_WebSocket.prototype.connectToMediaDataServer = function() { if (this._mediaDataServerWs) { return; } var curTime = cloudICP.util.getCurrentDate(); if (!sendMsg2Page(0, messageType.log, "[INFO][" + curTime + "] connectToMediaDataServer: WebSocket connection begin.")) { console.log("[INFO][" + curTime + "] connectToMediaDataServer: WebSocket connection begin."); }; if (typeof MozWebSocket != "undefined") { this._mediaDataServerWs = new MozWebSocket(cloudICP.getMediaDataServerUrl()); } else { this._mediaDataServerWs = new WebSocket(cloudICP.getMediaDataServerUrl()); } this._mediaDataServerWs.binaryType = 'arraybuffer'; // 监听透传数据 websocket建立事件 this._mediaDataServerWs.onopen = function(event) { clearInterval(cloudICP.dispatch.webSocket.reconnectMediaDataServiceId); cloudICP.dispatch.webSocket.reconnectMediaDataServiceId = -1; var curTime = cloudICP.util.getCurrentDate(); if (!sendMsg2Page(0, messageType.log, "[INFO][" + curTime + "] connectToMediaDataServer: WebSocket connection open.")) { console.log("[INFO][" + curTime + "] connectToMediaDataServer: WebSocket connection open."); }; }.bind(this); this._mediaDataServerWs.onclose = function(event) { var curTime = cloudICP.util.getCurrentDate(); if (!sendMsg2Page(0, messageType.log, "[INFO][" + curTime + "] connectToMediaDataServer: WebSocket connection closed.")) { console.log("[INFO][" + curTime + "] connectToMediaDataServer: WebSocket connection closed."); }; cloudICP.dispatch.webSocket._mediaDataServerWs = null; if (cloudICP.dispatch.webSocket.reconnectMediaDataServiceId = -1 && cloudICP.dispatch.webSocket.needRecontMediaDataServer) { cloudICP.dispatch.webSocket.reconnectMediaDataServiceId = setInterval(function() { if (cloudICP.dispatch.webSocket._mediaDataServerWs == null ) { cloudICP.dispatch.webSocket.connectToMediaDataServer(); } }, 5000); } cloudICP.reportDispatchSdkStatus({ "status": "2", "desc": "connect to media data server failed." }); }; // 监听透传数据 websocket错误事件 this._mediaDataServerWs.onerror = function(event) { var curTime = cloudICP.util.getCurrentDate(); if (!sendMsg2Page(0, messageType.log, "[INFO][" + curTime + "] connectToMediaDataServer: WebSocket error observed.")) { console.error("[INFO][" + curTime + "] connectToMediaDataServer: WebSocket error observed."); }; }; // 监听透传数据 websocket消息事件 this._mediaDataServerWs.onmessage = function(event) { var data = {}; if (event.data instanceof ArrayBuffer) { const decoder = new TextDecoder("utf-8"); const textData = decoder.decode(event.data); cloudICP.util.parseMediaData(event.data, data); } cloudICP.dispatch.event.delMSPNotify(data); }.bind(this); } /** * 发送消息给本地媒体 */ ICPSDK_Dispatch_WebSocket.prototype.sendDataToMediaSDK = function(data, isLog) { var sendStr; if (isLog == true) { setTimeout(function() { if (undefined != data["param"] && undefined != data["param"]["mediaInfo"] && undefined != data["param"]["mediaInfo"]["audioBase64"]) { } else { cloudICP.util.log(0, { "logLevel": "debug", "logMsg": "send mediaServer msg:" + JSON.stringify(data) }); } }, 0); } if (undefined != data["cmd"]) { sendStr = JSON.stringify(data); } else { sendStr = "" + data; } if (!this._medisServerWs) { return; } this._medisServerWs.send(sendStr); } /** * 发送消息给本地媒体 */ ICPSDK_Dispatch_WebSocket.prototype.sendDataToDeamonSDK = function(data, isLog) { if (isLog == true) { setTimeout(function() { cloudICP.util.log(0, { "logLevel": "info", "logMsg": "send Deamon msg:" + JSON.stringify(data) }); }, 0); } if (!this._localDeamonWs) { return; } if (undefined != data["cmd"]) { var sendStr = JSON.stringify(data); this._localDeamonWs.send(sendStr); } else { this._localDeamonWs.send(data); } } /** * 获取ip * @param param { * callback : * } */ ICPSDK_Dispatch_WebSocket.prototype.getLocalIp = function(param) { var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } var msg = { "description": "msp_get_local_ip", "cmd": 0x20001, "param": { "server": cloudICP.config["serverAddress"], "serverDomain": cloudICP.config["serverDomain"] } }; if (undefined == param) { cloudICP.util.log(undefined, { "logLevel": "warn", "logMsg": "getLocalIp: param is invalid."}); } if (undefined == param["callback"] || typeof param["callback"] != "function") { cloudICP.util.log(undefined, { "logLevel": "warn", "logMsg": "getLocalIp: callback is not a function."}); } if ((undefined != param) && (undefined != param["callback"]) && (typeof param["callback"] == "function")) { this._mediaSdkRspFuncs[msg.cmd + ""] = param["callback"]; } else { this._mediaSdkRspFuncs[msg.cmd + ""] = this.getLocalIpCallBack; } cloudICP.util.log(undefined, { "logLevel": "info", "logMsg": "send getLocalIp."}); this.sendDataToMediaSDK(msg, true); } /** * 修改mdc ip * @param param { * callback : * } */ ICPSDK_Dispatch_WebSocket.prototype.ModifyMdcIp = function(param) { cloudICP.util.LogInputParam(param); var tabPageId = param.tabPageId; if (param["value"] != undefined) { param = param.value; } if (undefined == param) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "ModifyMdcIp: mdcip is null" }); return; } if (!cloudICP.util.checkIp(param["mdcip"])) { cloudICP.util.log(tabPageId, { "logLevel": "error", "logMsg": "ModifyMdcIp: mdcip is invalid" }); return; } var msg = { "description": "modify_mdcip", "cmd": 0x20008, "param": { "mdcip": param["mdcip"], "serverDomain": cloudICP.config["serverDomain"] }, "reqId": tabPageId }; this._mediaSdkRspFuncs[msg.cmd + ""] = this.getModifyMdcip.bind(this); this.sendDataToMediaSDK(msg, true); } /** * 获取摄像头信息 * @param param { * callback : * } */ ICPSDK_Dispatch_WebSocket.prototype.getCameraInfo = function(param) { var msg = { "description": "msp_get_video_support", "cmd": 0x20007 }; this._mediaSdkRspFuncs[msg.cmd + ""] = this.getCameraInfoCallBack; this.sendDataToMediaSDK(msg, true); } /** * 处理获取IP的结果 */ ICPSDK_Dispatch_WebSocket.prototype.getCameraInfoCallBack = function(data) { var reqId = 0; if (0 == data["result"]) { if (data["support"] == 0) { data["support"] = 127; } cloudICP.config["cameraInfo"] = data["support"]; if (cloudICP.config["cameraInfo"] && cloudICP.config["localIP"]) { cloudICP.reportDispatchSdkStatus({ "status": "0", "desc": "get localip and cameraInfo success.", "mdcip": cloudICP.config["mdcip"] }); } if ("begin" == cloudICP.config["installMspStatus"] || true == data["msp_first_use"]) { // 提示MSP刚安装好,首次使用 var retEvent = { "eventName": "OnInstallMspEvent", "status": "end" } delete cloudICP.config.installMspStatus; cloudICP.dispatch.event.EVENT_LIST["MSPNotify"]["OnInstallMspEvent"].event = retEvent; sendEvent2Page(reqId, cloudICP.dispatch.event.EVENT_LIST["MSPNotify"]["OnInstallMspEvent"]); cloudICP.dispatch.webSocket.ModifyMdcIp({ mdcip: cloudICP.config["mdcip"],callback: cloudICP.dispatch.webSocket.getModifyMdcip }); } if (true == data["msp_first_use"]) {// 刷新MSP状态,不再是首次使用 var updateMspUseStatus = "{\"description\":\"msp_use_status_update\", \"cmd\": 131085}".format(); cloudICP.dispatch.webSocket.sendDataToMediaSDK(updateMspUseStatus, true); } cloudICP.dispatch.webSocket.getLocalIp({ callback: cloudICP.dispatch.webSocket.getLocalIpCallBack }); } else { cloudICP.reportDispatchSdkStatus({ "status": "4", "desc": "get cameraInfo failed !" }); } } ICPSDK_Dispatch_WebSocket.prototype.getLocalIpCallBack = function(data) { var reqId = data.reqId; reqId = 0; if (0 == data["result"]) { cloudICP.config["localIP"] = data["localIP"]; cloudICP.config["mdcip"] = data["mdcip"]; if (cloudICP.config["mspVersion"] != data["mspVersion"]) { var event = {}; event["eventName"] = "OnUpdateMsp"; event["moduleType"] = "1"; event["mspVersion"] = data["mspVersion"]; event["desc"] = "msp版本(" + data["mspVersion"] + ")与jssdk版本(" + cloudICP.config["mspVersion"] + ")不同,请安装对应版本msp"; event["downloadUrl"] = "http://" + cloudICP.config.serverDomain + ":8009/mspversion/" + cloudICP.config.mspVersion + "/eSDK_ICP_MSP.zip"; cloudICP.dispatch.event.EVENT_LIST["MSPNotify"]["OnUpdateMsp"].event = event; sendEvent2Page(reqId, cloudICP.dispatch.event.EVENT_LIST["MSPNotify"]["OnUpdateMsp"]); try { if (undefined != typeof(document)) { var messageElement = document.getElementById('open-msp-result-message'); if (messageElement) { var strUrl = "http://" + cloudICP.config.serverDomain + ":8009/mspversion/" + cloudICP.config.mspVersion + "/eSDK_ICP_MSP.zip"; var strVersion = "MSP_V" + cloudICP.config.mspVersion + ".zip"; messageElement.innerHTML = '检测结果:' + ' MSP 插件已运行安装版本:' + 'MSP_V' + data["mspVersion"] + '.zip' + ',目标版本下载链接: ' + '' + strVersion + ''; } } } catch(e) {} } cloudICP.util.log(undefined, { "logLevel": "info", "logMsg": "{\"localIP\":\"" + data["localIP"] + "\", mdcip:\"" + data["mdcip"] + "\", mspVersion:\"" + data["mspVersion"] + "\"}" }); // $('#msp-version').html("[mspVersion:" + cloudICP.config["mspVersion"] + "]"); if (cloudICP.config["cameraInfo"] && cloudICP.config["localIP"]) { cloudICP.reportDispatchSdkStatus({ "status": "0", "desc": "get localip and cameraInfo success." }); } } else { cloudICP.reportDispatchSdkStatus({ "status": "3", "desc": "get localIP failed." }); } } /** * connectToSDKServer() */ ICPSDK_Dispatch_WebSocket.prototype.connectToSDKServer = function() { if (this._sdkServerWs) { this._sdkServerWs.close(); this._sdkServerWs = null; } var curTime = cloudICP.util.getCurrentDate(); if (!sendMsg2Page(0, messageType.log, "[INFO][" + curTime + "] connectToSDKServer: WebSocket connection begin.")) { console.log("[INFO][" + curTime + "] connectToSDKServer: WebSocket connection begin."); }; if (typeof MozWebSocket != "undefined") { this._sdkServerWs = new MozWebSocket(cloudICP.getSdkServerWssUrl()); } else { this._sdkServerWs = new WebSocket(cloudICP.getSdkServerWssUrl()); } // 监听sdkserver websocket建立事件 this._sdkServerWs.onopen = function(event) { var curTime = cloudICP.util.getCurrentDate(); var request = { cmd: 'registerEvents', isdn: cloudICP.userInfo.isdn, session: cloudICP.userInfo.session } if (!sendMsg2Page(0, messageType.log, "[INFO][" + curTime + "] connectToSDKServer: WebSocket connection opened.")) { console.log("[INFO][" + curTime + "] connectToSDKServer: WebSocket connection opened."); }; this.sendAuthToSDKServer(request); }.bind(this); this._sdkServerWs.onclose = function(event) { var curTime = cloudICP.util.getCurrentDate(); if (!sendMsg2Page(0, messageType.log, "[INFO][" + curTime + "] connectToSDKServer: WebSocket connection closed.")) { console.log("[INFO][" + curTime + "] connectToSDKServer: WebSocket connection closed."); }; }; // 监听sdkserver websocket错误事件 this._sdkServerWs.onerror = function(event) { var curTime = cloudICP.util.getCurrentDate(); if (!sendMsg2Page(0, messageType.log, "[INFO][" + curTime + "] connectToSDKServer: WebSocket error observed.")) { console.error("[INFO][" + curTime + "] connectToSDKServer: WebSocket error observed."); }; }; // 监听sdkserver websocket消息事件 this._sdkServerWs.onmessage = function(event) { setTimeout(function() { cloudICP.util.log(0, { "logLevel": "info", "logMsg": "recv sdkServer msg:" + event.data }); }, 0); this.dealMessage(event.data); }.bind(this); } /** * handle the websocket event */ ICPSDK_Dispatch_WebSocket.prototype.dealMessage = function(event) { var jsonObject = JSON.parse(event); var cmd = jsonObject["cmd"]; var rid = jsonObject["rid"]; if (undefined == cmd) { cloudICP.util.log(undefined, { "logLevel": "warn", "logMsg": "dealMessage: cmd is invalid." }); return; } if (undefined != jsonObject["rid"]) { delete jsonObject.rid; } if (undefined != jsonObject["seq"]) { delete jsonObject.seq; } delete jsonObject.cmd; switch (cmd) { case "voiceNotify": //语音状态通知处理 cloudICP.dispatch.event.delVoiceNotify(jsonObject); break; case "videoNotify": //视频状态通知处理 cloudICP.dispatch.event.delVideoNotify(jsonObject); case "groupCallNotify": //组呼状态通知处理 cloudICP.dispatch.event.delGroupCallNotify(jsonObject); break; case "commonNotify": //群组更新通知处理 cloudICP.dispatch.event.delCommonNotify(jsonObject); break; case "msNotify": //短彩信更新通知处理 cloudICP.dispatch.event.delMsNotify(jsonObject); break; case "gisNotify": //gis状态通知处理 cloudICP.dispatch.event.delGisNotify(jsonObject); break; case "resourceNotify": //资源状态通知处理 jsonObject["rid"] = rid; cloudICP.dispatch.event.delResourceNotify(jsonObject); break; case "moduleNotify": //模块状态通知处理 cloudICP.dispatch.event.delModuleNotify(jsonObject); break; case "phoneConfNotify": //音视频会议通知 break; case "200006": //组呼音频通知 cloudICP.dispatch.event.delResourceNotify(JSON.parse(event)); break; case "registerEvents": //websocket连接建立成功通知 cloudICP.loginFlag = true; break; case "broadcastInfoEvents": //处理三方广播通知消息 cloudICP.dispatch.event.delBroadcastInfoNotify(jsonObject); break; default: cloudICP.util.log(undefined, { "logLevel": "warn", "logMsg": "dealMessage: unknow event. The event is " + JSON.stringify(event) }); } } /** * send() send request by websocket * @param {Object} req request */ ICPSDK_Dispatch_WebSocket.prototype.sendAuthToSDKServer = function(req) { this._sdkServerWs.send(JSON.stringify(req)); }; ICPSDK_Dispatch_WebSocket.prototype.dealMSPEvent = function(event) { var reqId = event.reqId; reqId = 0; if (event != undefined && event.data != undefined) { if (event.data == "LoginSuccessful") { var mspStatusEvent = {}; mspStatusEvent["eventName"] = "OnMspInstallRunStatus"; mspStatusEvent["moduleType"] = "1"; mspStatusEvent["status"] = 4;//1: 未安装 2:已安装 3:未运行 4:运行中 cloudICP.dispatch.event.EVENT_LIST["MSPNotify"]["OnMspInstallRunStatus"].event = mspStatusEvent; sendEvent2Page(0, cloudICP.dispatch.event.EVENT_LIST["MSPNotify"]["OnMspInstallRunStatus"]); if (true == cloudICP.config["hasExeCheckMsp"]) { cloudICP.dispatch.webSocket.ModifyMdcIp({ mdcip: cloudICP.config.setMDCIP, callback: cloudICP.dispatch.webSocket.getModifyMdcip }); } this.getCameraInfo(); cloudICP.dispatch.webSocket.isMSPConflicted = false; return true; } else if (event.data == "LoginFailed") { var event = {}; event["eventName"] = "OnDisConnection"; event["moduleType"] = "4"; cloudICP.dispatch.event.EVENT_LIST["ModuleNotify"]["OnDisConnection"].event = event; sendEvent2Page(reqId, cloudICP.dispatch.event.EVENT_LIST["ModuleNotify"]["OnDisConnection"]); cloudICP.dispatch.webSocket.isMSPConflicted = true; delete cloudICP.config["localIP"]; delete cloudICP.config["cameraInfo"]; return true; } else if (event.data == "this session has been downgraded") { cloudICP.dispatch.webSocket.needRecontMediaServer = false; cloudICP.dispatch.webSocket.needRecontMediaDataServer = false; var param = "end_this_link_MSP_S"; this._medisServerWs.send(param); var event = {}; event["eventName"] = "OnDisConnection"; event["moduleType"] = "4"; cloudICP.dispatch.event.EVENT_LIST["ModuleNotify"]["OnDisConnection"].event = event; sendEvent2Page(reqId, cloudICP.dispatch.event.EVENT_LIST["ModuleNotify"]["OnDisConnection"]); cloudICP.dispatch.webSocket.isMSPConflicted = true; delete cloudICP.config["localIP"]; delete cloudICP.config["cameraInfo"]; cloudICP.dispatch.auth.unifiedLogout({ "callback": function(data) { // Do nothing } }); return true; } else if (event.data == "this session has been downgraded, cannot make any process") { delete cloudICP.config["localIP"]; delete cloudICP.config["cameraInfo"]; return true; } return false; } else { return false; } }; // 消息类型 var messageType = { lifecycle: "lifecycle", log: "log", request: "request", response: "response", event: "event", } var mainPageId = undefined; function ICPSDK_Util() { this.callStatusMgr = new CALL_STATUS_MGR(); this.sensitiveInfo = new SENSITIVE_INFOS(); }; ICPSDK_Util.prototype.strJsonParse = function(strJson) { try { var a = JSON.parse(strJson, function(k, v) { if (null != v && v.indexOf && v.indexOf('function') > -1) { return eval("(function(){return " + v + " })()") } else if (null != v && v.indexOf && v.indexOf('=>') > -1) { // 支持箭头函数的转换 return eval("(function(){return " + v + " })()"); } return v; }); return a; } catch (e) { cloudICP.util.log(0, { "logLevel": "error", "logMsg": "strJsonParse error: " + strJson }); return null; } } ICPSDK_Util.prototype.copyJsonObject = function(jsonObject) { try { var strJson = JSON.stringify(jsonObject, function(key, val) { if (typeof val === 'function') { return val + ''; } return val; }); var a = JSON.parse(strJson, function(k, v) { if (null != v && v.indexOf && v.indexOf('function') > -1) { return eval("(function(){return " + v + " })()") } else if (null != v && v.indexOf && v.indexOf('=>') > -1) { // 支持箭头函数的转换 return eval("(function(){return " + v + " })()"); } return v; }); return a; } catch (e) { cloudICP.util.log(0, { "logLevel": "error", "logMsg": "copyJsonObject json failure !" }); return null; } } /** * logParam is json object * { * "logLevel" : debug|info|warn|error * "logMsg" : message * } */ ICPSDK_Util.prototype.log = function(tabPageId, logParam) { var date = cloudICP.util.getCurrentDate(); //new Date().format("yyyy-MM-dd hh:mm:ss"); logParam.date = date; // 多窗口版本WorkerJs需要将日志发送给Demo页签 if (typeof tabPageId != 'undefined' || tabPageId != undefined) { sendMsg2Page(tabPageId, messageType.log, JSON.stringify(logParam)); } if (logParam["logLevel"] == "debug") { logParam["logLevelNum"] = 0; } else if (logParam["logLevel"] == "info") { logParam["logLevelNum"] = 1; } else if (logParam["logLevel"] == "warn") { logParam["logLevelNum"] = 2; } else if (logParam["logLevel"] == "error") { logParam["logLevelNum"] = 3; } else { logParam["logLevelNum"] = 0; } if (cloudICP.config.debugMode == "true") { // F12控制台 日志打印 switch (logParam["logLevelNum"]) { case 0: console.debug("[DEBUG][" + date + "] " + logParam["logMsg"]); break; case 1: console.info("[INFO][" + date + "] " + logParam["logMsg"]); break; case 2: console.warn("[WARN][" + date + "] " + logParam["logMsg"]); break; case 3: console.error("[ERROR][" + date + "] " + logParam["logMsg"]); break; default: console.debug("[DEFAULT][" + date + "] " + logParam["logMsg"]); break; } } logParam.logType = "HuaweiICPSDK's Log"; cloudICP.util.sendLogOut(logParam); }; /** * check str is or not json object strings * @param str */ ICPSDK_Util.prototype.isJsonString = function(str) { try { if (typeof JSON.parse(str) == "object") { return true; } } catch(e) {} return false; } /** * check the string param is number * @param param */ ICPSDK_Util.prototype.isNumber = function(param) { if (undefined == param || "" == param.toString()) { return false; } var regex = /^[1-9]+[0-9]*$/; if (regex.test(param) || /^0$/.test(param)) { return true; } return false; } /** * check the windowinfo param is valid * @param param */ ICPSDK_Util.prototype.checkWindowParam = function(param) { if (false == cloudICP.util.isNumber(param)) { return false; } var iValue = parseInt(param); if (0 > iValue || 0x7FFFFFFF < iValue) { return false; } return true; } /** * check the struiing param is letter * @param param */ ICPSDK_Util.prototype.isLetter = function(param) { if (undefined == param) { return false; } var regex = /^[A-Za-z]+[A-Za-z]*$/ if (regex.test(param)) { return true; } return false; } /** * check the string is one of str in array * @param array */ ICPSDK_Util.prototype.isStrInArray = function(str, array) { for (var type = 0; type < array.length; type++) { if (array[type] === str) { return true; } } return false; } /** * check the string is legal: number or letter * @param param */ ICPSDK_Util.prototype.isStrLegal = function(param) { if (undefined == param) { return false; } var regex = /^[A-Za-z0-9]+[A-Za-z0-9]*$/ if (regex.test(param)) { return true; } return false; } /** * check the string param is number(int or float) * @param param */ ICPSDK_Util.prototype.checkRate = function(param) { if (undefined == param) { return false; } if (isNaN(parseInt(param)) || isNaN(parseFloat(param))) { return false; } return true; } /** * check the string param is bool * @param param */ ICPSDK_Util.prototype.isBool = function(param) { if (undefined == param) { return false; } if (param == "true" || param == "false") { return true; } return false; } /** * check isdn is valid * @param isdn */ ICPSDK_Util.prototype.checkIsdn = function(isdn) { if (isdn && isdn.length <= 19) { return true; } return false; } /** * check file type is right * @param {*} isdn */ ICPSDK_Util.prototype.checkFileType=function(filePath, type){ if(!filePath){ return false; } var suffer = filePath.substring(filePath.lastIndexOf(".")+1); if(!suffer || suffer != type){ return false; } return true; } ICPSDK_Util.prototype.checkCallNumber = function(isdn) { if (isdn && isdn.length <= 13 && this.isNumber(isdn)) { return true; } return false; } ICPSDK_Util.prototype.checkGroupID = function(grpid) { if (grpid && grpid.length <= 13 && this.isNumber(grpid)) { return true; } return false; } /** * check cid is valid * @param cid */ ICPSDK_Util.prototype.checkCid = function(cid) { if (cid && cid.length <= 32 && this.isNumber(cid) && (parseInt(cid, 10) <= 2147483647)) { return true; } return false; } /** * getUserWindowId * @param NULL */ ICPSDK_Util.prototype.getUserWindowId = function() { var userWindowId = 2000000001; var bIsContinue = false; for (; userWindowId <= 2000001000; userWindowId++) { if (undefined == cloudICP.util.callStatusMgr.videoMediaInfoBuf[userWindowId.toString()]) { Object.keys(cloudICP.util.callStatusMgr.windowInfos).forEach(function(key) { if (undefined != cloudICP.util.callStatusMgr.windowInfos[key]["userWindowId"] && cloudICP .util.callStatusMgr.windowInfos[key]["userWindowId"] == userWindowId) { bIsContinue = true; cloudICP.util.log(0, { "logLevel": "warn", "logMsg": "[getUserWindowId] userWindowId(" + userWindowId + ") is release, but server not return over event." }); } }); if (false == bIsContinue) { return userWindowId; } bIsContinue = false; } } return userWindowId; } /** * get monitor repeats cid * @param NULL */ ICPSDK_Util.prototype.getMonitorRepeatsCid = function() { var monitorRepeatsCid = 2000001001; for (; monitorRepeatsCid <= 2000002000; monitorRepeatsCid++) { var bIsContinue = true; Object.keys(cloudICP.util.callStatusMgr.videoMediaInfoBuf).forEach(function(key) { if (key == monitorRepeatsCid) { bIsContinue = false; return; } }); if (bIsContinue == true) { break; } } return monitorRepeatsCid; } /** * check userWindowId is valid * @param cid */ ICPSDK_Util.prototype.checkUserWindowId = function(userWindowId, type) { var iResult = 0; if (userWindowId && this.isNumber(userWindowId) && (parseInt(userWindowId, 10) <= 2000001000) && (parseInt( userWindowId, 10) >= 2000000001)) { iResult = 1; var bUserWindowIdIsUsed = false; Object.keys(cloudICP.util.callStatusMgr.videoMediaInfoBuf).forEach(function(key) { if (undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["windowId"] && cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["windowId"] == userWindowId) { bUserWindowIdIsUsed = true; } }); Object.keys(cloudICP.util.callStatusMgr.windowInfos).forEach(function(key) { if (undefined != cloudICP.util.callStatusMgr.windowInfos[key]["userWindowId"] && cloudICP.util .callStatusMgr.windowInfos[key]["userWindowId"] == userWindowId) { iResult = 2; } }); if ("create" == type && true == bUserWindowIdIsUsed) { iResult = 2; } else if ("use" == type && false == bUserWindowIdIsUsed) { iResult = 2; } else if ("destroy" == type) { return iResult; } } return iResult; } /** * check User is Monitor * @param caller callee */ ICPSDK_Util.prototype.checkUserIsMonitor = function (caller, callee, jsonMediaValue) { var iResult = false; Object.keys(cloudICP.util.callStatusMgr.videoMediaInfoBuf).forEach(function (key) { if (undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["caller"] && caller == cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["caller"] && undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["callee"] && callee == cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["callee"]) { if (undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"][ "repeatsMonitor" ]) { jsonMediaValue["value"] = JSON.parse(JSON.stringify(cloudICP.util.callStatusMgr .videoMediaInfoBuf[key]["value"])); iResult = false; return; } iResult = true; jsonMediaValue["value"] = JSON.parse(JSON.stringify(cloudICP.util.callStatusMgr .videoMediaInfoBuf[key]["value"])); // 复制对象 } }); if ("" != jsonMediaValue["value"]) { return iResult; } Object.keys(cloudICP.util.callStatusMgr.windowInfos).forEach(function (key) { if (key == callee) { iResult = true; } }); return iResult; } /** * 是否创建复制流 * @param caller callee */ ICPSDK_Util.prototype.createNewCopyMonitor = function (caller, callee, jsonMediaValue) { var iResult = false; var activeStream = 0; // 判断创建时候的标记数,当前规格最大支持三路 Object.keys(cloudICP.util.callStatusMgr.videoMediaInfoBuf).forEach(function (key) { if (undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["caller"] && caller == cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["caller"] && undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["callee"] && callee == cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["callee"]) { if (undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["repeatsMonitor"]) { activeStream = activeStream + 1; } else { // 创建流判断是否以释放 未释放时标记累加 if (undefined == cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["releaseTag"] || false == cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["releaseTag"]) { activeStream = activeStream + 1; } // 复制主叫流信息 jsonMediaValue["value"] = JSON.parse(JSON.stringify(cloudICP.util.callStatusMgr .videoMediaInfoBuf[key]["value"])); } } }); if (activeStream < 3 && activeStream > 0) { iResult = true; } if ("" != jsonMediaValue["value"]) { return iResult; } Object.keys(cloudICP.util.callStatusMgr.windowInfos).forEach(function (key) { if (key == callee) { iResult = true; } }); return iResult; } /** * 更新主监控界面离开标志 * @param caller callee */ ICPSDK_Util.prototype.updateCopyMonitorReleaseTag = function (caller, callee) { Object.keys(cloudICP.util.callStatusMgr.videoMediaInfoBuf).forEach(function (key) { if (undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["caller"] && caller == cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["caller"] && undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["callee"] && callee == cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["callee"]) { cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["releaseTag"] = true; } }); } /** * 获取复制窗口结束标志 * @param caller callee */ ICPSDK_Util.prototype.getCopyMonitorReleaseTag = function (caller, callee) { var recTag = false; var activeStream = 0; Object.keys(cloudICP.util.callStatusMgr.videoMediaInfoBuf).forEach(function (key) { if (undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["caller"] && caller == cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["caller"] && undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["callee"] && callee == cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["callee"]) { // 创建流存在 if (undefined == cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["releaseTag"] || cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["releaseTag"] == false) { activeStream = 0; return; } if (undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["repeatsMonitor"]) { activeStream = activeStream + 1; } } }); if (activeStream == 1) { // 该监控有且仅有一路时候释放 recTag = true; } return recTag; } /** * clean repeats monitor Cache data * @param caller callee */ ICPSDK_Util.prototype.CleanThisRepeatsMonitor = function(caller, callee) { var strCids = []; Object.keys(cloudICP.util.callStatusMgr.videoMediaInfoBuf).forEach(function(key) { if (undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["caller"] && caller == cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["caller"] && undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["callee"] && callee == cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"]["callee"]) { if (undefined != cloudICP.util.callStatusMgr.videoMediaInfoBuf[key]["value"][ "repeatsMonitor" ]) { strCids.push(key); } } }); for (let i = 0; i < strCids.length; i++) { var tCid = strCids[i]; if (undefined != tCid) { delete cloudICP.util.callStatusMgr.videoMediaInfoBuf[tCid]; } } } /** * check ip is valid * @param ip */ ICPSDK_Util.prototype.checkIp = function(ip) { if (undefined == ip) { return false; } var regex = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/; if (regex.test(ip)) { return true; } if (/^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$/.test(ip)) { return true; } return false; } /** * check port is valid * @param port */ ICPSDK_Util.prototype.checkPort = function(port) { if (undefined == port) { return false; } var regex = /^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/; if (regex.test(port)) { return true; } return false; } /** * check vpnid is valid * @param {int} vpnid */ ICPSDK_Util.prototype.checkVpnid = function(vpnid) { if (undefined == vpnid || vpnid == null) { return false; } if (typeof vpnid != "number") { return false; } if (vpnid < -1 || vpnid >= 65535) { return false; } return true; } /** * check the alias of group */ ICPSDK_Util.prototype.checkAliasOfGroup = function(alias) { if (undefined == alias) { return false; } if ("" == alias.trim()) { return false; } var realLength = 0; var encodeStr = encodeURI(alias); var len = encodeStr.length; var charCode = -1; for (var i = 0; i < len; i++) { charCode = encodeStr.charCodeAt(i); realLength += 3; if (charCode == 37) { i += 2; } } if (realLength > (3 * 32)) { return false; } //不能为空,字符串最大长度为32个字节,不能用中英文逗号、单引号、双引号、分号、/、\符号、&符号、<符号、>符号,不能有连续的空格及连续的百分号,3个字节对应1个中文字。 if (!(/[,\/\&\'\"\;<>\\\uff1b\u2019\u2018\uff0c\u201d\u201c\u3008\u3009\uff1e\uff1c]/.test(alias)) && !(/\s{2}/ .test(alias)) && !(/\%{2}/.test(alias))) { return true; } return false; } /** * check showToolbar is valid * @param {int} buttonIDs */ ICPSDK_Util.prototype.checkshowToolbar = function(showToolbar) { if (undefined == showToolbar || showToolbar == null) { return false; } if (typeof showToolbar != "number") { return false; } if (showToolbar < 0 || showToolbar > 1) { return false; } return true; } /** * check buttonIDs is valid * @param {int} buttonIDs */ ICPSDK_Util.prototype.checkbuttonIDs = function(buttonIDs) { if (undefined == buttonIDs || buttonIDs == null) { return false; } if (typeof buttonIDs != "number") { return false; } if (buttonIDs < 0) { return false; } return true; } /** * check mode is valid * @param {string} mode */ ICPSDK_Util.prototype.checkmode = function(mode) { if (undefined == mode || mode == null) { return false; } if (typeof mode != "string") { return false; } let modes = new Set(["window", "wssflow", "plugins"]) if (!modes.has(mode)) { return false; } return true; } /** * check the user name */ ICPSDK_Util.prototype.checkUserName = function(user) { if (undefined == user) { return false; } if (user == "") { return false; } var clength = 0; for (var index = 0; index < user.length; index++) { if (encodeURI(user[index]).length > 1) { clength += 3; } else { clength += 1; } } if (clength >= 33) { return false; } if (!(/[,\/\&\'\"\;<>\\\uff1b\u2019\u2018\uff0c\u201d\u201c\u3008\u3009\uff1e\uff1c]/.test(user)) && !(/\s{2}/ .test(user)) && !(/\%{2}/.test(user))) { return true; } return false; } /** * check IdList is valid * @param string IdList */ ICPSDK_Util.prototype.checkIdList = function(IdList) { if (undefined == IdList || "" == IdList) { return false; } var regex = /[0-9]/; for (var i = 0; i < IdList.length; i++) { let pChar = IdList.charAt(i); if (!regex.test(pChar) && ';' != pChar) { return false; } } return true; } /** * get current date "yyyy-mm-dd HH:MM:SS.mmm" * @param {} */ ICPSDK_Util.prototype.getCurrentDate = function() { var date = new Date(); var year = date.getFullYear(); var month = date.getMonth() + 1; month = month < 10 ? "0" + month : month; var day = date.getDate(); day = day < 10 ? "0" + day : day; var hour = date.getHours(); hour = hour < 10 ? "0" + hour : hour; var minute = date.getMinutes(); minute = minute < 10 ? "0" + minute : minute; var second = date.getSeconds(); second = second < 10 ? "0" + second : second; var msecond = date.getMilliseconds(); msecond = msecond < 10 ? "0" + msecond : msecond; var current = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second + "." + msecond; return current; } /** * delete cid of wssflow mode * @param string cidStr */ ICPSDK_Util.prototype.deleteWssflowModeCid = function (cidStr) { // 删除内嵌窗口cid var wssflowModeCids = cloudICP.util.callStatusMgr.wssflowModeCids if (undefined != wssflowModeCids[cidStr] && "wssflow" == wssflowModeCids[cidStr]) { delete cloudICP.util.callStatusMgr.wssflowModeCids[cidStr]; } return; } Date.prototype.format = function(fmt) { var o = { "M+": this.getMonth() + 1, //月份 "d+": this.getDate(), //日 "h+": this.getHours(), //小时 "m+": this.getMinutes(), //分 "s+": this.getSeconds(), //秒 "q+": Math.floor((this.getMonth() + 3) / 3), //季度 "S": this.getMilliseconds() //毫秒 }; if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); } for (var k = 0; k < o.length; k++) { if (new RegExp("(" + k + ")").test(fmt)) { fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]) .length))); } } return fmt; }; String.prototype.trim = function() { return this.replace(/(^\s*)|(\s*$)/g, ""); } ICPSDK_Util.prototype.generateUUID = function() { return new Date().setMilliseconds(0).toString(); }; /** * resolve fmt * @param {string} fmt */ ICPSDK_Util.prototype.resolveFmt = function(fmt) { var ret = "720P" var fmtNum = parseInt(fmt); if (((fmtNum >> 4 & 1) == 1) && ((cloudICP.config.cameraInfo >> 4 & 1) == 1)) { ret = "1080P"; } else if (((fmtNum >> 3 & 1) == 1) && ((cloudICP.config.cameraInfo >> 3 & 1) == 1)) { ret = "720P"; } else if (((fmtNum >> 2 & 1) == 1) && ((cloudICP.config.cameraInfo >> 2 & 1) == 1)) { ret = "D1"; } else if (((fmtNum >> 1 & 1) == 1) && ((cloudICP.config.cameraInfo >> 1 & 1) == 1)) { ret = "CIF"; } else if (((fmtNum & 1) == 1) && ((cloudICP.config.cameraInfo & 1) == 1)) { ret = "QCIF"; } return ret; }; /** * resolve fmt * @param {string} fmt */ ICPSDK_Util.prototype.checkFmt = function(fmt) { var fmts = { "QCIF": 0, "CIF": 1, "D1": 2, "720P": 3, "1080P": 4, "2K": 5, "4K": 6 }; if ((cloudICP.config.cameraInfo >> fmts[fmt] & 1) == 1) { return true; } else { false; } }; /** * includes implement * @param {string} fmt */ ICPSDK_Util.prototype.includes = function(arr, element) { for (var index = 0; index < arr.length; index++) { if (arr[index] == element) { return true; } } return false; }; /** * name: getDefaultFmt * function: get default fmt from camera capabilities. */ ICPSDK_Util.prototype.getDefaultFmt = function() { var fmtsValueJson = { "1080P": 4, "720P": 3, "D1": 2, "CIF": 1, "QCIF": 0 }; var fmtValue = "1080P"; var fmts = ["1080P", "720P", "D1", "CIF", "QCIF"]; for (let index = 0; index < fmts.length; index++) { var fmt = fmts[index]; if ((cloudICP.config.cameraInfo >> fmtsValueJson[fmt] & 1) == 1) { return fmts[index]; } } return fmtValue; }; /** * save log message to msp log files * @param {string} fmt */ ICPSDK_Util.prototype.sendLogOut = function(msg) { if (cloudICP.dispatch.webSocket._medisServerWs && cloudICP.dispatch.webSocket._medisServerWs.readyState == cloudICP.dispatch.webSocket._medisServerWs.OPEN ) { var param = { "description": "msp_client_log_out", "cmd": 131074, "param": { "logLevel": msg.logLevelNum, "logMsg": msg.logMsg, } } var logStr = cloudICP.util.sensitiveInfo.moveSensitiveInfo(JSON.stringify(param)); cloudICP.dispatch.webSocket.sendDataToMediaSDK(logStr, false); } }; ICPSDK_Util.prototype.findDuplicates = function(arr) { return arr.filter(function(item, index) { return arr.indexOf(item) != index }) }; /** * save log message to msp log files * @param {string} fmt */ ICPSDK_Util.prototype.checkConfId = function(param) { //SMC3.0开始ConfId是字符串,不再校验 if (!param || "" == param || undefined == param) { return false; } return true; if (typeof param != "string") { return false; } if (!cloudICP.util.isNumber(param)) { return false; } if (parseInt(param) < 0) { return false; } if (param.length > cloudICP.dispatch.conf.MAX_CONF_ID.length) { return false; } else if (param.length < cloudICP.dispatch.conf.MAX_CONF_ID.length) { return true; } else { var index = 0; var i; var j; while (index < param.length) { i = param.charAt(index); j = cloudICP.dispatch.conf.MAX_CONF_ID.charAt(index); if (parseInt(i) > parseInt(j)) { return false; } else if (parseInt(i) < parseInt(j)) { return true; } index += 1 } return true; } return true; }; /* * print jssdk interface input param. * @param {} */ ICPSDK_Util.prototype.LogInputParam = function(param) { // 打印接口入参 var tabPageId = param.tabPageId; var curTime = cloudICP.util.getCurrentDate(); var methodName = null; var moduleName = null; var tmpStr; try { throw new Error(); } catch (n) { tmpStr = n.stack.split("\n"); } for (var index = 0; index < tmpStr.length; index++) { if (tmpStr[index].indexOf("ICPSDK_Dispatch") != -1) { methodName = tmpStr[index].split(/\W/)[6]; moduleName = tmpStr[index].split(/\W/)[5]; break; } } var logStr = cloudICP.util.sensitiveInfo.moveSensitiveInfo(JSON.stringify(param)); cloudICP.util.log(tabPageId, { "logLevel": "info", "logMsg": "Calling [ " + moduleName + "." + methodName + " ], input param: " + logStr + " ]" }); return true; }; function base64UrlToStandard(base64) { return base64.replace(/-/g, '+').replace(/_/g, '/'); } function addBase64Padding(base64) { return base64.padEnd(Math.ceil(base64.length / 4) * 4, '='); } function decodeBase64(base64) { base64 = base64UrlToStandard(base64); // 替换 URL 特殊字符 base64 = addBase64Padding(base64); // 补全 `=` return atob(base64); // 使用 atob 解码 } function CALL_STATUS_MGR() { var _mthis = this; // 通话状态码 this.IDLE = -1; this.NEW = 0; this.RINGING = 1; this.CONNECTING = 2; this.HOLD = 3; this.RELEASE = 4; // 通话类型 TODO this.VOICE = 0; this.VIDEO = 1; this.HALFVOICE = 2; this.DISCREET = 3; this.MONITOR = 4; this.VIDEODISPATCH = 5; this.AMBIENCE = 6; this.VOICECONF = 7; this.VIDEOCONF = 8; this.GROUP = 9; // this.callTypeStr = [ "voice", // 0 voice "video", // 1 video "halfdial", // 2 halfvoice "discreenlisten", // 3 discreet "monitor", // 4 monitor "dispatch", // 5 videodispatch "ambience", // 6 ambience "voiceconf", // 7 voiceconf "videoconf", // 8 videoconf "group", // 8 group ]; // 当前存在的各个通话的数量 this.numberOfCall = [ 0, // voice 0, // video 0, // halfvoice 0, // discreet 0, // monitor 0, // videodispatch 0, // ambience 0, // voiceconf 0, // videoconf ]; // 正在通话的call this.connectingCallMgr = [ [], // voice [], // video [], // halfvoice [], // discreet [], // monitor [], // videodispatch [], // ambience [], // voiceconf [], // videoconf ]; // 视频媒体信息 // 由于创建窗口到创建视频通道是由不同事件驱动的,所以维护该信息用于传输 this.videoMediaInfoBuf = {}; // 内嵌模式视频监控的数量 this.wssflowModeCids = {}; // 维护保持去保持接口调用的关系。 this.holdMgr = []; // 保存组呼的cid用于与msp进行交互。 // 主要是规避有些场景,只能获取group id不能获取组呼cid的问题。 this.groupCallMgr = {}; // 维护推送的会议状态信息 this.confMgr = { "accessInfo": {} }; // 当前用户通话状态信息 this.userStatusMgr = {}; // 当前正在接通的会议的cid this.currentGoingConfCid = 0; // 当前正在接通的会议,0表示无会议,其余value位会议id this.currentGoingConf = 0; // 当前订阅的会议 this.confSubMgr = {}; // 视频窗口信息 this.windowInfos = []; this.broadcastFile = {}; this.broadcastBase64 = {}; // 所有通话信息 this.allCalls = { "-1": { // 通话状态 callState: -1, // 通话接收时间 startTime: new Date().getTime(), caller: "0", callee: "0", callType: 0, fmt: "0", grpid: "0", members: null } }; // 正在呼叫通话 this.callingCid = -1; // 当前通话状态 this.currentCallState = this.IDLE; this.deleteBroadcastFile = function(isdn) { if (undefined != this.broadcastFile[isdn]) { delete this.broadcastFile[isdn]; return; } var userName = "0" + isdn; if (undefined != this.broadcastFile[userName]) { delete this.broadcastFile[userName]; return; } var userName1 = "00" + isdn; if (undefined != this.broadcastFile[userName1]) { delete this.broadcastFile[userName1]; return; } } this.deleteBroadcastBase64 = function (isdn) { if (undefined != this.broadcastBase64[isdn]) { delete this.broadcastBase64[isdn]; return; } var userName = "0" + isdn; if (undefined != this.broadcastBase64[userName]) { delete this.broadcastBase64[userName]; return; } var userName1 = "00" + isdn; if (undefined != this.broadcastBase64[userName1]) { delete this.broadcastBase64[userName1]; return; } } this.getBroadcastFile = function(isdn) { if (undefined != this.broadcastFile[isdn]) { return this.broadcastFile[isdn]; } var userName = "0" + isdn; if (undefined != this.broadcastFile[userName]) { return this.broadcastFile[userName]; } var userName1 = "00" + isdn; if (undefined != this.broadcastFile[userName1]) { return this.broadcastFile[userName1]; } return null; } this.getBroadcastBase64 = function (isdn) { if (undefined != this.broadcastBase64[isdn]) { return this.broadcastBase64[isdn]; } var userName = "0" + isdn; if (undefined != this.broadcastBase64[userName]) { return this.broadcastBase64[userName]; } var userName1 = "00" + isdn; if (undefined != this.broadcastBase64[userName1]) { return this.broadcastBase64[userName1]; } return null; } this.saveBroadcastFile = function (isdn, audioFile, audioBase64) { this.broadcastFile[isdn] = audioFile; this.broadcastBase64[isdn] = audioBase64; } this.updateConfInfo = function(data, isSaveAccessInfo) { if (isSaveAccessInfo == true) { if (_mthis.confMgr["accessInfo"] == undefined) { _mthis.confMgr["accessInfo"] = {}; } _mthis.confMgr["accessInfo"][data["confId"]] = data; } else { _mthis.confMgr[data["value"]["confId"]] = data; } } this.updateUserStatus = function(data) { _mthis.userStatusMgr[data["value"]["peerid"]] = data["statusvalue"]; _mthis.userStatusMgr[data["value"]["isdn"]] = data["statusvalue"]; // 用于规避问题 // 当通话被转接或抢话的时候,caller和callee的信息会出错,需要icpsdk来矫正。 if (cloudICP.util.callStatusMgr.connectingCallMgr[0].length != 0 && data["statusvalue"] == "4022") { var cid = cloudICP.util.callStatusMgr .callingCid; //cloudICP.util.callStatusMgr.connectingCallMgr[0][cloudICP.util.callStatusMgr.connectingCallMgr[0].length - 1]; var call = cloudICP.util.callStatusMgr.allCalls[cid]; if (data["value"]["isdn"] == cloudICP.userInfo["isdn"]) { call["callee"] = data["value"]["isdn"]; call["caller"] = data["value"]["peerid"]; } else { call["callee"] = data["value"]["peerid"]; call["caller"] = data["value"]["isdn"]; } } } this.updateCallStatus = function(callType, callState, data, confInfo) { var cid = data["value"]["cid"]; if (callType == _mthis.GROUP) { _mthis.groupCallMgr[data["grpid"]] = cid; return; } if (_mthis.allCalls[cid] == undefined) { _mthis.allCalls[cid] = { callType: callType, caller: data["value"]["caller"], callee: data["value"]["callee"], startTime: new Date().getTime(), }; _mthis.numberOfCall[callType] += 1; } var call = _mthis.allCalls[cid]; call["callState"] = callState; if (callType == _mthis.VIDEOCONF) { call.callType = _mthis.VIDEOCONF; } else { callType = call.callType; } if (confInfo) { call["confId"] = confInfo["confInternalId"]; } else if (data["value"] && data["value"]["confInfo"] != undefined) { call["confId"] = data["value"]["confInfo"]["confInternalId"]; } switch (callState) { case _mthis.RINGING: if (call.callType != _mthis.MONITOR) { _mthis.callingCid = cid; _mthis.currentCallState = _mthis.RINGING; } break; case this.CONNECTING: // 对视频能力进行维护 if (call.callType == _mthis.VIDEOCONF || call.callType == _mthis.VIDEO || call.callType == _mthis .MONITOR || call.callType == _mthis.VIDEODISPATCH) { call["fmt"] = data["value"]["fmt"]; switch (data["value"]["fmt"]) { case "0": cloudICP.dispatch.video.currentVideoAbility += 0.5 break; case "1": cloudICP.dispatch.video.currentVideoAbility += 0.5 break; case "2": cloudICP.dispatch.video.currentVideoAbility += 1 break; case "3": cloudICP.dispatch.video.currentVideoAbility += 2 break; case "4": cloudICP.dispatch.video.currentVideoAbility += 4 break; case "5": cloudICP.dispatch.video.currentVideoAbility += 8 break; case "6": cloudICP.dispatch.video.currentVideoAbility += 16 break; default: break; } } _mthis.callingCid = cid; if (call.callType != _mthis.MONITOR) { _mthis.currentCallState = _mthis.CONNECTING; } if (!cloudICP.util.includes(_mthis.connectingCallMgr[callType], cid)) { _mthis.connectingCallMgr[callType].push(cid); } if (call.callType == _mthis.VIDEOCONF || call.callType == _mthis.VOICECONF) { _mthis.currentGoingConf = call["confId"]; _mthis.currentGoingConfCid = cid; } break; case _mthis.RELEASE: // 对视频能力进行维护 if (call.callType == _mthis.VIDEOCONF || call.callType == _mthis.VIDEO || call.callType == _mthis .MONITOR || call.callType == _mthis.VIDEODISPATCH) { switch (call["fmt"]) { case "0": cloudICP.dispatch.video.currentVideoAbility -= 0.5 break; case "1": cloudICP.dispatch.video.currentVideoAbility -= 0.5 break; case "2": cloudICP.dispatch.video.currentVideoAbility -= 1 break; case "3": cloudICP.dispatch.video.currentVideoAbility -= 2 break; case "4": cloudICP.dispatch.video.currentVideoAbility -= 4 break; case "5": cloudICP.dispatch.video.currentVideoAbility -= 8 break; case "6": cloudICP.dispatch.video.currentVideoAbility -= 16 break; default: break; } } if (_mthis.callingCid == cid) { _mthis.callingCid = -1; if (call.callType != _mthis.MONITOR) { _mthis.currentCallState = _mthis.IDLE; } } _mthis.numberOfCall[callType] -=1; var index = _mthis.connectingCallMgr[callType].indexOf(cid); if (index != -1) { _mthis.connectingCallMgr[callType].splice(index, 1); } if (call.callType == _mthis.VIDEOCONF || call.callType == _mthis.VOICECONF) { if (_mthis.currentGoingConf == call["confId"]) { _mthis.currentGoingConf = 0; _mthis.currentGoingConfCid = cid; } if (undefined != cloudICP.util.callStatusMgr.windowInfos[2147483647]){ delete cloudICP.util.callStatusMgr.windowInfos[2147483647]; } } break; case _mthis.HOLD: var index = _mthis.connectingCallMgr[callType].indexOf(cid); if (index != -1) { _mthis.connectingCallMgr[callType].splice(index, 1); } break; default: break; } return true; }; this.holdCall = function(cid, tabPageId) { var currentCall = _mthis.allCalls[cid]; // 因为视频监控和视频分发可并发,所以不需要进行自动保持 if ( currentCall.callType == _mthis.MONITOR || currentCall.callType == _mthis.VIDEODISPATCH ) { return false; } if (currentCall.callType != _mthis.DISCREET && currentCall.callType != _mthis.HALFVOICE && currentCall.callType != _mthis.VIDEO && currentCall.callType != _mthis.VIDEOCONF) { if (_mthis.connectingCallMgr[_mthis.VIDEO].length != 0 || _mthis.connectingCallMgr[_mthis.DISCREET].length != 0 || _mthis.connectingCallMgr[_mthis.HALFVOICE].length != 0 || _mthis.connectingCallMgr[_mthis.VIDEOCONF].length != 0) { return _mthis.holdHelper(currentCall, cid, tabPageId); }; } var toHoldCall; var checkArr = [_mthis.VOICE, _mthis.VOICECONF, _mthis.AMBIENCE]; for (var i = 0; i < checkArr.length; i++) { var type = checkArr[i]; for (var j = 0; j < _mthis.connectingCallMgr[type].length; j++) { if (_mthis.connectingCallMgr[type][j] != cid) { toHoldCall = _mthis.allCalls[_mthis.connectingCallMgr[type][j]]; var ret = _mthis.holdHelper(toHoldCall, _mthis.connectingCallMgr[type][j], tabPageId); if (ret == true) { var index = _mthis.connectingCallMgr[type].indexOf(_mthis.connectingCallMgr[type][j]); if (index != -1) { _mthis.connectingCallMgr[type].splice(index, 1); } } return ret; } } } return false; }; this.unholdCall = function(cid, tabPageId) { var currentCall = this.allCalls[cid]; if (_mthis.connectingCallMgr[_mthis.VIDEO].length != 0 || _mthis.connectingCallMgr[_mthis.DISCREET].length != 0 || _mthis.connectingCallMgr[_mthis.HALFVOICE].length != 0 || _mthis.connectingCallMgr[_mthis.VIDEOCONF].length != 0) { return false; }; var toHoldCall; var checkArr = [_mthis.VOICE, _mthis.VOICECONF, _mthis.AMBIENCE]; for (var i = 0; i < checkArr.length; i++) { var type = checkArr[i]; for (var j = 0; j < _mthis.connectingCallMgr[type].length; j++) { if (_mthis.connectingCallMgr[type][j] != cid) { toHoldCall = _mthis.allCalls[_mthis.connectingCallMgr[type][j]]; var ret = _mthis.holdHelper(toHoldCall, _mthis.connectingCallMgr[type][j], tabPageId); if (ret == true) { if (currentCall) { var type = currentCall.callType; _mthis.connectingCallMgr[type].push(cid); } var index = _mthis.connectingCallMgr[type].indexOf(_mthis.connectingCallMgr[type][j]); if (index != -1) { _mthis.connectingCallMgr[type].splice(index, 1); } } return ret; } } } return false; } this.holdHelper = function(call, cid, tabPageId) { if (call) { if (call["callee"] && call["callee"] == cloudICP.userInfo["isdn"]) { if (call.callType != _mthis.VOICECONF) { cloudICP.dispatch.voice.hold({ "to": call["caller"], "cid": cid, "callback": function(data) { if (data["rsp"] != "0") { var retEvent = { "eventName": "OnHoldFailure", "rsp": data["rsp"], "value": { "peerid": "", "cid": "" } } cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnHoldFailure"].event = retEvent; sendEvent2Page(tabPageId, cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnHoldFailure"]); } } }); } else { cloudICP.dispatch.conf.holdConf({ "to": call["caller"], "cid": cid, "callback": function(data) { if (data["rsp"] != "0") { var retEvent = { "eventName": "OnHoldFailure", "rsp": data["rsp"], "value": { "peerid": "", "cid": "" } } cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnHoldFailure"].event = retEvent; sendEvent2Page(0, cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnHoldFailure"]); } } }); } return true; } else if (call["caller"] && call["caller"] == cloudICP.userInfo["isdn"]) { if (call.callType != _mthis.VOICECONF) { cloudICP.dispatch.voice.hold({ "to": call["callee"], "cid": cid, "callback": function(data) { if (data["rsp"] != "0") { var retEvent = { "eventName": "OnHoldFailure", "rsp": data["rsp"], "value": { "peerid": "", "cid": "" } } cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnHoldFailure"].event = retEvent; sendEvent2Page(tabPageId, cloudICP.dispatch.event.EVENT_LIST["VoiceNotify"]["OnHoldFailure"]); } } }); } else { cloudICP.dispatch.conf.holdConf({ "to": call["callee"], "cid": cid, "callback": function(data) { if (data["rsp"] != "0") { var retEvent = { "eventName": "OnHoldConfFailure", "rsp": data["rsp"], "value": { "confCode": "", "cid": "" } } cloudICP.dispatch.event.EVENT_LIST["PhoneConfNotify"]["OnHoldConfFailure"].event = retEvent; sendEvent2Page(tabPageId, cloudICP.dispatch.event.EVENT_LIST["PhoneConfNotify"]["OnHoldConfFailure"]); } } }); } return true; } else { return false; } } else { return false; } } // 确认是否有无法并发的通话存在 this.isAnyCallExisted = function() { return (_mthis.connectingCallMgr[_mthis.VIDEO].length != 0 || _mthis.connectingCallMgr[_mthis.DISCREET].length != 0 || _mthis.connectingCallMgr[_mthis.HALFVOICE].length != 0 || _mthis.connectingCallMgr[_mthis.VOICE].length != 0 || _mthis.connectingCallMgr[_mthis.AMBIENCE].length != 0 || _mthis.connectingCallMgr[_mthis.VOICECONF].length != 0 || _mthis.connectingCallMgr[_mthis.VIDEOCONF].length != 0) } this.cleanUp = function() { _mthis.currentGoingConf = 0; _mthis.currentCallState = _mthis.IDLE; _mthis.callingCid = -1; _mthis.allCalls = {}; _mthis.numberOfCall = [ 0, // voice 0, // video 0, // halfvoice 0, // discreet 0, // monitor 0, // videodispatch 0, // ambience 0, // voiceconf 0, // videoconf ]; _mthis.connectingCallMgr = [ [], // voice [], // video [], // halfvoice [], // discreet [], // monitor [], // videodispatch [], // ambience [], // voiceconf [], // videoconf ]; _mthis.videoMediaInfoBuf = { } _mthis.holdMgr = []; _mthis.groupCallMgr = {}; _mthis.confMgr = {}; _mthis.userStatusMgr = {} _mthis.mediaModeMap.clear(); } this.mediaModeMap = new Map(); this.checkIsExist = function(param) { if (this.mediaModeMap.size === 0) { return true; } else { let mediaInfo = this.mediaModeMap.get(parseInt(param["cid"])); if (undefined == mediaInfo) { return false; } let switch_int = mediaInfo["switch"]; if (switch_int == undefined || switch_int == parseInt(param["switch"])) { return false; } else { return true; } } }; this.addMediaModeInfo = function(param) { let mediaInfo = { "type": param["type"], "switch" : param["switch"] } return this.mediaModeMap.set(param["cid"], mediaInfo); }; this.delMediaModeInfo = function(param) { return this.mediaModeMap.delete(parseInt(param["cid"])); }; // 记录 内嵌窗口 相关信息 用来退出时 关闭内嵌窗口 this.wssflowDemoMap = new Map(); this.addWssflowDemoMap = function(cid , demo) { this.wssflowDemoMap.set(parseInt(cid), demo); } this.delWssflowDemoMap = function(cid) { var demo = this.wssflowDemoMap.get(parseInt(cid)); if (demo != undefined && typeof demo.closeFunc === 'function') { demo.closeFunc(); } this.wssflowDemoMap.delete(parseInt(cid)); } this.cleanWssflowDemoMap = function() { this.wssflowDemoMap.forEach((item, key) => { if (item !== undefined && typeof item.closeFunc === 'function') { item.closeFunc(); // 调用 closeFunc 方法 } }); this.wssflowDemoMap.clear(); } }; function SENSITIVE_INFOS() { //敏感信息关键字,false表示部分保留,true便是全去敏 this.infos = [ ["isdn", false], //成员号 ["seq", false], //序列号 ["session", true], ["user", false], ["localIP", false], //本地ip和端口 ["serverIP", false], //服务器ip和端口 ["remoteIP", false], //服务器ip和端口 ["password", true], //密码 ["serverip", false], //服务器ip和端口 ["ssotoken", true], //ssotoken ["ipccserveripport", true], //服务器ip和端口 //语音状态通知 ["callee", false], //主叫号 ["caller", false], //被叫号 ["targeter", false], //转接方 ["transfer", false], //被转接方 ["local", false], //本地ip和端口 ["server", false], //服务器ip和端口 //视频状态通知 ["from", false], //主叫号 ["to", false], //被叫号 ["local_audio", false], //本地语音ip和端口 ["local_video", false], //本地视频ip和端口 ["server_audio", false], //服务器语音ip和端口 ["server_video", false], //服务器视频ip和端口 //群组配置更新通知 ["departmentid", false], //部门id ["group", false], //群组号 ["name", false], //群组名 ["setupdcid", false], //创建者用户号 ["rid", false], //接收方用户号,0:表示广播 ["dcpatchindex", false], //派接组序列号 ["grpnumber", false], //群组号 ["pgname", false], //群组名 ["groupnumber", false], //群组号 ["membergroup", false], //成员群组号 ["vpnid", false], //vpn号 //短彩信更新通知 ["content", true], //消息内容 ["emerg_groupid", false], //紧急状态的群组ID ["emerg_ueid", false], //紧急状态的终端ID ["groupid", false], //群组号 ["attach", false], //彩信附件地址 //GIS状态通知 ["cellname", false], //终端名称 ["location", false], //位置信息 ["cellid", false], //资源状态通知 ["speaker", false], //组呼状态通知,发言人 ["attaching", false], //注册状态通知,用户当前加入的组号 ["peerid", false], ["speakid", false], ["resid", false], ["memberid", false], ["localip", false], ["newip", false], //创建会议通知 ["passcode", true], //密码 ["ObhId", false], ["SpeakerId", false], //音视频会议通知 ["Number", false], //成员号码 ["Name", false], //成员名称 ["number", false], ["owner", false], //上墙发起者名称 ["termName", false], //终端名称 ]; /** * 处理敏感信息 */ this.moveSensitiveInfo = function(data) { var strReturn = ('' + data).slice(0); for (var i = 0; i < this.infos.length; i++) { var targetInfo = this.infos[i][0]; var isSecret = this.infos[i][1]; var patternStr = '"' + targetInfo + '[\\\\"]"?.?:.?[\\\\"]?"?([\\w\\.]*?)[\\\\"]?"?[,}]'; var parten = new RegExp(patternStr); var resArr = strReturn.match(parten); for (var it in resArr) { var strReplace = resArr[it]; var reg = /:.*?([\w\.]+).*?[,}]/; var texts = reg.exec(strReplace); if (!texts) { break; } var text = ""; if (!isSecret) { text = '****' + texts[1].charAt(texts[1].length - 1); } else { text = '*****'; } var strRes = strReplace.replace(texts[1], text); strReturn = strReturn.replace(strReplace, strRes); } } return strReturn; }; } if (!String.prototype.format) { String.prototype.format = function() { var args = arguments; return this.replace(/{(\d+)}/g, function(match, number) { return typeof args[number] != 'undefined' ? args[number] : match; }); }; } ICPSDK_Util.prototype.parseMediaData = function(buf, data) { // 创建 DataView 用于解析二进制数据 let view = new DataView(buf); // 读取 result(1 字节) let result = view.getUint32(0, true); data["result"] = result; // console.debug("result:" + result); // 读取 rsp(4 字节) let rsp = view.getUint32(4, true); // 从第 1 字节开始读取 4 字节 data["rsp"] = rsp; // console.debug("rsp:" + rsp); // 读取 format(16 字节) let format = ''; for (let i = 8; i < 24; i++) { const charCode = view.getUint8(i); if (charCode === 0) break; // 遇到填充字节 (null) 时停止 format += String.fromCharCode(charCode); } data["format"] = format; // console.debug("format:" + format); // 读取 len(4 字节) let len = view.getUint32(24, true); // console.debug("len:" + len); // 读取 cid(4 字节) let cid = view.getUint32(28, true); data["cid"] = cid; // console.debug("cid:" + cid); // 读取 buf(len 字节) let dataArray = new Uint8Array(buf, 32, len); data["data"] = dataArray; // 可以根据需要对 data 进行进一步的处理,例如解码 base64 数据等 }