Riquadro di visualizzazione custom per scalar
Tale riquadro offre ad una integrazione una funzionalità visiva di allarmistica mostrando dati completamente gestibili dall’integratore tramite un Widget e la relativa libreria SDK di AgentDesktop.
La soluzione ha reso disponibili alcune API all’interno di AgentDesktop Widget SDK al fine di poter aggiungere, togliere risorse e Scalar da monitorare, nonché visualizzare codice HTML generato:
AGENTDESKTOP.WIDGET. addMonitorScalar( ScalarID) : aggiunge uno Scalar da monitorare specificando il suo identificativo come numero
AGENTDESKTOP.WIDGET. removeMonitorScalar (ScalarID) : rimuove uno Scalar dal monitoraggio specificando il suo identificativo come numero
AGENTDESKTOP.WIDGET. addMonitorResource (ResourceID) : aggiunge una risorsa nell’elenco di quelle elencate dal monitoraggio
AGENTDESKTOP.WIDGET. removeMonitorResource (ResourceID) : rimuove una risorsa dall’elenco di quelle elencate dal monitoraggio
AGENTDESKTOP.WIDGET. startMonitorScalar : inizia il monitoraggio delle risorse/scalar.
AGENTDESKTOP.WIDGET. bindMonitorScalarCallback: collega una propria funzione di callback per la elaborazione dei dati ricevuti.
AGENTDESKTOP.WIDGET. unbindMonitorScalarCallback: scollega (non utilizza più) la funzione di callback registrata precedentemente.
AGENTDESKTOP.WIDGET.refreshMonitorScalarView(html) : aggiorna il riquadro nella parte superiore di AgentDesktop con il codice HTML passato come parametro
Scenario di utilizzo – AgentDesktop Widget SDK Sample
Si pensi ad uno scenario dove si vuole monitorare su alcuni Gruppi il tempo massimo di una chiamata in attesa.
Se superiore ad una soglia X si vuole far apparire un avviso nella parte alta dell’operatore che invita a prestare attenzione sulla operatività di un determinato Gruppo di lavoro.
L’esempio SDK è già stato aggiornato per supportare un tale scenario.
Si attiva in AgentDesktop Manager nell’elenco dei Widget del Profilo il Sample AGENTDESKTOP_WIDGET_SAMPLE
Si accede alla sezione “Get Scalar”.
Nella modalità predefinita AgentDesktop richiederà periodicamente i seguenti Scalar per tutte le Code dove risulta loggato l’operatore: Contatti Accodati, Agenti Loggati, in Pausa e Disponibili.
Vogliamo monitorare lo Scalar 30130 (tempo di attesa della chiamata entrata in coda da piu' tempo) e fornire un allarme visivo nel caso si superi una soglia massima per esempio di 5 sec.
Click su “Add Scalar” per aggiungere lo Scalar 30130 all’elenco delle Code monitorate.
Click su “Bind Monitor Callback” per agganciarsi una propria funzione che elaborerà i dati in tempo reale.
Alla callback personalizzata nel Widget verrà passata una struttura di tipo Hash Table contenente una struttura di chiavi duplice [ResourceID][ScalarID]:
All’interno della funzione di callback si analizzerà la HahTable e si provvederà a costruire un HTML che avvisa l’utente con un messaggio personalizzato.
Quando si vorrà fare scomparire il riquadro di avviso è sufficiente richiamare la API con stringa vuota come di seguito: AGENTDESKTOP.WIDGET.refreshMonitorScalarView("");
Di seguito il codice custom di analisi e valutazione degli Scalar
function MonitorScalar_callback(jQuery_eventType, data) {
// 30130 : Si vuole monitorare il tempo di attesa della chiamata entrata in coda da piu' tempo.
var keys = Object.keys(data);
var sHTML = "";
console.log("[DEBUG SDK]", data);
for (var i = 0; i < keys.length; i++) {
if (typeof data[ keys[i] ][30130] !== "undefined") {
if (data[ keys[i] ][30130].type === "time") {
// Tempo di attesa in Coda > 10 sec
if ( TimeStringToSecs( data[ keys[i] ][30130].value ) > 5 ) {
sHTML = "<p style='color: #d9534f;'><span class='fa fa-exclamation-triangle fa-3x' style='animation: text_blink 3s linear infinite'></span>" +
" <strong style='font-size: 12px; position: absolute;'>" +
"Chiamata in attesa da più di 5 sec sul Gruppo <br>" + AGENTDESKTOP.UTILS.GetResourceDevice(keys[i]) +
"</strong></p>";
AGENTDESKTOP.WIDGET.refreshMonitorScalarView(sHTML);
} else {
AGENTDESKTOP.WIDGET.refreshMonitorScalarView("");
}
}
}
}
};,
function TimeStringToSecs(str) {
var p = str.split(":");
var s = 0;
var m = 1;
while (p.length > 0) {
s += m * parseInt(p.pop(), 10);
m *= 60;
}
return s;
}