Sei sulla pagina 1di 62

System Integration

in ambito CTI
Una introduzione
Autore: Alessandro Romussi
INTERNAL USE ONLY

Settembre 2020

Internal use only


Il training
Obiettivi

- Introduzione terminologica (CTI, IVR, ASR, TTS..)


- Concetti di base (segnalazione, contenuto, eventi,
routing ...)
- Cenni di system integration

- Non è un training per una certificazione


- Non rende esperti dell’ambito
- Pur tentando una certa precisione, ci saranno delle
approssimazioni

- Interruzioni e approfondimenti sono i benvenuti

Le slide e il materiale sono a esclusivo uso interno e non sono distribuibili all’esterno dell’azienda.

Internal use only


Agenda
– Introduzione terminologica
– Telefonia, CTI, Contact Center, VOIP.
– System Integration e Vendor
– I nostri vendor, ruoli del system integrator
– Segnalazione
– Segnalazione e contenuto di una interazione
– Telefonia
– Processi fondamentali della telefonia, compiti del PBX.
– SIP
– Una chiamata semplice, analisi con Wireshark
– Eventi
– Request/response vs eventi; Alcuni call model: two-step transfer ; complete after consultation; predictive call with routing; agent-state
diagram.
– IVR
– Terminologia (IVR, TTS, ASR), VoiceXML.
– Barre telefoniche e third party application/server

3
Internal use only
System Integration
in ambito CTI
TERMINOLOGIA
Autore: Alessandro Romussi
USE INTERNAL ONLY

Settembre 2020

Internal use only


TERMINOLOGIA - Evitiamo un equivoco 1
Computer Telephony Integration (CTI)
– CTI è un termine ad ampio spettro di significati che comprende vari strumenti tecnologici che hanno lo
scopo di integrare il mondo telefonico (e per estensione di vari media) e i computer (o più in generale
strumenti informatici).
– Uno degli usi più comuni è legare l’identità/caratteristiche di un cliente alla chiamata. In particolare, il
trasporto di dati di business legati alla chiamata (esempio: l’identificativo del cliente) permette lo screen
pop/contestualizzazione del cliente sul CRM (Customer Relashionship Management), come anche
l’erogazione di servizi profilati sul cliente. Il CRM non è in generale parte del CTI.
– Usi importanti: distribuzione della chiamata (a.k.a. routing), reporting, interrogazione di sistemi del cliente,
controllo della registrazione, gestione del risponditore automatico….

– Lo scopo del cliente è efficacia ed efficienza nella trattazione del contatto mediante conoscenza acquisita
dai propri sistemi o chiedendola direttamente al cliente in near real time e l’uso a posteriori di informazioni
raccolte (reportistica, registrazione…) per monitorare i contatti e in taluni casi a scopo legale.

5
Internal use only
TERMINOLOGIA - Evitiamo un equivoco 2
Computer Telephony Integration (CTI)

CTI è una INTEGRAZIONE,


Non è un SISTEMA.
- Si sfruttano le possibilità di comunicazioni tra i vari sistemi, si ha a che fare con tanti sistemi diversi, si ha
che fare con tanti protocolli differenti, si usa una gran varietà di tecniche e tecnologie. Esempi di cose che
si incontrano:
- Tool del vendor per configurazione e gestione chiamata (routing & reporting)
- database (SQL, stored procedure, script..)
- Tecnologie web (Web services SOAP/XML/HTTP/TCP, servizi REST/HTTP/TCP o più correttamente JSON su
HTTP), HTML, javascript, XML, J2EE……
- Protocolli di segnalazione (SIP, SS7 –come nome, quasi mai nei fatti-, H.323 –Cisco –), multimediali (RTP, RTCP …)
- Codec (PCM, PCM a-law, PCM µ-law, G729……)
- Linguaggi di programmazione per lo sviluppo di customizzazioni, estensioni, tool voluti dal clienti…
- Applicazioni VoiceXML..

6
Internal use only
TERMINOLOGIA - Call Center/Contact Center

– La principale applicazione del CTI è il Contact Center. Le keywords spesso associate sono multicanalità (il
fruitore del servizio può decidere il canale di contatto –voce, mail, chat, sms, web…- non solo voce),
integrazione (gli applicativi/base dati sono integrati e l’operatore è in grado di portare a termine quanto
serve al cliente), efficienza/efficacia (misure sul tempo necessario per arrivare al termine della trattazione
–attenzione agli skill degli agenti –, ottimizzazione del tempo degli operatori, routing verso diversi
outsourcers).

