BLF Hints for Desk Phones

Configuration Asterisk 20+ -- Last reviewed 2026-06-28 configuration blf hints pjsip polycom Found this useful? Upvote it. ×

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 dialplan 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 context 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 SIP SUBSCRIBE/NOTIFY. When phone B subscribes to extension 100's hint, Asterisk sends state updates whenever extension 100's PJSIP endpoint 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.

Moderated before publishing. Email never shown.
Related Snippets