Code backup
This commit is contained in:
2026-05-10 16:59:01 +02:00
commit 368d6fafea
796 changed files with 315310 additions and 0 deletions
+557
View File
@@ -0,0 +1,557 @@
var allowed_domain_i = '*';
var webphoneframe = null;
var logtag = 'iframe_webphone: ';
var webphone_api = {};
// handle onLoaded
var onLoaded_IFRAME = null;
webphone_api.onLoaded = function (callback)
{
onLoaded_IFRAME = callback;
SendMessageToFrame('webphone_api.onLoaded');
};
// handle onStart
var onStart_IFRAME = null;
webphone_api.onStart = function (callback)
{
onStart_IFRAME = callback;
SendMessageToFrame('webphone_api.onStart');
};
// handle onRegistered
var onRegistered_IFRAME = null;
webphone_api.onRegistered = function (callback)
{
onRegistered_IFRAME = callback;
SendMessageToFrame('webphone_api.onRegistered');
};
// handle onUnRegistered
var onUnRegistered_IFRAME = null;
webphone_api.onUnRegistered = function (callback)
{
onUnRegistered_IFRAME = callback;
SendMessageToFrame('webphone_api.onUnRegistered');
};
// handle onCallStateChange
var onCallStateChange_IFRAME = null;
webphone_api.onCallStateChange = function (callback)
{
onCallStateChange_IFRAME = callback;
SendMessageToFrame('webphone_api.onCallStateChange');
};
// handle onChat
var onChat_IFRAME = null;
webphone_api.onChat = function (callback)
{
onChat_IFRAME = callback;
SendMessageToFrame('webphone_api.onChat');
};
// handle onCdr
var onCdr_IFRAME = null;
webphone_api.onCdr = function (callback)
{
onCdr_IFRAME = callback;
SendMessageToFrame('webphone_api.onCdr');
};
webphone_api.start = function () { SendMessageToFrame('webphone_api.start(webphone_api.parameters)'); };
webphone_api.stop = function () { SendMessageToFrame('webphone_api.stop()'); };
webphone_api.register = function () { SendMessageToFrame('webphone_api.register(webphone_api.parameters)'); };
webphone_api.call = function (number)
{
PutToDebugLog(5, 'iframe_helper call to number: ' + number.toString());
//SendMessageToFrame('webphone_api.call(' + number.toString() + ')');
SendMessageToFrame('webphone_api.call("' + number.toString() + '")');
};
webphone_api.videocall = function (number)
{
PutToDebugLog(5, 'iframe_helper videocall to number: ' + number.toString());
SendMessageToFrame('webphone_api.videocall("' + number.toString() + '")');
};
webphone_api.hangup = function (isinternal) { if (isNull(isinternal)) SendMessageToFrame('webphone_api.hangup()'); else SendMessageToFrame('webphone_api.hangup("' + isinternal.toString() + '")'); };
webphone_api.accept = function () { SendMessageToFrame('webphone_api.accept()'); };
webphone_api.reject = function () { SendMessageToFrame('webphone_api.reject(19,3)'); };
webphone_api.ignore = function () { SendMessageToFrame('webphone_api.ignore()'); };
webphone_api.getavailablecallfunc = function ()
{
InitializeHandler();
if (!isNull(webphoneframe))
{
return webphoneframe.webphone_api.getavailablecallfunc();
}
PutToDebugLog(2, logtag + 'ERROR, getavailablecallfunc webphoneframe is NULL');
};
webphone_api.getlastcalldetails = function ()
{
InitializeHandler();
if (!isNull(webphoneframe))
{
return webphoneframe.webphone_api.getlastcalldetails();
}
PutToDebugLog(2, logtag + 'ERROR, getlastcalldetails webphoneframe is NULL');
};
webphone_api.forward = function (number) { SendMessageToFrame('webphone_api.forward("' + number.toString() + '")'); };
webphone_api.conference = function (number, add) { SendMessageToFrame('webphone_api.conference("' + number.toString() + ',' + add + '")'); };
webphone_api.transfer = function (number) { SendMessageToFrame('webphone_api.transfer("' + number.toString() + '")'); };
webphone_api.dtmf = function (message) { SendMessageToFrame('webphone_api.dtmf("' + message.toString() + '")'); };
webphone_api.mute = function (mute, direction) { SendMessageToFrame('webphone_api.mute(' + mute + ', ' + direction + ')'); };
webphone_api.ismuted = function ()
{
InitializeHandler();
if (!isNull(webphoneframe))
{
return webphoneframe.webphone_api.ismuted();
}
PutToDebugLog(2, logtag + 'ERROR, ismuted webphoneframe is NULL');
};
webphone_api.hold = function (state) { SendMessageToFrame('webphone_api.hold(' + state + ')'); };
webphone_api.isonhold = function ()
{
InitializeHandler();
if (!isNull(webphoneframe))
{
return webphoneframe.webphone_api.isonhold();
}
PutToDebugLog(2, logtag + 'ERROR, isonhold webphoneframe is NULL');
};
webphone_api.sendchat = function (number, msg) { SendMessageToFrame('webphone_api.sendchat("' + number.toString() + '","' + msg.toString() + '")'); };
webphone_api.sendsms = function (number, msg, from) { SendMessageToFrame('webphone_api.sendsms("' + number.toString() + '","' + msg.toString() + '","' + from.toString() + '")'); };
webphone_api.voicerecord = function (bool, url, line) { SendMessageToFrame('webphone_api.voicerecord("' + bool + '","' + url + '","'+line+'")'); };
webphone_api.audiodevice = function () { SendMessageToFrame('webphone_api.audiodevice()'); };
webphone_api.devicepopup = function () { SendMessageToFrame('webphone_api.devicepopup()'); };
// handle getaudiodevicelist OLD
var getaudiodevicelist_IFRAME = null;
webphone_api.getaudiodevicelist = function (dev, callback)
{
getaudiodevicelist_IFRAME = callback;
SendMessageToFrame('webphone_api.getaudiodevicelist#' + dev);
};
// handle getdevicelist NEW
var getdevicelist_IFRAME = null;
webphone_api.getdevicelist = function (dev, callback)
{
getdevicelist_IFRAME = callback;
SendMessageToFrame('webphone_api.getdevicelist#' + dev);
};
// handle getaudiodevice OLD
var getaudiodevice_IFRAME = null;
webphone_api.getaudiodevice = function (dev, callback)
{
getaudiodevice_IFRAME = callback;
SendMessageToFrame('webphone_api.getaudiodevice#' + dev);
};
// handle getdevice NEW
var getdevice_IFRAME = null;
webphone_api.getdevice = function (dev, callback)
{
getdevice_IFRAME = callback;
SendMessageToFrame('webphone_api.getdevice#' + dev);
};
webphone_api.setaudiodevice = function (dev, devicename, immediate, fromcode) { SendMessageToFrame('webphone_api.setaudiodevice("' + dev + '", "' + devicename + '", "' + immediate + '", "' + fromcode + '")'); };
webphone_api.setdevice = function (dev, devicename, immediate, fromcode) { SendMessageToFrame('webphone_api.setdevice("' + dev + '", "' + devicename + '", "' + immediate + '", "' + fromcode + '")'); };
webphone_api.setvolume = function (dev, volume) { SendMessageToFrame('webphone_api.setvolume("' + dev + '", "' + volume + '")'); };
// handle getvolume
var getvolume_IFRAME = null;
webphone_api.getvolume = function (dev, callback)
{
getvolume_IFRAME = callback;
SendMessageToFrame('webphone_api.getvolume#' + dev);
};
webphone_api.setparameter = function (param, value, allowempty)
{
if (!isNull(allowempty))
{
SendMessageToFrame('webphone_api.setparameter("' + param + '", "' + value + '", "' + allowempty + '")');
}
else
{
SendMessageToFrame('webphone_api.setparameter("' + param + '", "' + value + '")');
}
};
webphone_api.getparameter = function (param)
{
InitializeHandler();
if (!isNull(webphoneframe))
{
return webphoneframe.webphone_api.getparameter(param);
}
PutToDebugLog(2, logtag + 'ERROR, getparameter webphoneframe is NULL');
};
webphone_api.setline = function (line, keeplastreal) { SendMessageToFrame('webphone_api.setline("' + line + '", "' + keeplastreal + '")'); };
//webphone_api.mysetline = function (line, keeplastreal) { SendMessageToFrame('webphone_api.mysetline("' + line + '")'); };
webphone_api.getline = function ()
{
InitializeHandler();
if (!isNull(webphoneframe))
{
return webphoneframe.webphone_api.getline();
}
PutToDebugLog(2, logtag + 'ERROR, getline webphoneframe is NULL');
};
webphone_api.isregistered = function ()
{
InitializeHandler();
if (!isNull(webphoneframe))
{
return webphoneframe.webphone_api.isregistered();
}
PutToDebugLog(2, logtag + 'ERROR, isregistered webphoneframe is NULL');
};
webphone_api.isincall = function ()
{
InitializeHandler();
if (!isNull(webphoneframe))
{
return webphoneframe.webphone_api.isincall();
}
PutToDebugLog(2, logtag + 'ERROR, isincall webphoneframe is NULL');
};
webphone_api.unregister = function () { SendMessageToFrame('webphone_api.unregister()'); };
webphone_api.reregister = function () { SendMessageToFrame('webphone_api.reregister()'); };
webphone_api.checkpresence = function (userlist) { SendMessageToFrame('webphone_api.checkpresence("' + userlist + '")'); };
webphone_api.setpresencestatus = function (statustring) { SendMessageToFrame('webphone_api.setpresencestatus("' + statustring + '")'); };
webphone_api.isencrypted = function ()
{
InitializeHandler();
if (!isNull(webphoneframe))
{
return webphoneframe.webphone_api.isencrypted();
}
PutToDebugLog(2, logtag + 'ERROR, isencrypted webphoneframe is NULL');
};
webphone_api.setsipheader = function (header) { SendMessageToFrame('webphone_api.setsipheader("' + header + '")'); };
// handle getvolume
var getsipheader_IFRAME = null;
webphone_api.getsipheader = function (header, callback)
{
getsipheader_IFRAME = callback;
SendMessageToFrame('webphone_api.getsipheader#' + header);
};
// handle getsipmessage
var getsipmessage_IFRAME = null;
webphone_api.getsipmessage = function (dir, type,callback)
{
getsipmessage_IFRAME = callback;
SendMessageToFrame('webphone_api.getsipmessage#' + dir + ',' + type + ',' + callback);
};
// handle ondisplay
var ondisplay_IFRAME = null;
webphone_api.ondisplay = function (callback)
{
ondisplay_IFRAME = callback;
SendMessageToFrame('webphone_api.ondisplay');
};
// handle getworkdir
var getworkdir_IFRAME = null;
webphone_api.getworkdir = function (callback)
{
getworkdir_IFRAME = callback;
SendMessageToFrame('webphone_api.getworkdir');
};
webphone_api.delsettings = function (level) { SendMessageToFrame('webphone_api.delsettings(' + level + ')'); };
webphone_api.getenginename = function ()
{
InitializeHandler();
if (!isNull(webphoneframe))
{
return webphoneframe.webphone_api.getenginename();
}
PutToDebugLog(2, logtag + 'ERROR, getenginename webphoneframe is NULL');
};
// handle getlastinvite
var getlastinvite_IFRAME = null;
webphone_api.getlastinvite = function (callback)
{
getlastinvite_IFRAME = callback;
SendMessageToFrame('webphone_api.getlastinvite');
};
// handle onLog
var onLog_IFRAME = null;
webphone_api.onLog = function (callback)
{
onLog_IFRAME = callback;
SendMessageToFrame('webphone_api.onLog');
};
webphone_api.getlogs = function ()
{
InitializeHandler();
if (!isNull(webphoneframe))
{
return webphoneframe.webphone_api.getlogs();
}
PutToDebugLog(2, logtag + 'ERROR, getlogs webphoneframe is NULL');
};
// handle getEvents
var getEvents_IFRAME = null;
webphone_api.getEvents = function (callback)
{
getEvents_IFRAME = callback;
SendMessageToFrame('webphone_api.getEvents');
};
webphone_api.getStatus = function ()
{
InitializeHandler();
if (!isNull(webphoneframe))
{
return webphoneframe.webphone_api.getStatus();
}
PutToDebugLog(2, logtag + 'ERROR, getStatus webphoneframe is NULL');
};
// handle getregfailreason
var getregfailreason_IFRAME = null;
webphone_api.getregfailreason = function (callback, extended)
{
getregfailreason_IFRAME = callback;
SendMessageToFrame('webphone_api.getregfailreason#' + extended);
};
function BtnClick()
{
/*
webphone_api.call('xxxxxx');
webphone_api.onCallStateChange(function (status, direction, peer, peername)
{
alert(status + '; direction: ' + direction);
});*/
}
var wpavailability_timer = null;
var mesage_queue_cache = [];
function SendMessageToFrame(msg)
{
try{
if (isNull(msg) || msg.length < 1)
{
PutToDebugLog(2, logtag + 'ERROR, SendMessageToFrame invalid message: ' + msg);
return;
}
var wpiframe = document.getElementById('webphoneframe');
if (isNull(wpiframe))
{
PutToDebugLog(2, logtag + 'ERROR, SendMessageToFrame [webphoneframe] not found');
return;
}
if (isNull(webphoneframe)) { webphoneframe = wpiframe.contentWindow; }
if (isNull(webphoneframe))
{
PutToDebugLog(2, logtag + 'ERROR, SendMessageToFrame webphoneframe is NULL');
return;
}
InitializeHandler();
// queue messages until webphone is loaded into the frame
if (typeof(mesage_queue_cache) === 'undefined' || mesage_queue_cache === null) { mesage_queue_cache = []; }
if (webphoneframe && wp_frame_is_loaded_and_ready === false && msg === 'initialize_connection')
{
webphoneframe.postMessage(msg, allowed_domain_i); //send the message and target URI
}
else if (webphoneframe && wp_frame_is_loaded_and_ready === true)// && webphoneframe.webphone_api && webphoneframe.webphone_api.HandleEventMessage)
{
webphoneframe.postMessage(msg, allowed_domain_i); //send the message and target URI
}else
{
PutToDebugLog(2, logtag + 'EVENT, SendMessageToFrame webphone not loaded yet, queue message: ' + msg);
mesage_queue_cache.push(msg);
//start timer for checking webphone frame window availability
StopQueueTimer();
wpavailability_timer = setInterval(function ()
{
try{
// handle queue
if (webphoneframe && wp_frame_is_loaded_and_ready === true)
{
InitializeHandler();
if (mesage_queue_cache.length > 0)
{
for (var i = 0; i < mesage_queue_cache.length; i++)
{
if (typeof(mesage_queue_cache[i]) === 'undefined' || mesage_queue_cache[i] === null || mesage_queue_cache[i].length < 1) { continue; }
PutToDebugLog(2, logtag + 'EVENT, SendMessageToFrame handle queued message: ' + mesage_queue_cache[i]);
webphoneframe.postMessage(mesage_queue_cache[i], allowed_domain_i); //send the message and target URI
}
mesage_queue_cache = [];
StopQueueTimer();
}else
{
StopQueueTimer();
}
}
} catch(errin)
{
PutToDebugLogException(2, logtag + "SendMessageToFrame wpavailability_timer", errin);
StopQueueTimer();
}
}, 50);
}
} catch(err) { PutToDebugLogException(2, logtag + "SendMessageToFrame", err); }
}
function StopQueueTimer()
{
if (typeof(wpavailability_timer) !== 'undefined' && wpavailability_timer !== null)
{
clearInterval(wpavailability_timer);
}
wpavailability_timer = null;
}
var initcounter = null;
var initcallednr = 0;
window.addEventListener("load", ParentWindowLoaded);
function ParentWindowLoaded()
{
StartInitCommTimer();
}
var wp_comminint_timer = null;
function StartInitCommTimer() // after page load, run this timer until we have access to iFrame
{
StopInitCommTimer();
wp_comminint_timer = setInterval(function ()
{
var wpfrm = document.getElementById('webphoneframe');
if (typeof(wpfrm) !== 'undefined' && wpfrm !== null && typeof(wpfrm.contentWindow) !== 'undefined' && wpfrm.contentWindow !== null)
{
StopInitCommTimer();
InitializeHandler();
return;
}
}, 150);
}
function StopInitCommTimer()
{
if (typeof(wp_comminint_timer) !== 'undefined' && wp_comminint_timer !== null) { clearInterval(wp_comminint_timer); }
wp_comminint_timer = null;
}
var flag_inithandlercalled = false;
function InitializeHandler()
{
try{
if (flag_inithandlercalled === true) { return; }
var wpfrm = document.getElementById('webphoneframe');
if (typeof(wpfrm) === 'undefined' || wpfrm === null || typeof(wpfrm.contentWindow) === 'undefined' || wpfrm.contentWindow === null)
{
return;
}
flag_inithandlercalled = true;
PutToDebugLog(2, logtag + 'EVENT, InitializeHandler, eventlistener attached to window');
webphoneframe = wpfrm.contentWindow;
// send a message to iframe, so it has the parent page to be able to send back message (initialize parent_page_i)
initcounter = setInterval(function ()
{
initcallednr++;
SendMessageToFrame('initialize_connection');
if (initcallednr > 10)
{
initcallednr = 0;
if (!isNull(initcounter)) { clearInterval(initcounter); }
initcounter = null;
}
}, 100);
function HandleMessageParent(event)
{
try{ try{
// if(event.origin !== allowed_domain_i) return;
if(isNull(event)) return;
if (typeof(event.data) !== 'undefined' && event.data !== null && event.data.toString().indexOf('_IFRAME') >= 0)
{
if (event.data.toString().indexOf('wploadedandready_IFRAME') >= 0)
{
PutToDebugLog(2, logtag + 'EVENT, onMessage: received message: webphone is loaded and ready');
wp_frame_is_loaded_and_ready = true;
return;
}
eval(event.data);
}
} catch(err) { PutToDebugLogException(2, logtag + "window.onmessage "+event.data, err); } //ERROR,iframe_webphone: window.onmessage ReferenceError: wploadedandready_IFRAME is not defined
} catch(err2) { PutToDebugLogException(2, logtag + "window.onmessage ex", err2); }
}
//listen to holla back
window.removeEventListener('message', HandleMessageParent, false);
window.addEventListener('message', HandleMessageParent, false);
} catch(err) { PutToDebugLogException(2, logtag + "InitializeHandler", err); }
}
var wp_frame_is_loaded_and_ready = false;
/** Helper functions*/
function isNull (variable) { try{ if (typeof (variable) === 'undefined' || variable === null) { return true; }else { return false; } } catch(err) { PutToDebugLogException(2, logtag + "isNull", err); } return true; }
function Trim(str){ try{ if (isNull(str) || str.length < 1) { return ''; } str = str.toString(); return str.replace(/^\s+|\s+$/g, ''); } catch(err) { PutToDebugLogException(2, logtag + "Trim", err); } return str;}
function PutToDebugLogException(level, msg, err) { PutToDebugLog(level, 'ERROR,' + msg + ' ' + err); }
function PutToDebugLog(level, msg) { if (msg.indexOf("ERROR") > -1) { try { console.error(msg); } catch (e1) { } }else { try { console.log(msg); } catch (e2) { } } }