Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 21 Current »

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 1 - Il menu di accesso alla configurazione di un Widget in AgentDesktop Manager

I campi da compilare sono i seguenti:

Nome Campo

Descrizione

Esempio

Widget ID

Identificativo univoco del Widget al fine di renderlo facilmente referenziabile da altri Widget per consentire l’invio di notifiche e messaggi all'interno di AgentDesktop.

AGENTDESKTOP_MY_WIDGET

Widget Title

Titolo del Widget che verrà visualizzato in AgentDesktop nella barra laterale o nel tooltip in caso di configurazione di un Widget Multi-Contatto.

My Widget

Widget URI

URL della propria web-app da caricare. Può essere di tipo relativo nel caso l'applicazione venga ospitata sullo stesso server dove è presente AgentDesktop, oppure, grazie al supporto della funzionalità Post Message da parte della libreria SDK, può essere un indirizzo appartenente ad un dominio differente rispetto ad AgentDektop.

https://www.myapp.com

Widget Icon

Icona del Widget che verrà visualizzata in AgentDesktop. E' possibile utilizzare la collezione di icone di Font Awesome già disponibile in AgentDesktop. Fare riferimento al seguente link per disporre di una anteprima. https://fontawesome.com/v4.7.0/icons/

fa fa-lightbulb-o fa-2x

Figura 2 - La maschera di configurazione di un Widget in AgentDesktop Manager

Una volta configurato è necessario abilitarlo andando ad indicare quali Widget caricare e rendere quindi disponibili alla login dell’operatore su AgentDesktop. Nella sezione Profiles, scegliere il profilo a cui associare la visualizzazione del widget creato e nella parte relativa ai Widgets o MultiContact cliccare sul suo nome per portarlo nella colonna di quelli abilitati.

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:

    <!-- AgentDesktop SDK Widget -->
    <script type="text/javascript" src="/AD/widget/agentdesktop_widget.js"></script>

In questo modo si avrà a disposizione un namespace AGENTDESKTOP.
Con il namespace AGENTDESKTOP si potrà accedere ad una serie di oggetti e metodi che consentono di controllare le seguenti funzionalità:

  • 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:

<configuration>
  <system.webServer>
    <httpProtocol>
      <customHeaders>
        <add name="X-Frame-Options" value="ALLOW-FROM <CONTACT7_AGENTDESKTOP_DOMAIN>" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>

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:

<script type="text/javascript">
if (top.frames.length !== 0) { top.location=self.document.location; }
</script>

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

  • No labels