...
Configurazione di un Widget
Per poter essere caricato in AgentDesktop, il Widget deve prima essere configurato in AgentDesktop Manager. Esistono due sezioni distinte dove configurare un nuovo Widget sulla base che si voglia creare un Widget di primo livello o si voglia averlo a disposizione singolarmente su ciascun contatto in gestione all’interno del Widgetdi sistema Multi-Contatto.
...
Figura 3 - La abilitazione di un Widget
Integrazione della libreria SDK all’interno del Widget
Per consentire la comunicazione bidirezionale della propria web-application con AgentDesktop è necessario caricare la libreria di sviluppo AgentDesktop SDK:
...
Gestione dei Tab/Schede dei singoli Widget di AgentDesktop (AGENTDESKTOP.TAB),
Visualizzazione di finestre/pannelli informativi custom (AGENTDESKTOP.ALERT),
Controllo dei Widget, registrazione di proprie callback per la notifica di eventi (AGENTDESKTOP.WIDGET),
Gestione dei Contatti, effettuare chiamate, eseguire trasferimenti (AGENTDESKTOP.CONTACT),
Gestione dello stato e della schedulabilità di un operatore (AGENTDESKTOP.AGENT),
Gestione di un contatto di tipologia chat, invio di un messaggio testuale (AGENTDESKTOP.CHAT),
Gestione e notifica degli eventi relativi all'apertura/chiusura delle finestre di dialogo in AgentDesktop (AGENTDESKTOP.UI).
Eventi e
...
Notifiche
Gli eventi notificati da AgentDesktop verso l'SDK hanno una struttura JSON, in cui la proprietà "event" descrive l'evento stesso. Nel corso della gestione di un contatto telefonico, chat o multimediale la integrazione dovrà aspettarsi una sequenza di notifiche di eventi che identificheranno le fasi di vita del contatto stesso.
Gli eventi si distinguono tra eventi legati al media telefonico/chat ed eventi legati alla schedulabilità o stato logico dell’operatore loggato.
Eventi sul media
Nome Evento | Descrizione |
---|---|
CONNECTIONSTARTED | Segnala l’impegno del media telefonico al fine di gestire un contatto |
RINGING | Il media telefonico sta squillando |
DIALING | Il media telefonico sta componendo una numerazione uscente |
DATACHANGED | Uno o più CallData associati al Contatto ha cambiato valore |
ESTABLISHED | In un contatto telefonico o chat indentifica il momento in cui cliente ed operatore vengono messi in comunicazione |
HELD | La chiamata in gestione sul media telefonico è stata messa in attesa |
RETRIEVED | La chiamata in gestione sul media telefonico è stata tolta dalla attesa |
CONNECTIONCLEARED | Il contatto è stato terminato facendo concludere la fase di gestione online |
Eventi ACD
Nome Evento | Descrizione |
---|---|
JOBSCHEDULED | Segnala che l’operatore è stato schedulato dal sistema per gestire un contatto |
JOBCHANGED - Setup | Identifica la fase di ingaggio dell’operatore. In AgentDesktop viene proposto il POPUP Accetta/Rifiuta |
JOBSTARTED - Online | E’ iniziata la fase Online del contatto. Operatore e cliente sono stati messi in comunicazione. |
JOBCHANGED - Offline | Identifica l’inizio della fase di gestione Offline (After Call Work) del Contatto a seguito della chiusura della telefonata |
JOBFINISHED | Identifica il termine della gestione di un Contatto e la conclusione dell’eventuale stato di Offline del contatto (After Call Work) |
L’evento “POPUP”
L’evento POPUP non corrisponde a nessuna segnalazione SIP/CTI relativa al Contatto e a nessun cambio di stato logico dell’Operatore bensì è evento «artificiale» generato da AgentDesktop.
POPUP è generato internamente da AgentDesktop ed identifica con certezza l'ingresso e quindi la presa in gestione di un contatto sulla postazione comunicando di conseguenza ad una integrazione da quale istante temporale è possibile eseguire alcune operazioni come la contestualizzazione del contenuto del proprio Widget.
Eventi Operatore
Nome Evento | Descrizione |
---|---|
LOGGEDIN | L’operatore è disponibile per ricevere contatti compatibilmente allo stato del media (libero/occupato) e ai Gruppi di lavoro associati |
PAUSE | L’operatore è entrato nello stato di pausa generica. Non verrà schedulato su nessuna tipologia di contatto |
PAUSESUBSTATE [1701] | L’operatore è entrato in un sottostato di pausa. A fianco viene riportato il codice del sottostato |
FORCED | L’operatore è entrato in Pausa Forzata a seguito di una mancata risposta per timeout ad un contatto |
LOGGEDOUT | L’operatore si è sloggato da AgentDesktop in modo esplicito o chiudendo il browser |
Struttura JSON dell’evento
L’oggetto che descrive l’evento notificato verso le integrazioni dispone di una serie di proprietà che descrivono la natura dell’evento stesso ed i dati significativi del contatto:
Nome Proprietà | Descrizione | Valori possibili |
---|---|---|
event | Nome simbolico dell’evento che identifica la sua appartenenza alla tipologia di risorsa che lo ha generato (media, operatore, sistema CTI) | stringa |
id | Identificativo CT7 del contatto | stringa |
uuid | Identificativo univoco del contatto | stringa |
chat_id | Identificativo interno della chat (Vivocha o CTLive) | stringa |
type | tipologia del contatto | inbound | outbound | callTask | internal |
media_type | tipologia del media, canale telefonico, chat o multimediale | telephony | chat | channel |
content_type | categorizzazione di un contatto multimediale con media_type=”channel” | email | object |
content_description | Informazioni aggiuntive sul contatto multimediale (channel). Per esempio per una email può contenere l’oggetto o subject. | stringa |
job_type | Indica se il contatto è gestito dal sistema CTI e la sua tipologia | inbound | manual | outbound | previewAgent | previewQueue | predictive |
job_state | Identificato lo stato del contatto in gestione dal CTI | online | offline |
service | Per una chiamata schedulata dal sistema identifica il servizio di accodamento | stringa |
ani | Chiamante | stringa |
dnis | Chiamato | stringa |
queue | Gruppo di lavoro dove è stato accodato il Contatto prima di essere assegnato all’operatore | stringa |
reason | Esito di fine chiamata |
|
isACD | Indica se è un contatto gestito dal sistema CTI oppure un job manuale (chiamata manuale uscente , chiamata tra interni) | boolean |
startTime | TimeStamp di quando il contatto ha ricevuto l’ESTABLISHED (in conversazione, online) | timestamp in numero di millisecondi a partire dalla Unix Epoch |
endTime | TimeStamp di quando il contatto ha ricevuto l’evento di CONNECTIONCLEARED (fine conversazione, offline) | timestamp in numero di millisecondi a partire dalla Unix Epoch |
offlineStartTime | TimeStamp di quando il contatto ha iniziato la fase Offline o AfterCallWork | timestamp in numero di millisecondi a partire dalla Unix Epoch |
offlineEndTime | TimeStamp di quando il contatto ha completato la fase di Offline o AfterCallWork. Coincide con la ricezione dell’evento JOBFINISHED. | timestamp in numero di millisecondi a partire dalla Unix Epoch |
Requisiti per l’integrazione di un Widget
La possibilità di integrazione di un applicazione web all'interno di AgentDesktop utilizzando i Widget è soggetta ad alcune requisiti.
X-Frame-Options
Molti amministratori di sistema impostano alcune protezioni di sicurezza all’interno della pagine che costituiscono la loro web-application o CRM con l’intento che le loro pagine web non possano essere utilizzate da altre applicazioni e caricate in elementi come frames/iframes al fine di essere servite da pagine provenienti da altri domini non autorizzati. Questa tecnica solitamente è denominata "framesniffing".
A titolo di esempio viene riportata una configurazione relativa ad IIS per la abilitazione del'header "X-Frame-Options" e consentire il caricamento della propria web-app all’interno di un Widget di AgentDesktop:
...
Le altre due opzioni di configurazione possono essere: SAMEORIGIN o DENY.
Controllo della TOP window
Alcune applicazioni web verificano se sono incluse in un iframe, in qual caso cercano di ricaricarsi sostituendo la pagina principale.
Un esempio di questo codice è come segue:
...
In questo caso, si dovrà modificare il codice per permettere l'inclusione in un iframe se la finestra padre della propria web-app appartiene al domino applicativo di ContaCT7.
Passaggio di credenziali ad AgentDesktop con SingleSignOn personalizzata
E' possibile indicare per mezzo di un querystring specificato nell’indirizzo della Toolbar le eventuali credenziali di accesso ad AgentDesktop nel caso si utilizzi un sistema di Single Sing On personalizzato. La validazione dello username verrà eseguita dalla applicazione custom definita in EasyCIM.
http://<contact_ecas_server>/AD/AD.html?username=agent1&token=xyz