Configurazione del sistema di Call Pickup
Il sistema di call pickup consente a un interno di prendere la chiamata destinata ad un altro interno mentre sta ancora suonando. L'uso piu` ovvio e` prendere la chiamata destinata ad un collega assente quando si sente che il suo telefono suona.
Il call pickup va configurato in modo da definire chi puo` prendere le chiamate di chi, fondamentalmente. Le configurazioni del pickup si fanno in due posti: il primo e` il file che definisce i telefoni interni (diciamo sip.conf nella maggior parte dei casi, ma potrebbe anche essere altro, se si usano interni con protocolli diversi dal SIP), il secondo e` nel file extensions.conf, necessario solo se si vogliono fare funambulismi particolari. Il comando di default per effettuare il pickup e` chiamare il numero "*8". E` possibile modificarlo in features.conf.
Usando il comando di pickup "generico", cioe` "*8" (di default) si prende la ultima chiamata che ha suonato in ordine di tempo. Se ci sono piu` chiamate che suonano contemporaneamente (nel proprio pickup group) allora sarebbe meglio usare un pickup "diretto" che prende la chiamata. Per farlo, si puo` usare il comando "pickup" (asterisk 1.2)
Configurazione in sip.conf
Nella definizione di un terminale ci sono due voci relative al pickup, una e` callgroup e l'altra e` pickupgroup.
La direttiva callgroup indica a quale gruppo appartiene il terminale
La direttiva pickupgroup indica che il terminale in questione puo` fare il pickup per le chiamate dirette al gruppo indicato nella voce callgroup.
So che non e` molto chiaro, ma un esempio aiutera`. Supponiamo di avere degli interni in protocollo sip, e di volere che uno di questi interni possa prendere le chiamate degli altri.
Tutti i telefoni interni avranno la direttiva callgroup=1
Il telefono che puo` prendere le chiamate degli altri, avra` la direttiva pickupgroup=1
E` consentito appartenere a un solo gruppo, quindi callgroup non ha parametri multipli, mentre e` possibile avere il diritto di fare pickup da piu` di un gruppo, quindi pickupgroup puo` avere parametri multipli, per esempio pickupgroup=1,2,3 oppure range pickupgroup=1-5 o un misto dei due 1-5,8,12.
Per fare funzionare il comando di pickup diretto per gruppo in extensions.conf, occorre mettere ogni telefono in un callgroup privato, in cui c'e` solo lui.
Questo e` un esempio di file sip.conf in cui tutti e due i telefoni appartengono allo stesso gruppo e possono prendersi le chiamate a vicenda.
[Int101] type=friend context=interni username=Int101 secret=password101 host=dynamic dtmf=rfc2833 allow=alaw callerid= "Interno 101" <101> canreinvite=no pickupgroup=1 callgroup=1 [Int102] type=friend context=interni username=Int102 secret=password102 allow=alaw host=dynamic callerid= "Interno 102" <102> canreinvite=no pickupgroup=1 callgroup=1
Questo e` un esempio di configurazione in cui ogni telefono e` in un callgroup privato (in cui c'e` solo lui) e pero` ogni telefono e` autorizzato a fare il pickup di tutti i gruppi. In pratica cosi` il comando di pickup generico (*8) funziona come nel caso precedente, pero` posso usare il comando pickup in extensions.conf per fare un pickup di una singola linea.
[10] type=friend context=interni username=Int101 secret=password101 host=dynamic dtmf=rfc2833 allow=alaw callerid= "Interno 10" <10> canreinvite=no pickupgroup=0-63 callgroup=10 [11] type=friend context=interni username=Int102 secret=password102 allow=alaw host=dynamic callerid= "Interno 11" <11> canreinvite=no pickupgroup=0-63 callgroup=11
Attenzione, i pickup group sono limitati da 0 a 63, quindi in teoria sono limitato a 63 interni singolarmente prendibili con il comando pickup. Inoltre per comodita` sarebbe meglio tenere, se si vuole configurare un pickupgroup per interno, il numero del gruppo uguale a quello dell'interno, questo vincola gli interni ad avere di fatto i numeri da 10 a 63. (se si vuole mantenere la regola che gli interni hanno due cifre)
Configurazione in extensions.conf
In extensions.conf posso mettere una configurazione che consente di fare il pickup degli interni
Esempio:
exten => _**.,1,Pickup(${EXTEN:2}) exten => _**.,2,Hangup
Questa configurazione consente di fare il pickup di una singola chiamata che sta suonando su un singolo interno chiamando il numero "**interno" (ad esempio, **10). Questa configurazione funziona con i telefoni GXP2000 e superiori, che chiamano il numero "**interno" se si preme il tasto del BLF mentre l'interno in questione sta suonando, e consente di fare il pickup usando i tasti del BLF.
Comando pickupchan
In teoria il comando pickupchan dovrebbe consentire di fare il pickup di un canale specifico, e potrebbe essere usato per evitare di dover definire un callgroup per ogni interno. Purtroppo in asterisk 1.2 e` bacato, e rimuove il il numero di interno dal canale, in pratica il comando sarebbe:
exten => _**.,1,PickupChan(SIP/${EXTEN:2}) exten => _**.,2,Hangup
Purtroppo pero` questo viene interpretato come se non avessi specificato l'estensione. Il comando pickupchan(SIP/11) di fatto fa il pickup di "SIP" e non di "SIP/11", quindi prende l'ultimo canale SIP che ha iniziato a suonare, e non, come vorrei io, il canale SIP 11.