Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
10c1a9185b | |||
060889df69 | |||
0ac9f4d4ae |
@ -3,7 +3,7 @@
|
|||||||
// @author Daniel Triendl
|
// @author Daniel Triendl
|
||||||
// @namespace http://cp-solutions.at
|
// @namespace http://cp-solutions.at
|
||||||
// @copyright Copyright 2020 CP Solutions GmbH
|
// @copyright Copyright 2020 CP Solutions GmbH
|
||||||
// @version 3
|
// @version 6
|
||||||
// @grant GM.xmlHttpRequest
|
// @grant GM.xmlHttpRequest
|
||||||
// @grant GM.notification
|
// @grant GM.notification
|
||||||
// @include https://192.168.0.154:5001/webclient*
|
// @include https://192.168.0.154:5001/webclient*
|
||||||
@ -230,28 +230,89 @@ const tapi = {
|
|||||||
element.appendChild(form);
|
element.appendChild(form);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
extractNumber: (s) => {
|
||||||
|
var match = /(\+?[0-9]+)/.exec(s);
|
||||||
|
if (!match) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
number = match[1];
|
||||||
|
|
||||||
|
if (number.startsWith('+')) {
|
||||||
|
number = number.replace('+', '00');
|
||||||
|
}
|
||||||
|
return number;
|
||||||
|
},
|
||||||
|
|
||||||
showCallNotification: (element) => {
|
showCallNotification: (element) => {
|
||||||
var number = element.textContent;
|
var number = element.dataset.id;
|
||||||
var rx = /\+([0-9]+)/
|
console.log('TAPI call notification', number);
|
||||||
var match = rx.exec(number);
|
|
||||||
number = '00' + match[1];
|
number = tapi.extractNumber(number);
|
||||||
|
if (!number) {
|
||||||
|
console.log('TAPI callerid no number found');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log('TAPI searching callerid for', number);
|
||||||
GM.xmlHttpRequest({
|
GM.xmlHttpRequest({
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
url: 'http://cpatapi.cpsrvweb2016.cp-austria.at/callerid/' + encodeURIComponent(number),
|
url: 'http://cpatapi.cpsrvweb2016.cp-austria.at/callerid/' + encodeURIComponent(number),
|
||||||
onload: function (response) {
|
onload: function (response) {
|
||||||
console.log('TAPI Search response', response);
|
console.log('TAPI callerid response', response);
|
||||||
var callerId = JSON.parse(response.responseText);
|
|
||||||
var notification = {
|
var notification = {
|
||||||
text: number
|
text: number
|
||||||
};
|
};
|
||||||
if (callerId) {
|
if (response.status == 200) {
|
||||||
notification.text = callerId.tD_NAME + '\r\n' + number;
|
var callerId = JSON.parse(response.responseText);
|
||||||
|
if (callerId) {
|
||||||
|
notification.text = callerId.tD_NAME + '\r\n' + number;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
GM.notification(notification);
|
GM.notification(notification);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
callerIds: {},
|
||||||
|
|
||||||
|
showCallHistory: (element) => {
|
||||||
|
var span = element.querySelector('span');
|
||||||
|
var number = tapi.extractNumber(span.textContent);
|
||||||
|
if (!number) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (tapi.callerIds.hasOwnProperty(number)) {
|
||||||
|
span.textContent = tapi.callerIds[number].tD_NAME + ' ' + span.textContent;
|
||||||
|
} else {
|
||||||
|
GM.xmlHttpRequest({
|
||||||
|
method: 'GET',
|
||||||
|
url: 'http://cpatapi.cpsrvweb2016.cp-austria.at/callerid/' + encodeURIComponent(number),
|
||||||
|
context: span,
|
||||||
|
onload: function (response) {
|
||||||
|
var number = tapi.extractNumber(span.textContent);
|
||||||
|
var callerId = { 'tD_NAME': '' };
|
||||||
|
if (response.status == 200) {
|
||||||
|
callerId = JSON.parse(response.responseText);
|
||||||
|
}
|
||||||
|
tapi.callerIds[number] = callerId;
|
||||||
|
console.log('TAPI call histroy callerid response', number, response, callerId);
|
||||||
|
if (callerId.tD_NAME != '') {
|
||||||
|
var text = response.context.textContent;
|
||||||
|
response.context.textContent = callerId.tD_NAME;
|
||||||
|
var br = document.createElement('br');
|
||||||
|
var span2 = document.createElement('span');
|
||||||
|
span2.style.fontSize = "small";
|
||||||
|
span2.textContent = text;
|
||||||
|
response.context.parentNode.insertBefore(br, response.context.nextSibling);
|
||||||
|
response.context.parentNode.insertBefore(span2, response.context.nextSibling);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
waitForKeyElements('div.nav-search', tapi.createSearchBox, true);
|
waitForKeyElements('div.nav-search', tapi.createSearchBox, true);
|
||||||
waitForKeyElements('.toasterName', tapi.showCallNotification, false);
|
waitForKeyElements('call-view', tapi.showCallNotification, false);
|
||||||
|
waitForKeyElements('.call-history-list call', tapi.showCallHistory, false);
|
||||||
|
Reference in New Issue
Block a user