Configurazione di Asterisk per gestire l'indicazione di interno occupato

Cos'e` il BLF?

Il BLF (Busy Lamp Field) e` quella funzione che consente ad Asterisk di indicare, su telefoni SIP adatti, lo stato dell'impegno delle linee interne facendo accendere i led sui telefoni per indicare quali interni sono occupati, o stanno suonando, o sono in attesa.

Configurazione in extensions.conf

Per ogni interno che si vuole monitorare, occorre aggiungere una riga che dice:

exten => <numero>,hint,<canale>

Dove il numero e` quello dell'interno, e il canale e` lo stesso che passerei al comando dial per chiamare l'interno.

Esempio: se ho un interno 11 che e` connesso via SIP, avro` una configurazione di questo tipo:

[interni]

exten => 11,hint,SIP/11
exten => 11,1,Dial(SIP/11|40|)
exten => 11,102,Busy()

Si nota che la riga "hint" (che non e` necessario che si trovi in un ordine particolare rispetto alle altre) ha come numero di interno l'11 e come canale gli stessi della riga "dial" che c'e` sotto. Vale la pena di notare inoltre che la parola "hint" non e` un comando, in quanto si trova nella posizione del numero di sequenza e non nella posizione del comando.

Configurazione in sip.conf

In sip.conf occorre indicare, nella sezione [general] oppure nella definizione di ogni telefono SIP in grado di visualizzare lo stato delle linee, una riga che indica qual'e` il context (riferito al file extensions.conf) dal quale attingere le informazioni sugli interni impegnati.

La riga in questione e`

subscribecontext=<context>

Esempio:

; Grandstream gpx2000
[11]
type=friend
context=interni
username=11
secret=password11
host=dynamic
dtmfmode=info
callerid= "Studio" <11>
canreinvite=no
pickupgroup=1
callgroup=1
mailbox=1
subscribecontext=interni

Variazioni per Asterisk 1.4 1.6 e 1.8

In Asterisk 1.4 1.6 e 1.8 il BLF non funziona con telefoni SIP se non aggiungendo alcune configurazioni che riguardano il Call Limit (limite di chiamate contemporanee) in SIP.conf.

Nella sezione generale:

[general]
notifyringing = yes 
notifyhold = yes
limitonpeers = yes

E poi in ogni telefono:

type=friend
call-limit=2

Il valore di call-limit puo` essere oggettivamente sensato (1 o 2 per un analogico, o 6 per un gxp-2020 che ha 6 "linee" virtuali) oppure arbitrariamente alto e quindi non raggiungibile (per dire, 100) pero` deve essere impostato, altrimenti non funziona nulla.

A questo punto dovrebbero funzionare le notifiche per gli stati di "in linea", "sta suonando" e "in attesa".

Si puo` vedere lo stato in cui Asterisk pensa si trovi il telefono usando il comando "core show hints" in console.

Uso del BLF per indicare qualcosa che non sia lo stato di una linea (asterisk 1.4 1.6 e 1.8)

Recentemente ho fatto un setup in asterisk 1.4 dove uso il BLF (su telefoni GXP-2020) per indicare cose che non sono lo stato di una linea, quanto per esempio l'attivazione o meno di una funzione (giorno/notte, ridirezione delle chiamate, messaggi presenti in segreteria, ecc).

Vediamo come funziona... (tutti gli esempi si applicano al file extensions.conf)

Esempio pratico: mostrare la presenza di messaggi in due diverse caselle di voicemail, e permettere l'accesso alle stesse premendo due tasti BLF appositamente programmati sul telefono GXP-2020.

Se e` stato tutto fatto bene, ad ogni fine di comunicazione (comando hangup o comunque disconnessione del canale) i comandi nel context qui sopra verranno eseguiti, e imposteranno lo stato dei due pulsanti BLF in modo da renderli rossi se ci sono messaggi nella segreteria relativa. Premendo i tasti sara` possibile riascoltare i messaggi delle due segreterie.

Asterisk/BLF (last edited 2015-04-05 23:23:27 by Kurgan)