7
Internal use only
TERMINOLOGIA - Telephony basics (very very basic…)
PSTN 1/2
– PSTN: Public Switched Telephony Network; originariamente era la rete mondiale dei sistemi telefonici
pubblici a commutazione di circuito. Posseduta da aziende pubbliche o private di interesse pubblico
coordinate da ITU (http://www.itu.int/en/Pages/default.aspx). Si è evoluta nel tempo nei protocolli e negli
usi ma ai nostri fini, si può vedere come la rete telefonica pubblica da cui giungono le chiamate al call
center (INBOUND) o verso cui escono le chiamate del call center (OUTBOUND).
– Nota. Commutazione di circuito (circuit switching): per iniziare una chiamata devo attivare un circuito che dura fino al termine della
chiamata stessa. È dunque di questo contesto (per lo più storico ma ancora utilizzato come concetto) la necessità di introdurre una
segnalazione per instaurare e terminare il circuito.

– Intelligent Network(IN)/Advanced Intelligent Network (AIN): architettura standard ITU per l’erogazione di
servizi a valore aggiunto dai nodi di rete (service layer) nell’ambito del protocollo di segnalazione SS7;
esempi: numeri verdi, avviso di chiamata…
- POTS: Plain Old Telephony Service; servizi tipici di base o di IN: numero di emergenza (112), Caller Id,
richiamata automatica, conferenze…

Pubblicità Progresso: http://www.museoscienza.org/dipartimenti/comunicazione/telecomunicazioni.asp

8
Internal use only
TERMINOLOGIA - Telephony basics (very very basic…)
PSTN 2/2

Numerazione: ITU E.174. Il trunk è il collegamento tra centrali telefoniche (PBX) in SS7.
PBX/PABX: Private Branch Exchange/Private Automatic Branch Exchange è una centrale
telefonica ad uso privato che separa e mette in comunicazione rete telefonica pubblica e rete
telefonica privata. Sempre più spesso la rete telefonica privata è VOIP. Il PABX fa da gateway o
può essere sostituito da un Voice Gateway.
9
Internal use only
TERMINOLOGIA - VOIP
Voice Over IP
– La comunicazione telefonica tradizionale era nata analogica.
– La digitalizzazione (mediante campionamento ed eventualmente compressione) del segnale consente
ottimizzazione delle risorse (Teoremi di Shannon e Teorema del campionamento di Nyquist-Shannon) e
l’uso delle reti a commutazione di pacchetto (nei nostri usi, basate su IP).

10
Internal use only
System Integration
in ambito CTI
Vendor e system integrator
Autore: Alessandro Romussi
INTERNAL USE ONLY

Settembre 2020

Internal use only


Vendor

Il principale vendor ASR/TTS.


Nuance ha acquisito altri vendor come
I nostri Vendor CTI Scansoft e Loquendo

Alcuni vendor di soluzioni di call recording.


I vendor CTI hanno spesso anche soluzioni per
la registrazione.

12
Internal use only
System integrator
Considerazioni generali
– Il system integrator è competente sui prodotti del Vendor. Per Genesys il s.i. deve essere certificato (le
persone devono sostenere periodicamente esami attestanti l’idoneità).
– Il legame tra s.i. e vendor è di partnership. Un partner è abilitato all’apertura di ticket di supporto (previa
un’analisi che individui malfunzionamenti o in generale il comportamento atteso del prodotto).
– Ci può essere conflitto di interessi tra la vendita di professional services da parte del Vendor e i servizi
della System Integrator.

13
Internal use only
Le attività del system integrator
Cenni su alcune attività del system integrator
– Prevendita (design di alto livello e stima economica di una nuova soluzione, compreso i costi di licenze e stime capacity). Skill
tecnici sulle soluzioni del Vendor, skill non tecnici. Collabora con la Vendita tra le cui fila sta usualmente il ruolo di Account
Manager. Risposta a bandi e RFP.
– Support e operation (due attività distinte): skill tecnici specialistici sulle soluzioni del Vendor, troubleshooting. Opportuna la
conoscenza delle customizzazioni ed estensioni. Sono attività di servizio continuativo più che di progetto.
– Progetti – Analisi: analisi funzionale e consulenza per l’implementazione di soluzioni in raccordo con il demand del cliente.
– Progetti - Piattaforma: installazione e configurazione delle soluzioni dei Vendor, routing, reporting. Forti skill tecnici sulle
soluzioni del Vendor e le varie capabilities.
– Progetti - Sviluppo: personalizzazioni e sviluppi custom con uso di codice (esempi: barre telefoniche, console varie di
amministrazione/controllo/reportistica). Skill su programmazione, analisi e design, skill tecnici sulle integrazioni con i prodotti del
Vendor e integrazione con database, web services, autenticazioni.
– Progetti – Sviluppo database: molti interventi prevedono accesso alle base dati delle soluzioni o disegno di soluzioni fortemente
orientate ai database. Skill: DB design, SQL, PSQL, TransactSQL.. Skill sulla soluzione del Vendor
– Progetti –QA: skill sulle soluzioni del Vendor, skill non tecnici, skill sui metodi, modelli e standard per QA, conoscenza
funzionale.
Molte delle attività sono comuni ai veri e propri progetti di trasformazione, che implicano un cambiamento nell’organizzazione del
clienti come anche al business as usual e a volte all’application maintanance.
Le attività riportate sono quelle di base: non sono le funzioni né sono per forza in corrispondenza 1 a1 con le figure normalmente presenti sul cliente; non sono citate ad esempio le figure di governance (PM…) né
descritto il Sales

14
Internal use only
Le attività del system integrator
Cenni su alcune attività del system integrator – considerazioni generali
– Per quasi ogni attività, è importante avere presente a grandi linee l’architettura software, il giro delle
informazioni e delle chiamate tra le varie componenti.

– Alla base delle attività del system integrator c’è la conoscenza delle esigenze del cliente e il lavoro di
consulenza: non si vendono solo licenze.
– La system integration CTI, più in Italia che all’estero, è caratterizzata da una grande quantità di software
custom o forti personalizzazioni. Ad oggi la tendenza, a volte più auspicata che realizzata, è quella
comunque di ricondursi, laddove è possibile, a prodotti.

15
Internal use only
System Integration
in ambito CTI
CONCETTI BASE - SEGNALAZIONE
Autore: Alessandro Romussi
INTERNAL USE ONLY

Settembre 2019

Internal use only


Signaling & Media - ruoli
Un esempio della vita quotidiana 1
John e Alice sono seduti tranquillamente ai loro PC, connessi a Internet e dotati di microfono/cuffie e Skype
for Business (o altro telefono VOIP).
– Quando John parla al microfono, la soundcard campiona (sampling) e codifica (encoding) la voce in un
bitstream; l’O.S. passa il bitstream al sw preposto (in questo caso S4B) prende il bitstream e lo
impacchetta (con eventuale re-encoding) in pacchetti IP (o meglio RTP/UDP/IP) e invia il payload con le
intestazioni neccessarie –mediato sempre dall’O.S.- via rete a Alice; i pacchetti IP avranno naturalmente
un indirizzo IP e port di destinazione (poniamo: 10.100.1.4:4445); in una configurazione peer-to-peer
particolarmente semplice –evitiamo cioè NAT, STUN, session border controller, gateway….quasi tutto-,
possiamo immaginare che l’IP sia l’’indirizzo IP del computer di Alice.
– Il computer di Alice (che ha una network card cui è assegnato 10.100.1.4) riceve i pacchetti IP sulla porta
su cui è in ascolto (4445), passa i pacchetti al sw che decodifica il payload e lo passa alla soundcard per il
play.
– L’informazione scambiata tra i John e Alice, in questo caso la voce, è spesso definita come media (anche
se in italiano sarebbe più corretto chiamarlo contenuto).
– I protocolli usati sono spesso riferiti come media transport protocol. RTP è un media transport protocol.

17
Internal use only
Signaling & Media - ruoli
Un esempio della vita quotidiana 2
Gli attori:
- Media transport protocol o real-time transport protocol per trasportare l’informazione utente
- Una applicazione nell’endpoint in grado di
- Catturare i campionamenti voce dal microfono e inviarli via rete usando un media transport protocol
- Ricevere i pacchetti del transport protocol, recuperare i campionamenti voce e inviarli alla soundcard,

Bastano questi due attori per avere una esperienza a tutti gli effetti
online?

18
Internal use only
Signaling & Media - ruoli
Un esempio della vita quotidiana 3
Nell’esempio, di fatto abbiamo assunto che John e Alice fossero già disponibili davanti al loro PC quando è
iniziata la comunicazione. Magari si erano messi d’accordo su data e ora…ma non è il massimo.

– Occorre un meccanismo con cui John può segnalare ad Alice che desidera iniziare una comunicazione
con lei (un invite nel protocollo SIP, per fare un esempio concreto o un I(nitial)A(ddress)M(essage) in SS7).
– Questo invito, in qualche modo, deve scatenare un qualche avvertimento, magari un suono di ring in cuffia
e John deve avere un’idea del progresso della chiamata (in SIP le risposte 100 – Trying e 180 – Ringing, o
AddressCompleteMessage in SS7).
– John deve sapere quando Alice ha accettato la comunicazione e può iniziare a parlare (risposta 200-OK in
SIP e AN(swer)M(essage) in SS7)
– Qualcuno dei due, infine, dovrà terminare la chiamata (in SIP richiesta BYE e risposta 200 OK, REL(ease)
e REL(ease)C(omplete) in SS7)
Di fatto questa è la segnalazione (o anche per estensione) call control.

Nota: i cenni a SS7 forse non serviranno mai ,ma illustrano che molti concetti base sono comuni tra telefonia digitale e analogica.

19
Internal use only
Signaling & Media - ruoli
Scopi primari della segnalazione
- Inizializzazione della sessione
- Termine della sessione
- Modifica dei parties della sessione (trasferta, conferenza…)
- Accordo sui CODEC da usare tra i parties e delle altre informazioni (porta RTP cui mandare lo stream ad
esempio)
- Addressing: come fa il sw di John a sapere dove mandare l’invito?
- Presence: come fa John a sapere se Alice è in linea?

20
Internal use only
Signaling & Media - ruoli

- Spesso, il traffico di segnalazione ha necessità di un mediatore (o proxy).


- Spesso, il traffico di contenuto è peer-to-peer.
- Nell’esempio importante della telefonia SIP, si usa RTP su UDP (più raramente TCP) su IP per il traffico media e
SIP su UDP (più raramenteTCP) su IP per il traffico di segnalazione.
- Segnalazione e media sono in qualche modo indipendenti. Prima del prevalere del SIP nel VOIP come
segnalazione, molte soluzioni prevedevano RTP per il media –come ora- e H.323, specifica ITU nata nel 1996,
per la segnalazione. Cisco ha un ruolo importante nella specifica H.323.
- Nell’ambito CTI, il rapporto con il protocollo di segnalazione è fondamentale. Di fatto CTI ha necessità spesso di
effettuare third party call control ossia agire come terzo nel controllare la telefonata e dunque interagire con il
protocollo di segnalazione. Genesys propone Genesys SIPServer che è sia un puro SIP Server Proxy sia un
server per l’integrazione.

21
Internal use only
Signaling & Media - ruoli
Estensioni
- Si può facilmente capire che il tenere separati i concetti di segnalazione e contenuto –separazione che è
mantenuta in gran parte del CTI- permette di costruire tutta una serie di applicazioni che consentono di
trattare alla stessa maniera voce, video, chat, routing di mail, routing di documenti….routing di una
qualunque cosa ruotabile avendo cura di definire dove andare a prendere o come trattare il contenuto.
- Ecco perché di fatto il CTI può essere usato sia per la telefonia che per molte altre interazioni con il
cliente.
- Genesys, ad esempio, utilizza il concetto di open media per definire una tipologia di oggetti ruotabili senza
curarsi troppo del contenuto; ha introdotto, a fianco del TServer per le interazioni voce, l’Interaction Server
che è il server che ha il compito di tenere lo stato delle interazioni («segnalazione» e macchina a stati
dell’interazione) e una miriade di altri server che di fatto interagiscono con l’Interaction Server per la
gestione di contenuti multimediali o comunque non strettamente telefonici (EmailServer, ChatServer
connettore Facebook, connettore Twitter…) fino a dare la possibilità al System Integrator di costuire server
custom (possibilità tecnica rimasta ma impedita a livello di licensing).
- In Genesys, la gestione del routing di tutti questi oggetti (voce, multimedia, altro…) sono fatti dagli stessi
server, che per la maggior parte dei casi trattano le interazioni alla stessa maniera. I server sono Universal
Routing Server e Orchestration Server (che a differenza di URS fa uso dello standard SCXML per il
controllo dell’interazione).

22
Internal use only
System Integration
in ambito CTI
CONCETTI BASE - TELEFONIA
Autore: Alessandro Romussi
INTERNAL USE ONLY

Settembre 2020

Internal use only


TELEFONIA - Processo telefonico
Processi fondamentali della telefonia (fine 1800)
- Answering a call: nella telefonia pubblica analogica la centrale applica un voltaggio 70/90 Volt al
circuito..nell’IP basta un invite () ..lo sventurato che è stato chiamato risponde.
- Identifying the caller: caller ID e ANI (Automatic Number Identification) è il numero chiamante. DNIS dialed
number identification service): è il numero chiamato
- Making a call: processo per iniziare una chiamata e comporre il numero (dial).
- Dialing: DTMF: dual tone multifrequency (e la rotella, non completamente in disuso nel mondo). 1=1209
Hz + 697 Hz. Nella telefonia digitale, spesso passano out of the band in segnalazione. Lo scopo originario
era aprire il circuito corrispondente alla cifra.
- Call progression: i call progression tones sono dial tone, ringing, ring-back, busy, fast busy, error
tone,…una predicitive dialing application CTI (i.e. progressive/predictive outbound) ha necessità di
comprendere questi toni; tipicamente, vi sono dei treatments per determinare il comportamento del
sistema in funzione del tono.
- Termination of a call: hang-up.

