2 Commits

Author SHA1 Message Date
10c1a9185b Improve call history 2020-11-04 15:04:21 +01:00
060889df69 Show names in call history 2020-11-04 13:05:34 +01:00

View File

@ -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 4 // @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,39 +230,89 @@ const tapi = {
element.appendChild(form); element.appendChild(form);
}, },
showCallNotification: (element) => { extractNumber: (s) => {
var number = element.dataset.id; var match = /(\+?[0-9]+)/.exec(s);
console.log('TAPI call notification', number);
var rx = /(\+?[0-9]+)/;
var match = rx.exec(number);
if (!match) { if (!match) {
console.log('TAPI callerid no number found'); return undefined;
return;
} }
number = match[1]; number = match[1];
if (number.startsWith('+')) { if (number.startsWith('+')) {
number = number.replace('+', '00'); number = number.replace('+', '00');
} }
return number;
},
showCallNotification: (element) => {
var number = element.dataset.id;
console.log('TAPI call notification', number);
number = tapi.extractNumber(number);
if (!number) {
console.log('TAPI callerid no number found');
return;
}
console.log('TAPI searching callerid for', number); 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 callerid response', response); console.log('TAPI callerid response', response);
var callerId = JSON.parse(response.responseText);
var notification = { var notification = {
text: number text: number
}; };
if (response.status == 200) {
var callerId = JSON.parse(response.responseText);
if (callerId) { if (callerId) {
notification.text = callerId.tD_NAME + '\r\n' + number; 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('call-view', tapi.showCallNotification, false); waitForKeyElements('call-view', tapi.showCallNotification, false);
waitForKeyElements('.call-history-list call', tapi.showCallHistory, false);