Il sistema di call parking: configurazione e funzionamento (asterisk 1.8)

Il call parking consente di parcheggiare delle chiamate trasferendole ad un interno fittizio, per poi poterle riprendere in un secondo momento. Se una chiamata resta parecheggiata oltre il timeout impostato, Asterisk richiama il telefono che l'ha parcheggiata per riconnettere la chiamata parcheggiata con il parcheggiatore.

Configurazione del call parking

La configurazione del call parking, assieme con altre configurazioni, si trova nel file /etc/asterisk/features.conf.

La configurazione originale prevede 20 slot di parcheggio, dal 701 al 720. Il numero 700 viene usato per inserire una chiamata nel primo slot libero. Questo e` un estratto della configurazione originale in Asterisk 1.8, escludendo i commenti e i comandi commentati.

[general]
parkext=700
parkpos => 701-720
context => parkedcalls  

Per utilizzare il sistema di parking "di base" e` sufficiente includere in extensions.conf nel context dove si trovano i vostri interni il context "parkedcalls" (indicato prima nel features.conf). Tale context non e` codificato in extensions.conf, ma esiste nella mappa dei context in memoria di asterisk. E` un context dinamico che contiene i numeri dal 700 in poi, secondo la configurazione impostata in features.conf, a seconda di quante chiamate sono in parcheggio in quel momento. Di default, a parcheggio "vuoto", contiene solo il numero 700 che consente di parcheggiare una chiamata nel primo slot libero.

[interni]
include => parkedcalls

Funzionamento del call parking di base

Per parcheggiare una chiamata durante una comunicazione si trasferisce la chiamata all'interno (fittizio) numero 700. La chiamata viene "parcheggiata" su un interno compreso fra 701 e 720 (il primo libero). Da qualsiasi altro telefono che si trovi nel context che include quello delle "parkedcalls", e` possibile chiamare l'interno 7xx giusto (diciamo 701 per la prima chiamata parcheggiata) per riprendere la chiamata. Se la chiamata non viene ripresa fuori dal parcheggio entro il tempo massimo (default a 45 secondi) allora tornera` a suonare sul telefono che l'ha parcheggiata.

E` opportuno effettuare un "attended transfer" quando si parcheggia una chiamata, perche` cosi` facendo si ascoltera` un annuncio vocale che indica in quale slot di parcheggio e` stata parcheggiata la propria chiamata, altrimenti la chiamata viene parcheggiata ma non si sa in quale slot, quindi non si ha modo di riprenderla.

Sistema di call parking evoluto per telefoni Grandstream con pulsanti BLF

Questo sistema consente di gestire il parcheggio delle chiamate esattamente come con il sistema tradizionale (indicato qui sopra) consentendo pero` in piu` di vedere lo stato degli slot di parcheggio (occupati o liberi) e di parcheggiare una chiamata in uno slot libero, o di riprendere una chiamata da uno slot occupato, a mezzo dei tasti BLF dei telefoni Grandstream. Ragionevolmente funziona anche con telefoni di marche diverse che abbiano i tasti BLF.

Principio di funzionamento

Vale la pena di soffermarsi sulla logica con cui questo sistema funziona. La pressione del tasto BLF (sia che sia verde sia che sia rosso) effettua una semplice chiamata al numero in esso programmato (diciamo il 705). Quando vogliamo parcheggiare una chiamata, effettuiamo un trasferimento verso il numero programmato (705). Questo causa l'esecuzione di un pezzo di dialplan appositamente creato (vedi sotto) che forza Asterisk a parcheggiare la chiamata in uno specifico slot, corrispondente con il numero a cui abbiamo trasferito la chiamata (705). Ora che una chiamata parcheggiata e` presente nello slot 705, nel context speciale "parkedcalls" e` presente una estensione dinamica con il numero 705 che prima non c'era. Siccome il context speciale "parkedcalls" e` incluso dentro al context degli interni PRIMA di quello che abbiamo creato noi (BLF-parking), allora se noi premendo il tasto BLF (rosso) del 705 effettuiamo una chiamata al numero 705, ecco che anziche` richiamare la nostra extension nel context BLF-parking, chiameremo la 705 del context parkedcalls, che ora esiste e prima non esisteva, e che quindi "viene prima" di quella di BLF-parking. In questo modo noi otteniamo due comportamenti diversi quando chiamiamo il numero 705 a seconda che lo slot 705 sia vuoto o sia occupato da una chiamata in parcheggio.

Configurazione del file featrues.conf

Il file features.conf e` configurato come nell'esempio precedente (ovvero a default nell'asterisk 1.8 su Debian)

Configurazione del file extensions.conf

Nel file extensions.conf, il context degli interni deve contenere due "include", uno al context "parkedcalls" e uno al context "BLF-parking". E` importante che siano in questo ordine e che siano in cima al file di configurazione degli interni, ovvero che vengano prima di eventuali definizioni di interni generici (specie se a tre cifre) perche` queste potrebbero "sovrapporsi" a quelle degli slot 7XX. . Ecco un estratto di extensions.conf, creato per gestire al massimo 20 slot, dal 701 al 720, come da configurazione di default:

; ######################################
; Context dove si registano gli interni
; ######################################

[interni]

; Sistema di call parking (standard + sistema BLF per i Grandstream)
; IMPORTANTE: includere i due context in questo ordine e IN CIMA al context degli 
; interni.
include => parkedcalls
include => BLF-parking




; ###############################
; Funzioni di gestione del
; parcheggio chiamate per GXP
; ###############################
[BLF-parking]

; questi due gruppi comprendono tutti i numeri
; da 700 a 719 + il 720. In realta` a noi interessano
; i numeri da 701 a 720.
; Ricordiamoci che quando uno slot e` occupato una chiamata non arrivera` mai fino a qui
; ma verra` gestita dentro al context parkedcalls. Quando uno slot e` libero invece
; allora la chiamta arriva qui.
; Lo scopo di questa funzione e` di parcheggiare la chiamata nello slot indicato.
exten => _70X,1,Answer
exten => _70X,n,Set(PARKINGEXTEN=${EXTEN})
exten => _70X,n,Park
exten => _70X,n,hangup

exten => _71X,1,Answer
exten => _71X,n,Set(PARKINGEXTEN=${EXTEN})
exten => _71X,n,Park
exten => _71X,n,hangup

exten => 720,1,Answer
exten => 720,n,Set(PARKINGEXTEN=${EXTEN})
exten => 720,n,Park
exten => 720,n,hangup

; Definizione degli hint (701-720) che servono a indicare a mezzo dei tasti BLF
; (rosso=occupato, verde=libero) quali slot sono in uso.
exten => _70X,hint,park:${EXTEN}@parkedcalls
exten => _71X,hint,park:${EXTEN}@parkedcalls
exten => 720,hint,park:${EXTEN}@parkedcalls

Configrazione del telefono Grandstream

Per configurare il telefono e` sufficiente impostare un certo numero di tasti BLF (idealmente un numero uguale al numero degli slot definiti in features.conf) con i numeri degli slot stessi, quindi 701, 702, 703, 704, eccetera. Non va configurato il numero 700.

Asterisk/CallParking (last edited 2015-04-06 21:25:01 by Kurgan)