24
Internal use only
TELEFONIA– compiti del PBX/CommunicationServer 1
Funzioni frequenti (sono spesso demandate al CTI)
– ACD: Automatic Call Distribution. Controllo della distribuzione della chiamata agli agenti
– ANI: vedi slide precedente. L’uso dell’ANI è spesso fondamentale in CTI per il recupero delle informazioni del
cliente
– Call blocking/dial plan/digit translation: se e come consentire chiamate in uscita/entrata ed eventuali
trasformazioni del numero
– Call coverage/Ring No Answer (RONA): comportamento da tenere se un agente non risponde
– Call forwarding: ridirezione delle chiamate
– Call pickup: «rubare» la chiamata diretta a un altro nell’ambito dello stesso pickup group
– Camp on: continuare a chiamare una extension anche se il first party ha lasciato e poi ricontattare il first party
– Conference calling: aggiungere o rimovere party a una stessa chiamata. N.B.: in ambito SIP richiede la
presenza di una MCU (multipoint control unit per lo streaming, in Genesys StreamManager/MediaServer)
– DID (Direct Inward Dialing): extension (di solito in successione numerica) chiamabili direttamente dall’esterno.
Un sistema IVR in front rispetto alla rete pubblica (e dunque che risponde direttamente alle chiamate senza
passare dal controllo a valle del centralino) può far corrispondere una certa extension del DID a una
applicazione IVR.
– DOD (Direct Outward Dialing): è l’inverso del DID, ossia è in uscita. Non fa passare dai trunk di uscita ma
collega direttamente in rete pubblica.

