La funcionalidad BLF (Busy Lamp Field) permite que los teléfonos IP muestren el estado de otras extensiones o servicios mediante luces LED en sus teclas programables. Esto es especialmente útil en entornos de oficina, donde visualizar si un compañero está ocupado o si la centralita está en horario de atención puede mejorar la eficiencia y la atención al cliente.
En Asterisk, los hints son etiquetas que asocian una extensión lógica con el estado de un recurso (por ejemplo, una extensión PJSIP). Cuando un teléfono se suscribe al estado de un hint, Asterisk envía notificaciones SIP NOTIFY para actualizar la luz BLF del teléfono según el estado real de la extensión o servicio monitorizado.
Para que los BLF funcionen correctamente en un sistema Asterisk con PJSIP, es necesario realizar configuraciones tanto en pjsip.conf
como en extensions.conf
. Es importante que los endpoints tengan activada la suscripción y que existan los hints correspondientes en el contexto adecuado.
pjsip.conf
; Ejemplo de endpoint PJSIP con suscripción habilitada
[1001]
type = endpoint
context = blf-usuarios
allow_subscribe = yes
...
extensions.conf
[blf-usuarios]
exten = 1001,hint,PJSIP/1001
exten = 1002,hint,PJSIP/1002
; Más extensiones según necesidad
Los teléfonos deben estar configurados para suscribirse a la extensión que desean monitorizar. Cuando la extensión 1001 está en llamada, el teléfono que tenga configurada la tecla BLF para 1001 verá el LED correspondiente encendido o parpadeando, según el estado.
pjsip.conf
:[1002]
type = endpoint
context = blf-usuarios
allow_subscribe = yes
extensions.conf
:[blf-usuarios]
exten = 1002,hint,PJSIP/1002
exten = 1002,1,Dial(PJSIP/1002)
Ahora, cualquier teléfono que tenga una tecla BLF configurada para la extensión 1002 verá el estado real (libre, sonando, ocupado) reflejado en su LED. Cuando 1002 esté en llamada, el LED se encenderá o cambiará de color según el modelo del teléfono.
extensions.conf
:[blf-usuarios]
exten = 7000,hint,Custom:ATENCION
exten = 7000,1,NoOp(Horario de atención)
same => n,Set(ESTADO=${IF($[${STRFTIME(${EPOCH},,%H)} >= 9 && ${STRFTIME(${EPOCH},,%H)} < 18]?IN:OUT)})
same => n,Set(DEVICE_STATE(Custom:ATENCION)=${ESTADO})
same => n,Hangup()
Custom:ATENCION
como IN (dentro de horario) entre las 9:00 y las 18:00, y como OUT fuera de ese rango. El LED BLF de la extensión 7000 mostrará el estado en tiempo real.
allow_subscribe = yes
).extensions.conf
.DEVICE_STATE
para monitorizar servicios o estados especiales, como el horario de atención.
Puedes verificar los hints activos y su estado ejecutando en la consola de Asterisk:
core show hints
Así verás el estado de cada extensión monitorizada y cuántos dispositivos están observando su estado.
context
), ya que subscribecontext
no existe nativamente en PJSIP. Si necesitas separar ambos contextos, existen parches de terceros.