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
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+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) { } } }
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+6
View File
@@ -0,0 +1,6 @@
JavaScript files for the webphone library.
These are the most important files for the webphone.
Changes in these files are not recommended, as it requires deep understanding of the webphone internals and VoIP/SIP/WebRTC technologies.
The webphone is compatible with all the popular browsers and also with most outdated/old browsers and it should work also with future browser releases.
The webphone library is actively maintained by MizuTech with new upgrades published periodically with bug fixes, improvements and new features.
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long