25
Internal use only
TELEFONIA – compiti del PBX/Communication Server 2
Funzioni frequenti (sono spesso demandate al CTI)
– Directory: servizio di rubrica
– Hunt group: ordine di ricerca della prossima extension che deve rispondere quando l’extension
destinataria è occupata (funzionalità superata dal routing CTI)
– Last number dialed: ultimo numero chiamato
– Least Cost Routing: scegliere la modalità meno costosa per le chiamate
– Ringing e altri audio personalizzati
– Recorded announcements: annunci personalizzati
– Skills-Based Routing: gli agenti hanno differenti skill e diversi gradi di skill. Mandare la chiamata al giusto
agente.
– Speed dialing: digitazioni programmabili a scopo di ripetizione.
….

26
Internal use only
System Integration
in ambito CTI
CONCETTI BASE - SIP
Autore: Alessandro Romussi
INTERNAL USE ONLY

Settembre 2020

Internal use only


CONCETTI BASE - SIP
Session Initiation Protocol (SIP) Call Control
– Protocollo applicativo per la creazione e gestione di sessioni tra due o più parties. È nato con la RF 3261
(https://tools.ietf.org/html/rfc3261) e poi esteso con altre RFC. È nell’ambito dei protocolli Internet.
– Curiosità: non era nato per il VOIP ma per la gestione di presentazioni multiutente interattive.
– I call flow di base sono in https://tools.ietf.org/html/rfc3665.
– Il SIP è un protocollo peer-to-peer e l’unità fondamentale è lo User Agent che agisce sia da
– User Agent Client (UAC) per chiamare fuori
– User Agent Server (UAS) per ricevere chiamate. Il protocollo obbligherebbe l’UAS a mettersi in ascolto sia UDP che TCP per la
ricezione degli INVITE SIP.
Più esplicitamente, se John e Alice hanno ciascuno un Endpoint SIP (UA + parte per processare l’RTP) e conoscono l’indirizzo SIP
dell’altro (la standard port del SIP è 5060) potrebbe non servire altro.
Più spesso, serve un
- SIP Outbond Proxy: riceve richieste dagli UAC e gestisce la sessione SIP con il destinatario
- SIP Inbound Proxy: agisce come UAS per conto di altri UAS. Normalmente SIP Inbound Proxy e SIP Oubound Proxy sono insieme e
sono semplicemente «SIP Proxy», che gestiscono una sessione SIP con l’UAC chiamante e una con l’UAS destinatario.
- Registrar: accetta e gestisce le richieste SIP REGISTER che consentono di sapere a quale IP:PORT è raggiungibile un Endpoint.
In Genesys, il SIPServer è SIPProxy con anche Registrar capability (e salvataggio dell’indirizzo su Genesys Configuration Server)

28
Internal use only
CONCETTI BASE - SIP
Una chiamata semplice

29
Internal use only
CONCETTI BASE – tool utili
Wireshark
– Wireshark è un network protocol analyzer ( e anche packet sniffer) dotato di GUI con la possibilità di
filtrare sia in fase di cattura che in fase di lettura.
– È dotato di numerosi tool per l’analisi e la lettura, alcuni in particolare per il VOIP.
– Utile anche per individuare problemi di intercomunicabilità. Esempio: TLS handshake con scambio delle
cipher-suite non sempre compatibili.
– Per la cattura si avvale delle librerie libpcap (per UX) e WinPcap opp. Npcap (Win). Ilprimo porting di
libpcap per Windows (WinPcap, appunto) è stato fatto al Politecnico di Torino e tuttora gran parte del team
risiede in Italia. WinPcap non può sniffare in localhost per come funziona Windows e il tipo di API usate;
Npcap sì (utilizzare l’interfaccia Npcap Loopback Adapter).
– Open source (GNU General Public License version 2).
https://www.wireshark.org/

P.S.: un semplice tool per la cattura (non analisi) per Windows, senza possibilità di filtro, in grado di catturare traffico anche in localhost è RawCap
(http://www.netresec.com/?page=RawCap )

30
Internal use only
CONCETTI BASE - SIP
Una chiamata semplice (flussi catturato con Wireshark)

- Cattura con Wireshark –o tool equivalente es. tcpdump-


- Analisi e lettura, filtraggio
- Wireshark è uno dei tool più utili per il troubleshooting nelle comunicazioni di
rete

N.B: la chiamata tracciata è stata fatta da un sipendpoint, inviata a un routing point e da lì inviata a un altro sipendpoint residente sullo stesso host. Il numero di telefono dell’agente è 9013.
N.B.: tanti altri aspetti e protocolli andrebbero considerati: 3pcc, broadsoft extension, QOS, RTPC, sips, rtps……….

31
Internal use only
System Integration
in ambito CTI
CONCETTI BASE - EVENTI
Autore: Alessandro Romussi
INTERNAL USE ONLY

Settembre 2020

Internal use only


Mismatch modello eventi vs request/response
– Non posso sapere quando ricevo l’invito per una interazione.
– Questa banalità porta a dire che il modello web tradizionale per i client (request/response) non è
perfettamente adatto per il CTI.
– Il modello a aventi riguarda quasi ogni componente del CTI (eccezione notevole: applicazioni IVR).
– Modelli che forzano il request/response (i.e. polling) devono essere attentamente valutati nelle integrazioni
e nei sw custom. Questo è particolarmente vero per le cosiddette barre e in generale per gli applicativi che
devono avere una velocità di reazione near real time.
– L’implementazione a eventi è in genere più costosa dell’implementazione con il modello request/response
(se non altro per tecnologie, necessità di mantenere uno stato…)

33
Internal use only
Mismatch modello eventi vs request/response
– Il modello request/response è «io chiedo, tu rispondi»

34
Internal use only
Mismatch modello eventi vs request/response
– Il modello a eventi prevede che qualcuno chieda di generare un «evento» che venga distribuito per notifica
a chi è interessato.

– Il protocollo http/TCP (che pervade molte integrazioni) è stato pensato per il request/response.
– Più recenti estensioni ne hanno allargato il campo d’azione (WebSocket, Comet…).

35
Internal use only
Modello eventi: disaccoppiamento componenti
– L’ente preposto allo stato della chiamata e alla distribuzione degli eventi, comunica a tutti gli attori interessati. Ciascun attore
reagisce secondo la propria necessità. Le richieste (e dunque lo stato) sono gestite dall’ente preposto allo stato della chiamata
e alla distribuzione degli eventi.
Barra Genesys Tool
CRM Centralino
telefonica TServer reporting

RING
EventRinging

EventRinging

aggiorna GUI
conta

contestualizza

RequestAnswerCall

ANSWER

ANSWERED

EventEstablished

EventEstablished
aggiorna GUI
conta

– Esempio semplificato reale. Le frecce non piene sono messaggi asincroni (non bloccano il chiamante in attesa
di elaborazione del chiamato).
– Lo stato si aggiorna in seguito all’evento e non al comando. È spesso utile utilizzare un riferimento (referenceId)
per collegare comando e evento.
36
Internal use only
Oggetti fondamentali

Oggetti base che hanno uno stato in reazione agli eventi


– Agent: rappresenta l’agente
– DN: punto di applicazione della chiamata («numero di telefono»); esempi: i punti di applicazione delle
strategie (routing point in Genesys), l’oggetto con cui l’agente gestisce la chiamata.
– Call: lo stato della chiamata e tutte le sue capabilities. Per estensione, anche una interazione
multimediale.

37
Internal use only
Two step transfer Call Model
– Tratto da «Events and models,
reference manual», Genesys.
– Esempio di call flow (coinvolge
due chiamate, la principale –
connId 1- e la consultativa –
connID 2. Al termine del
completamento della trasferta, la
ConnID 2 non esiste più.

38
Internal use only
Conference Call Model
– Tratto da «Events and models,
reference manual», Genesys.
– Esempio di call flow (coinvolge
due chiamate, la principale –
connId 1- e la consultativa –
connID 2. Al termine del
completamento della conferenza,
la ConnID 2 non esiste più.

39
Internal use only
Predictive call with routing
– Tratto da «Events and models,
reference manual», Genesys.
– Esempio di call flow in cui la
chiamata outboud è ruotata ad
agente solo dopo essere stata
risposta

40
Internal use only
Agent state diagram
– Tratto da «Events and models, reference manual», Genesys.

41
Internal use only
System Integration
in ambito CTI
CONCETTI BASE - IVR
Autore: Alessandro Romussi
INTERNAL USE ONLY

Settembre 2020

Internal use only


IVR/TTS/ASR
Definizioni
– IVR non è propriamente CTI, ma usualmente il vendor CTI offre soluzioni IVR che si integrano in una certa
misura con i prodotti base. In realtà, specie nel passato, poteva capitare che ad esempio un cliente avesse
ad esempio CTI Genesys e IVR Avaya. Limitazioni e benefici di un approccio multivendor esulano da
questa trattazione. TTS/ASR sono spesso offerti dallo stesso Vendor che spesso non è il vendor CTI.
– IVR: Interactive Voice Response. «For sales press 1, for service press 2».
– TTS: Text To Speech. «Your credit is »(wave) «12» (TTS) «euro and »(wave) «10»(TTS) «cents» (wave»
– ASR: Automatic Speech Recognition. «For sales press 1 or say sales» e se il cliente dice «sales»
qualcuno lo deve capire.
– La costruzione di applicazioni vocali è un ambito che è in mano o al cliente stesso (con tool drag & drop o
comunque semplici da usare) e/o al System Integrator.
– Scopi: riduzione del tempo degli operatori (sempre meno sentito, viste le nuove tecnologie), self service,
intrattenimento durante l’attesa, disponibilità 24h/24 7/7, campagne outbound IVR (sempre meno e
problemi legali), recording, conferencing, gestione degli attached data prima di arrivare a operatore
(identificazione del cliente)...

43
Internal use only
IVR/TTS/ASR
Web browsing vs Voice browsing
– Ci si riferisce nell’immagine a Genesys Voice Platform ma il concetto è valido per ogni vendor.

44
Internal use only
IVR/TTS/ASR
Soluzione GVP 8.5 Genesys

45
Internal use only
IVR
VoiceXML
– https://www.w3.org/TR/voicexml20/ (la versione 2.0 è del 2004)
– Editors:
– Scott McGlashan, Hewlett-Packard (Editor-in-Chief)
– Daniel C. Burnett, Nuance Communications
– Jerry Carter, Invited Expert
– Peter Danielsen, Lucent (until October 2002)
– Jim Ferrans, Motorola
– Andrew Hunt, ScanSoft
– Bruce Lucas, IBM
– Brad Porter, Tellme Networks
– Ken Rehor, Vocalocity
– Steph Tryphonas, Tellme Networks

46
Internal use only
IVR
VoiceXML, modello architetturale
– (dalla specifica)

– Il «Document Server» della specifica è spesso una VoiceXML (web) application ospitata da un Application
Server che interagisce con i sistemi di backend tipicamente via rete (web service, interrogazioni a RDBMS..)

47
Internal use only
IVR
VoiceXML
<?xml version="1.0" encoding="UTF-8"?>
<vxml xmlns="http://www.w3.org/2001/vxml"
– Esempio «Hello World» (form) e esempio di menu
xmlns:xsi="http://www.w3.org/2001/XMLSchema-
<?xml version="1.0" encoding="UTF-8"?> instance"
<vxml xmlns="http://www.w3.org/2001/vxml" xsi:schemaLocation="http://www.w3.org/2001/vxml
xmlns:xsi="http://www.w3.org/2001/XMLSchema- http://www.w3.org/TR/voicexml20/vxml.xsd"
instance" version="2.0">
xsi:schemaLocation="http://www.w3.org/2001/vxml <form>
http://www.w3.org/TR/voicexml20/vxml.xsd" <field name="drink">
version="2.0"> <prompt>Would you like coffee, tea, milk, or
<form> nothing?</prompt>
<block>Hello World!</block> <grammar src="drink.grxml"
</form> type="application/srgs+xml"/>
</vxml> </field>
<block>
<submit
next="http://www.drink.example.com/drink2.asp"/>
</block>
</form>
</vxml>

48
Internal use only
IVR
VoiceXML, un esempio
– Cattura sulla macchina dell’application server («tcp.stream eq 8»)

49
Internal use only
IVR
Codec e transcoding
– Esistono molti modi per codificare l’audio e il video. Alcuni che capita di incontrare:
– G.711. Prevede l’uso di due algoritmi logaritmici alternativi: α-law e μ-law. Si ritrovano spesso scritto come
pcma e pcmu. In Europa e in gran parte del mondo si usa Alaw. Negli US e in Giappone si usa Mlaw.
– G.729. Codec compresso a pagamento (i diritti sono scaduti nel 2017). Frequentemente usato nel VOIP
per la poca banda richiesta.
– (tanti tanti altri)…..
– I media server hanno spesso la possibilità di effettuare il transcoding.
– Alcuni tool utili sono:
– Audacity (http://www.audacityteam.org/ ) per la manipolazione dei file audio
– VLC (https://www.videolan.org/vlc/index.it.html ) per la riproduzione (anche live) di flussi audio/video e la raccolta di
informazioni sui codec e i parametri usati.
– ffmpeg (https://www.ffmpeg.org/ ), tool versatile per convertire, registrare, fare lo streaming di audio e video.

50
Internal use only
System Integration
in ambito CTI
BARRE e THIRD PARTY APP
Autore: Alessandro Romussi
INTERNAL USE ONLY

Settembre 2020

Internal use only


Integrazioni, estensioni e customizzazioni
CTI & API
– Un CTI senza API riduce parecchio il ruolo del System Integrator ma anche limita enormemente le
possibilità dell’uso del CTI.
– In genere, a livello enterprise i Vendor consentono al system integrator di usare API (dunque librerie o
interfacce come i web service) per il controllo preciso della piattaforma. Molti server Genesys, ad esempio,
usano di fatto le stesse librerie che sono consegnate al System Intergrator per l’integrazione.
– Una altra forma di intervento consentito è la creazione di estensioni che rispettino determinate interfacce
per ampliare o modificare il comportamento di un prodotto out of the box (per esempio la possibilità di
aggiungere tasti, reagire in maniera personalizzata a eventi offerta da Genesys WDE).
– Altre forme di customizzazioni riguardano look & feel e localizzazione.
– Molti prodotti, poi acquisiti dai Vendor, sono nati come estensioni dei system integrators.

52
Internal use only
Third Party App

– Utilizzando le API dei vari server del Vendor si offrono funzionalità aggiuntive o migliorate rispetto a quelle
del Vendor.
– Esempi:
– Console/GUI di amministrazione/gestione/controllo
– Tool per le modifiche massive ad oggetti di configurazione
– Reporting custom
– Server per la creazione e gestione di interazioni (ad esempio, record per outbound progressive per soluzioni di Call
Me Back, soluzioni per l’inserimento di oggetti routabili non vocali)
– Gestione o interrogazione di registrazioni…

– Toolbar custom

53
Internal use only
Third Party App
Tecnologie usate frequentemente e aspetti comuni
– Web services:
– SOAP/http/TCP (https://www.w3.org/TR/soap/ ). Simple Object Access Protocol. Uso di messaggi XML per lo
scambio di oggetti (richieste e risposte). Esistono two-way operations(prevedono una risposta) e one-way operations
(prevedono una presa in carico). Le operations one-way sono utilizzati per la presa in carico di attività da svolgere in
maniera asincrona. I messaggi devono rispettare un contratto tra client e server definito da un documento XML in
WSDL (raccomandazioni W3C a https://www.w3.org/2002/ws/desc/ ). Esistono framework per la creazione di codice
client (spesso denominato stub) e codice server (spesso denominato skeleton) a partire dal WSDL e viceversa. Tool
estremamente utile per validare WSDL, richieste e risposte, costruire mock service, simulare client…è
SoapUI: https://www.soapui.org/
– Servizi basati su REST e JSON. REST= REpresentational State Transfer: il concetto base è la risorsa
(fonte di informazione) identificabile con una URI e uso delle primitive http (senza sovrastrutture come
SOAP) per la gestione; GET (recupero), PUT (creazione/sostituzione), POST (creazione di un
sottoelemento o modifica), DELETE (cancellazione). Si usa di solito JSON per la serializzazione degli
oggetti. Non esiste uno standard o una raccomandazione accettata sui cosiddetti RESTful services. L’uso
di JSON e delle primitive HTTP è fondamentale per la costruzione di GUI Web single page. Nota storica: il
termine REST nasce da una tesi di dottorato (Fielding, «Architectural Styles and the Design of Network-
based Software Architectures”, 2000). Tool utile: Postman Chrome Extension.
– Altri metodi di remote procedure call/remote method invocation: DCOM (Microsoft), EJB…

54
Internal use only
Third Party App
Tecnologie usate frequentemente e aspetti comuni
– Database relazionali
– l’accesso avviene mediante l’esecuzione di query SQL (o estensioni come stored proc, functions) mediate da
protocolli basati su TCP. In Java l’accesso fa uso di JDBC, specifica Java per la definizione di driver di accesso. I
Vendor database rilasciano i driver da includere nell’applicazione.

– LDAP Server
– Dati gerarchici in LDAP. Microsoft Active Directory (e non solo lui) struttura i dati di utenti, computer , gruppi, entità
varie gerarchicamente e consente la lettura e modifica mediante il protocollo LDAP. Un tool utile per l’interrogazione e
costruzione di query LDAP è AdExplorer (https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer ), parte
dell’immancabile Sysinternals Suite (https://docs.microsoft.com/en-us/sysinternals/downloads/sysinternals-suite )
– La parte di LDAP relativa al binding iniziale viene utilizzato spesso per l’autenticazione degli utenti anche in
applicazioni che non hanno bisogno di interrogare l’albero. In ambito di rete Microsoft è un modo comodo e semplice
per fare utilizzare la stessa password di dominio degli utenti.

–Protocolli custom o proprietari su TCP


– Frequentemente i Vendor (o i System Integrator) costruiscono protocolli basati sul TCP. Possono essere protocolli
testuali o binari.

55
Internal use only
Third Party App
Tecnologie usate frequentemente e aspetti comuni
– Tecniche e tecnologie di autenticazione e autorizzazione
– È un mondo vastissimo. Una delle richieste tipiche è il Single Sign On, più frequentemente il Silent Single Sign On.
La funzionalità può essere raggiunta mediante l’uso di Kerberos V5 (con la sua estensione SPNEGO per l’http) in
ambiente Intranet, framework e soluzioni a pagamento…
– Logging
– È fondamentale il logging per il troubleshooting. Esistono numerosi framework per il logging su file o altro destinatario
(syslog, server TCP..). Il logging su file, che non coinvolga cioè comunicazioni di rete, è fondamentale se non altro
per loggare la comunicazione di rete…
– Configurazione
– Tutte le third party app hanno un certo grado di configurabilità per l’inizializzazione della stessa e per il controllo delle funzionalità
senza dover modificare il codice. Varie possibilità: file, database, server di configurazione del Vendor, Active Directory….

56
Internal use only
Toolbar

– Le barre telefoniche sono le applicazioni usate dagli agenti per interagire con il CTI. In ambito VOIP,
spesso, le barre telefoniche sopperiscono al telefono vero e proprio che viene o incluso o nascosto:
l’agente non agisce direttamente sul telefono ma è mediato dalla barra con gli eventuali controlli ed
estensioni.
– Sono dette barre telefoniche perché spesso sono Windows Toolbar in grado di ridimensionare il desktop
dell’agente.
– Hanno le funzioni di
– Controllo delle chiamate
– Controllo dello stato agente
– Integrazione con il CRM
– (spesso) integrazione con le soluzioni di call recording
– (spesso) integrazione con sistemi di autenticazione e autorizzazione aziendali

57
Internal use only
Toolbar
«Web or not to Web»
– Dal punto di vista tecnologico, le toolbar sono di due tipi
– Applicazioni residenti sulla macchina dell’agente, tipicamente applicazioni Windows in C# o C++ oppure applicazioni
JAVA.
– Applicazioni basate su tecnologie Web che girano nel browser.

Le barre non web devono risolvere il problema della distribuzione del software, il problema della necessità di dialogare
con i server, difficoltà nel controllo centralizzato.
Le barre web devono risolvere il problema non banale di superare il modello request/response insito in http
(Comet/long live polling, WebSocket ..) e il problema del logging. Le barre Web (a meno dell’uso di componenti native o
estensioni del browser) non si trasformano in vere e proprie toolbar. Le barre Web devono tenere presente le limitazioni
native dei browser sulle comunicazioni tra siti che appaiono appartenenti a diversi domini.

I CRM, per la maggior parte ormai, sono web-based.

58
Internal use only
Toolbar
Integrazioni con CRM
– Le barre devono comunicare gli eventi fondamentali al CRM. Una delle feature fondamentali
dell’integrazione è lo «screen pop» o la contestualizzazione del chiamante nel CRM.
– Devono anche spesso poter accettare comandi dal CRM. Ad esempio, il click-to-dial.
– È in generale auspicabile un certo disaccoppiamento tra CRM e barra: entrambi devono poter vivere
indipendemente per ovviare nella maniera più efficiente a situazioni di contingency in cui una delle due
componenti ha problemi. Esistono tuttavia integrazioni in cui si prevedono consensi da parte del CRM per
compiere azioni (ad esempio loggarsi o fare telefonate in uscita) o situazioni molto accoppiate. Esistono
anche necessità particolari come fare azioni sul CRM in base a tasti della barra e viceversa. Per queste
ragioni, anche i prodotti (spesso, in questo caso, semilavorati) dei Vendor necessitano di interventi
significativi.
– In ogni caso, è auspicabile non avere integrazioni sincrone tra barra e CTI: attendere, per intenderci,
l’esecuzione dello screen pop sul CRM prima di consentire una qualunque azione sulla chiamata significa
aggiungere una dipendenza forte con le performance del CRM (attenzione, ad esempio, a chiamate
sincrone a funzioni javascript esposte dal CRM).
– In ogni caso, attenzione all’ordine degli eventi!

59
Internal use only
Toolbar
Alcune tecniche di integrazione CRM - barra
– Microsoft Component Object Model(ActiveX): tecnologia per la inter-process communication. La tecnologia
ActiveX (supportata da IE) non è supportata in Edge.
– Server http: la barra (in questo caso non Web) è dotato di un piccolo web server; il CRM (anche web)
interroga in localhost il client.
– Integrazioni server-to-server: la barra (web) comunica al server del CRM l’evento. Sarà cura del CRM
notificare la pagina. Attenzione all’ordine degli eventi e al traffico.
– Uso di bus in cui sia la barra sia il CRM sono client; uso di web socket mandatorio.
– HTML5 web storage: il salvataggio di una informazione nello storage genera un evento.

– Un tool di troubleshooting utile quando si comunica con un browser (anche in localhost): Fiddler.
https://www.telerik.com/fiddler

60
Internal use only
Q&A

Internal use only


Grazie

Internal use only

Potrebbero piacerti anche