BLIND TRANSFER & ATTENDED TRANSFER
Trasferimento di
chiamata cieco e assistito sono le due modalita' di trasferimento messe a
disposizione da asterisk. Fermo restando che i telefoni SIP sono spesso in grado
di gestire in autonomia il trasferimento di chiamata, con questa funzionalita'
"server side" e' possibile utilizzare il trasferimento di chiamata anche con
terminali SIP che non supportano tale opzione.
Il trasferimento cieco e' un trasferimento diretto del chiamante ad
un destinatario, che riceve la chiamata direttamente senza interloquire con
l'operatore. Nel trasferimento assistito invece il chiamato interloquisce con
l'operatore e poi l'operatore decide se passare o meno la chiamata.
La configurazione lato centrale di queste opzioni passa per
l'editing del file "/etc/asterisk/features.conf" che deve avere configurati i
parametri basilari come a seguire:
; IMPORTANTE: NEL BLINDXTRANSFER LA CORNETTA VA ABBASSATA DOPO CHE IL PBX
DISCONNETTE E NON
; DOPO AVER DIGITATO L'INTERNO, ALTRIMENTI PUO' RIENTRARE NEL
TRANSFERDIGITTIMEOUT
; E SI PERDE LA CHIAMATA IN ATTESA
transferdigittimeout => 2 ; Number of seconds to wait between digits
when transferring a call; (default is 3 seconds)
atxfernoanswertimeout = 12 ; Timeout for answer on attended transfer default is
15 seconds.
[featuremap]
blindxfer => 5 ; Blind transfer (default is #)
atxfer => 7 ; Attended transfer
Notate i 12 secondi dell'atxfernoanswertimeout. Se il
chiamato non risponde entro questo tempo automaticamente si torna in linea col
chiamante.
Se abbassate la cornetta dopo aver passato una chiamata invece di attendere,
come si deve fare con l'attended transfer, il chiamante non sente la musica di
attesa nonche' l'audio dell'interno che squilla. Questo puo' essere interpretato
come "linea caduta" specialmente se il chiamato non risponde subito. In tali
casi infatti va utilizzato il blindtransfer.
La procedura che segue consente di far
ritornare la chiamata al chiamante nel caso in cui il BLINDXTRANSFER fallisce
poiche', ad esempio, il telefono della persona chiamata non ha risposto. La
macro gestisce piu' in generale gli esiti delle chiamate con un messaggio vocale.
Affinche' funzioni correttamente la macro va chiamata dopo ogni Dial del
dialplan.
Infine nel dial plan bisogna usare "tT" per far funzionare
correttamente i trasferimenti lato centrale.
context default {
hint(SIP/216)
216 => {
Dial(SIP/216,10,tT);
&esitochiamata();
hangup();
};
...snip...
}
Supponiamo
macro esitochiamata() // Configurato per
gestire interni a tre cifre.
{
// Nota: questa funzione viene chiamata dal chiamato e non dal
chiamante, il quale attende in linea l'esito
//
// Nota si perde "callerid(num)" , "exten" e' il numero che e'
stato chiamato
//
// Nota: il torna indietro del BLIND non funziona per chiamate
interne con i telefoni voismart che danno "loop detected"
//
set(cliblind=${BLINDTRANSFER});
// Se e' stato fatto un BLINDTRANSFER e siamo qui allora non e' andato a buon
fine
if( ${LEN(${cliblind})} > 2 )
{ // allora la chiamata proviende da un
BLINDTRANSFER
// e il Dial non e' andato a buon
fine
// BLINDTRANSFER contiene qualcosa
del tipo: "SIP/200-09eee750"
Set(tx=${cliblind:0:7});
SetCallerID(ritorno_${CALLERID(num)}<${CALLERID(DNID)}>);
Dial(${tx},,mTt);
// effettuiamo la richiamata
Hangup();
}
// Se siamo qui non e' stato fatto un BLINDTRANSFER ma il destinatario ha un
codice di stato
switch(${DIALSTATUS})
{
case ANSWER:
// non ci sara' mai un ANSWER perche' se si risponde non si chiama questa
routine
noop("RISPOSTO"); // ANSWER si puo' manipolare solo in "h
extensions"
break;
case BUSY:
Playback(occupato);
break;
case NOANSWER:
Playback(nonrisponde);
break;
case CHANUNAVAIL:
Playback(fuoripostoospento);
break;
} // end switch
Hangup();
} // end macro
Copyright 2008 – Gianrico Fichera –
Questa pagina e' protetta dalla legge sul Diritto d'Autore. L’autore di questa pagina non si assume nessuna responsabilita’ e non da nessuna garanzia riguardante l’accuratezza e la completezza delle informazioni presenti nonche’ da conseguenze sull’uso delle informazioni presenti in questa pagina.
Pagina aggiornata il 20 Giugno 2008