diff --git a/3CX_TAPI.user.js b/3CX_TAPI.user.js index 0c6421d..39b8da9 100644 --- a/3CX_TAPI.user.js +++ b/3CX_TAPI.user.js @@ -3,7 +3,7 @@ // @author Daniel Triendl // @namespace http://cp-solutions.at // @copyright Copyright 2020 CP Solutions GmbH -// @version 4 +// @version 5 // @grant GM.xmlHttpRequest // @grant GM.notification // @include https://192.168.0.154:5001/webclient* @@ -230,27 +230,38 @@ const tapi = { element.appendChild(form); }, - showCallNotification: (element) => { - var number = element.dataset.id; - console.log('TAPI call notification', number); - var rx = /(\+?[0-9]+)/; - var match = rx.exec(number); + extractNumber: (s) => { + var match = /(\+?[0-9]+)/.exec(s); if (!match) { - console.log('TAPI callerid no number found'); - return; + return undefined; } - number = match[1]; if (number.startsWith('+')) { 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); GM.xmlHttpRequest({ method: 'GET', url: 'http://cpatapi.cpsrvweb2016.cp-austria.at/callerid/' + encodeURIComponent(number), onload: function (response) { console.log('TAPI callerid response', response); + if (response.status != 200) { + return; + } var callerId = JSON.parse(response.responseText); var notification = { text: number @@ -261,8 +272,42 @@ const tapi = { GM.notification(notification); } }); + }, + + callerIds: {}, + + showCallHistory: (element) => { + var span = element.querySelector('span'); + var number = tapi.extractNumber(span.textContent); + console.log('TAPI call histroy number found', number) + if (tapi.callerIds.hasOwnProperty(number)) { + span.textContent = tapi.callerIds[number].tD_NAME + ' ' + span.textContent; + } else { + //http://celestia.fim.trellmor.com:62406/callerid/ + //http://cpatapi.cpsrvweb2016.cp-austria.at/callerid/ + GM.xmlHttpRequest({ + method: 'GET', + url: 'http://cpatapi.cpsrvweb2016.cp-austria.at/callerid/' + encodeURIComponent(number), + context: span, + onload: function (response) { + console.log('TAPI call histroy callerid response', response); + if (response.status != 200) { + return; + } + var callerId = JSON.parse(response.responseText); + var number = tapi.extractNumber(span.textContent); + tapi.callerIds[number] = { 'td_NAME': '' }; + if (callerId) { + tapi.callerIds[number] = callerId; + response.context.textContent = callerId.tD_NAME + ' ' + response.context.textContent; + } + } + }); + } } + }; waitForKeyElements('div.nav-search', tapi.createSearchBox, true); waitForKeyElements('call-view', tapi.showCallNotification, false); +waitForKeyElements('.call-history-list call', tapi.showCallHistory, false);