BLF Hints for Desk Phones
BLF Hints for Desk Phones
Busy Lamp Field (BLF) lets a phone's line keys light up to show whether other extensions are idle, ringing, or on a call. This requires hint definitions in the dialplanThe core call-routing configuration of Asterisk, written mostly in extensions.conf as contexts, extensions, and priorities that decide how every call is handled. Full definition → that map extensions to their device state.
The Snippet
[hints]
; Extension presence hints - maps extension numbers to PJSIP device state
exten => 100,hint,PJSIP/100
exten => 101,hint,PJSIP/101
exten => 102,hint,PJSIP/102
; Feature code hints (for speed dial buttons with status)
exten => *97,hint,Custom:voicemail
exten => *70,hint,Custom:park
Then include the hints contextA named section of the dialplan that groups extensions. Calls enter a specific context and can only reach extensions visible from it, making contexts the basic unit of call routing and security. in your internal context:
[internal]
include => hints
include => dial-extension
include => outbound
include => features
include => parkedcalls
How It Works
A hint line doesn't handle calls, it tells Asterisk to track the state of a device and publish that state via SIPSession Initiation Protocol, the standard signaling protocol used to set up, manage, and tear down VoIP calls between Asterisk and phones or carriers. SUBSCRIBE/NOTIFY. When phone B subscribes to extensionA dialplan entry that matches a dialed number or pattern within a context and triggers a sequence of prioritized steps. 100's hint, Asterisk sends state updates whenever extension 100's PJSIPThe modern SIP channel driver in Asterisk (chan_pjsip), replacing the older chan_sip. Configured in pjsip.conf using endpoints, AORs, auths, and transports. endpointIn PJSIP configuration, the SIP entity Asterisk communicates with: a phone, trunk, or other user agent. Defined by an endpoint section in pjsip.conf. changes state (idle, ringing, in-use).
Extension hints (PJSIP/100) track the actual device state of that endpoint.
Custom hints (Custom:voicemail) are application-defined states you can set programmatically with:
exten => *78,1,Set(DEVICE_STATE(Custom:dnd-${CALLERID(num)})=BUSY)
PJSIP Endpoint Configuration
For BLF to work, your endpoints need named_call_group and named_pickup_group configured:
[endpoint-internal](!)
type = endpoint
; ... other settings ...
named_call_group = office
named_pickup_group = office
This allows BLF buttons to double as pickup buttons, pressing a lit BLF key while it shows "ringing" will pick up that call.
Verifying Hints
From the Asterisk CLI:
asterisk*CLI> core show hints
-= Registered Asterisk Dial Plan Hints =-
100@hints : PJSIP/100 State:Idle
101@hints : PJSIP/101 State:InUse
102@hints : PJSIP/102 State:Unavailable
*97@hints : Custom:voicemail State:Idle
States you'll see: Idle, InUse, Busy, Unavailable, Ringing, OnHold.
Phone-Side Configuration
On Polycom VVX phones, BLF buttons are configured as "attendant" entries:
attendant.resourceList.1.address="101"
attendant.resourceList.1.label="Bob"
attendant.resourceList.1.type="normal"
The type="normal" tells the phone to subscribe to the hint. The button will show green (idle), red (in-use), or flashing red (ringing).
User Notes
Know a tip or gotcha for this topic? Share it below and help others.
Contribute a note
Share a tip, gotcha, or practical example. Keep it under 2000 characters. No questions (use the Asterisk community forums for support). Wrap code in backticks.