Wiki source code of Algoritmi
Show last authors
author | version | line-number | content |
---|---|---|---|
1 | = L'outbound__[[ >>path:#Loutbound_0]]__ = | ||
2 | |||
3 | L'outbound consiste nell'emissione di chiamate telefoniche eseguite dal sistema di contact center. In questo documento verranno esaminati i gli algoritmi di outbound presenti in **#phones**. Per una descrizione esaustiva dell'outbound consultare il seguente documento: __[[Outbound>>path:../input/hashphones.Outbound]]__. | ||
4 | \\\\ | ||
5 | |||
6 | = Agent Based__[[ >>path:#Agent_Based_1]]__ = | ||
7 | |||
8 | In questo tipo di __[[outbound>>path:../input/hashphones.outbound]]__ la richiesta di generazione della chiamata proviene direttamente dalla postazione dell'__[[operatore>>path:../input/hashphones.agenti#Operatore]]__. Ciò può avvenire in due modi: | ||
9 | |||
10 | * attraverso un __[[modulo applicativo>>path:../input/hashphones.personalizzare-phonesenterprise]]__ collegato con la __[[PhoneBar>>path:../input/hashphones.phonebar]]__ (noto come __[[Driver di PhoneBar>>path:../input/hashphones.personalizzare-phonesenterprise#DriverDiPhoneBar]]__); | ||
11 | * per azione diretta dell'__[[operatore>>path:../input/hashphones.agenti#Operatore]]__ che esegue __[[una chiamata manuale di outbound>>path:../input/hashphones.phonebar-howto#Fare_una_chiamata_di_outbound]]__ tramite la __[[PhoneBar>>path:../input/hashphones.phonebar]]__. | ||
12 | |||
13 | |||
14 | Le chiamate __[[outbound>>path:../input/hashphones.outbound]]__ "Agent Based" compiute con __[[modulo applicativo>>path:../input/hashphones.personalizzare-phonesenterprise]]__, possono essere generate in due modi: | ||
15 | |||
16 | * in automatico quando ad esempio il __[[Driver di PhoneBar>>path:../input/hashphones.personalizzare-phonesenterprise#DriverDiPhoneBar]]__ rileva che l'__[[operatore>>path:../input/hashphones.agenti#Operatore]]__ è in __[[stato disponibile>>path:../input/hashphones.agenti#Stati]]__ | ||
17 | * dietro esplicita richiesta dell'__[[operatore>>path:../input/hashphones.agenti#Operatore]]__. | ||
18 | |||
19 | |||
20 | In ogni caso il __[[modulo applicativo>>path:../input/hashphones.personalizzare-phonesenterprise]]__ deve interfacciarsi con la __[[PhoneBar>>path:../input/hashphones.phonebar]]__ per: | ||
21 | |||
22 | * inviare a **#phones** le richieste di generazione delle chiamate; | ||
23 | * per ricevere notifiche dell'esito. | ||
24 | |||
25 | |||
26 | Oltre a ciò, il __[[modulo applicativo>>path:../input/hashphones.personalizzare-phonesenterprise]]__ deve avere accesso anche ad una base dati centralizzata contenente i contatti da chiamare. | ||
27 | \\L'__[[outbound>>path:../input/hashphones.outbound]]__ "Agent Based" è poco efficiente per le seguenti ragioni: | ||
28 | |||
29 | * gli __[[operatori>>path:../input/hashphones.agenti#Operatore]]__ possono richiedere a **#phones** la generazione di una chiamata solo quando sono nello __[[stato di tipo disponibile>>path:../input/hashphones.agenti#Stati]]__. | ||
30 | * La chiamata generata è strettamente connessa all'__[[operatori>>path:../input/hashphones.agenti#Operatore]]__; ciò comporta un periodo di inattività che corrisponde a: | ||
31 | ** tempo impiegato dal sistema per l'attesa della risposta; | ||
32 | ** tempo impiegato dal sistema per il trasferimento della chiamata all'__[[operatore>>path:../input/hashphones.agenti#Operatore]]__ (senza contare i casi in cui il cliente non risponde). | ||
33 | |||
34 | |||
35 | Infine, la gestione del database dei contatti risulta essere distribuita sui PC degli __[[operatori>>path:../input/hashphones.agenti#Operatore]]__. Ciò comporta in genere dei problemi di accesso concorrente ai dati. | ||
36 | \\\\ | ||
37 | |||
38 | = Power Dialing__[[ >>path:#Power_Dialing_2]]__ = | ||
39 | |||
40 | L'algoritmo di **Power Dialing** funziona nel modo seguente: | ||
41 | |||
42 | 1. un __[[agente umano>>path:../input/hashphones.agenti#<u>AgenteUmano_]]__, assegnato ad una __[[campagna di #phones>>path:../input/hashphones.campagne]]__ di un __[[servizio di outbound>>path:../input/hashphones.servizi#ServiziOutbound]]__, entra nello __[[stato disponibile>>path:../input/hashphones.agenti#Stati]]__; | ||
43 | 1. lo __[[stato disponibile>>path:../input/hashphones.agenti#Stati]]__ dell'__[[agente umano>>path:../input/hashphones.agenti#</u>AgenteUmano_]]__ viene rilevato dal modulo __[[Predictive Dialer>>path:../input/hashphones.outbound#_ProgrammipresentisulserverPhonesEnterprise_]]__ che immediatamente chiede al __[[Dialer>>path:../input/hashphones.dialer]]__ di generare una nuova chiamata. | ||
44 | 1. Il __[[Dialer>>path:../input/hashphones.dialer]]__, a sua volta, richiede al __[[Contact Provider>>path:../input/hashphones.contact-provider]]__, di quel __[[servizio di outbound>>path:../input/hashphones.servizi#ServiziOutbound]]__, un nuovo contatto telefonico e quindi invia a **#phones** la richiesta di una nuova chiamata. | ||
45 | |||
46 | |||
47 | Il Power Dialing può essere eseguito in due modi: | ||
48 | |||
49 | * con preallocazione dell'__[[agente>>path:../input/hashphones.Agenti]]__: appena un __[[agente>>path:../input/hashphones.Agenti]]__ diventa __[[disponibile>>path:../input/hashphones.agenti#Stati]]__, il sistema lo impegna collocandolo in __[[stato di preassegnazione>>path:../input/hashphones.agenti#Stati]]__ (così non può ricevere altre chiamate). In seconda battuta viene generata una nuova chiamata che, se correttamente connessa (quando riceve una risposta da parte dell'utente), viene passata all' __[[operatore>>path:../input/hashphones.agenti#Operatore]]__ in __[[stato di preassegnazione>>path:../input/hashphones.agenti#Stati]]__; | ||
50 | * senza preallocazione dell'__[[agente>>path:../input/hashphones.Agenti]]__: la chiamata generata non è destinata obbligatoriamente all'__[[agente che è diventato disponibile>>path:../input/hashphones.Agenti#Stati]]__, ma può essere assegnata ad un qualunque __[[agente>>path:../input/hashphones.agenti]]__ della __[[campagna di #phones>>path:../input/hashphones.campagne]]__, purché __[[disponibile>>path:../input/hashphones.agenti#Stati]]__. Se l'__[[agente>>path:../input/hashphones.Agenti]]__ per il quale è stata generata la chiamata si mette in __[[pausa>>path:../input/hashphones.agenti#Stati]]__ o riceve una chiamata in ingresso, la telefonata può essere: | ||
51 | ** instradata ad un altro __[[agente disponibile>>path:../input/hashphones.Agenti#Stati]]__ | ||
52 | ** oppure collocata nella __[[campagna di coda>>path:../input/hashphones.campagne#Coda]]__ (se esiste). | ||
53 | |||
54 | |||
55 | Il Power Dialing consente di assicurarsi che tutte le chiamate generate possano essere trasferite ad un __[[agente>>path:../input/hashphones.agenti]]__ e quindi ricevano il trattamento previsto. In termini di operatività degli __[[operatori>>path:../input/hashphones.agenti#Operatore]]__ però, ha delle prestazioni inferiori rispetto al __[[Predictive Dialing>>path:#_PredictiveDialing_]]__. Infatti, visto che viene generata una nuova chiamata solo nel momento in cui un __[[agente diventa disponibile>>path:../input/hashphones.Agenti#Stati]]__, questo rimarrà inattivo per il tempo che il chiamato impiega a rispondere ed il sistema a trasferire la chiamata al telefono dell'__[[operatore>>path:../input/hashphones.agenti#Operatore]]__ stesso; quindi per un tempo che può essere anche di 15-20 secondi, ma che va ad aumentare sensibilmente nel caso in cui si abbia una sequenza di contatti che non rispondono o sono occupati. | ||
56 | \\\\ | ||
57 | |||
58 | = Predictive Dialing__[[ >>path:#Predictive_Dialing_3]]__ = | ||
59 | |||
60 | L'algoritmo di **Predictive Dialing** si occupa, tramite previsioni statistiche, di determinare quando e quante chiamate generare, al fine di ottimizzare il rendimento degli __[[agenti>>path:../input/hashphones.agenti]]__ del contact center. L'algoritmo di Predictive Dialing si pone come obiettivo quello di prevedere la conclusione delle chiamate in corso e di generare quelle nuove quando gli __[[agenti sono ancora in conversazione>>path:../input/hashphones.agenti#Stati]]__. Così non appena un __[[operatore>>path:../input/hashphones.agenti#Operatore]]__ __[[diventa disponibile>>path:../input/hashphones.Agenti#Stati]]__, esiste già una chiamata pronta che può essere trasferita a lui. | ||
61 | \\Per poter predire la fine delle chiamate, il modulo di Predictive Dialing tiene costantemente sotto controllo lo __[[stato degli operatori (disponibile, in conversazione, in pausa , ecc...)>>path:../input/hashphones.agenti#Stati]]__, la durata delle telefonate e gli esiti delle stesse (risposte, occupate, non risposte). In base a tutti i dati disponibili e ad un sofisticato algoritmo basato su calcoli statistici, il Predictive Dialing determina il momento in cui chiedere al __[[Dialer>>path:../input/hashphones.outbound#_ProgrammipresentisulserverPhonesEnterprise_]]__ di generare una nuova chiamata. | ||
62 | \\Va osservato che l'algoritmo effettua normalmente un overbooking di chiamate per tenere conto delle chiamate occupate e non risposte. Vista la natura puramente statistica delle previsioni, mediamente le chiamate vengono fatte nel momento ritenuto più adatto; tuttavia non sono esclusi brevi momenti in cui non vi sono chiamate pronte per essere trasferite agli __[[operatori disponibili>>path:../input/hashphones.agenti#Stati]]__, e momenti in cui vengono generate chiamate in surplus rispetto al numero di __[[operatori disponibili>>path:../input/hashphones.agenti#Stati]]__. Le chiamate in eccesso vanno gestite con i __[[criteri di coda.>>path:../input/hashphones.campagne-di-phones-proprieta#_SchedaCoda_]]__ | ||
63 | \\Lo scopo dell'algoritmo di Predictive Dialing è quello di minimizzare due valori al fine di aumentare l'operatività del contact center: | ||
64 | |||
65 | * il tempo di attesa di una chiamata da parte di un __[[agente nello stato disponibile>>path:../input/hashphones.Agenti#Stati]]__. | ||
66 | * il tempo di attesa in coda di una persona chiamata da **#phones** (oppure il numero di chiamate a cui viene dato occupato nel caso in cui non esista la coda sull'__[[outbound>>path:../input/hashphones.outbound]]__). | ||
67 | |||
68 | |||
69 | I due parametri sono legati tra di loro e la scelta su quale dei due privilegiare è del tutto soggettiva: dipende dal tipo di clientela chiamata. L'algoritmo di Predictive Dialing può essere facilmente regolato tramite due parametri, i cui valori sono compresi tra 0 e 1000, appartenenti alle __[[proprietà del servizio di outbound>>path:../input/hashphones.servizi-le-proprieta#_SchedaPacing_]]__: | ||
70 | |||
71 | * __[[Tipo>>path:../input/hashphones.outbound#Tipo]]__: indica quanto influisce negativamente avere __[[agenti disponibili>>path:../input/hashphones.agenti#Stati]]__ senza chiamate da trasferire loro. Un valore prossimo allo "0" indica all'algoritmo che è tollerato avere __[[agenti>>path:../input/hashphones.agenti]]__ in attesa prima di ricevere un chiamata; cioè ci si trova in una situazione simile al __[[Power Dialing>>path:#_PowerDialing_]]__, nel quale vengono effettuate chiamate solo quando si è certi di avere un __[[agente>>path:../input/hashphones.Agenti]]__ a disposizione. Al contrario, valori alti del parametro inducono a generare un numero di chiamate superiore a quelle necessarie per cercare di impegnare il più possibile gli __[[agenti>>path:../input/hashphones.agenti]]__. | ||
72 | * __[[Costo di cancellazione>>path:../input/hashphones.outbound#_Costodicancellazione_]]__: indica quanto influisce negativamente avere chiamate a cui viene dato l'occupato (o che vengono messe in attesa) a fronte di __[[agenti tutti in conversazione>>path:../input/hashphones.agenti#Stati]]__. Valori prossimi allo "0" indicano all'algoritmo che avere clienti che finiscono in coda non è considerato grave; valori alti spingono l'algoritmo a ridurre il numero di chiamate, appunto per ridurre le possibilità che un cliente finisca in coda. | ||
73 | |||
74 | |||
75 | Questi due parametri sono di natura empirica e consentono all'__[[utente di #phones>>path:../input/hashphones.glossario#_Utente_]]__ di influire sulla configurazione del programma. Non esiste una regola generale che permetta di decidere a priori i valori da assegnare a questi parametri. Sebbene l'algoritmo possa auto-regolarsi per quel che riguarda i parametri deterministici (il numero di __[[operatori>>path:../input/hashphones.agenti#Operatore]]__, durata media delle chiamate), non può fare altrettanto per quel che riguarda l'esito della chiamata che si sta per generare (se verrà risposto o meno, dopo quanto verrà risposto, ecc...). Solo sulla base dell'esperienza di utilizzo del sistema è possibile avere delle indicazioni relative ai parametri, che dipenderanno dal tipo di clienti che si hanno a quella determinata ora, in quel determinato giorno. Con il Predictive Dialing si rende quindi necessario avere una persona che si occupi di calibrare periodicamente i parametri, sulla base della produttività del contact center che si verifica in quel determinato momento. | ||
76 | \\\\\\ | ||
77 | |||
78 | __[[Top>>path:#PageTop]]__ |