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