PBX Do Not Disturb

PBX Do Not Disturb or DND functionality is the ability of a phone or client to ignore any incoming calls. This can be implemented in several ways.

  • Ringer Off or Ringer Mute. The call rings as normal but does not alert the user. The call is then handled by the method programmed in the no-answer event, such as sending the call to the voice mail system after 20 seconds of ringing.
  • Busy Mode. The phone is taken off-hook or sends a signal to the PBX stating it is busy, and not available for calls. The call is then handled by the method programmed in the busy event, such as forwarding to another free extension or to voice mail.
  • Mixed Mode. Some phone and PBX systems inplement a priority calling functionality. DND is activated on the phone. When a normal call comes in, it is handled by the Ringer Off or Busy Mode rules as stated above. Other users have the ability to mark a call as Priority, bypassing the DND mode and forcing the extension to ring. An example where this is used would be when a user is in an important meeting. She places her phone in DND mode, as to not be disturbed by everyday calls. A situation comes up where it is urgent to get in touch with her, even though she is using DND. The person attempting to call her hits the Priority Call button, which bypasses the DND and rings the phone. This does not turn off DND, and any other normal calls are still treated as such.

Some phone systems refer to DND as SAC or Send All Calls (to voice mail.) The functionality is the same, just under a different name.

In Asterisk, DND is usually controlled by dialing:
  • 78 to turn on Do Not Disturb mode and
  • 79 to turn off Do Not Disturb mode

This is implemented in FreePBX and a few other asterisk "packages". For a vanilla configuration using SIP/IAX2/H323, the following config is usable:

; Enable DnD
exten => *78,1,Answer
exten => *78,n,Set(DB(SIP/DND/${CALLERID(num)})=1)
exten => *78,n,Playback(beep)
exten => *78,n,Wait(2)
exten => *78,n,Hangup
; Disable DnD
exten => *79,1,Answer
exten => *79,n,NoOp(${DB_DELETE(SIP/DND/${CALLERID(num)})})
exten => *79,n,Playback(beep)
exten => *79,n,Wait(2)
exten => *79,n,Hangup

And then wrap your call macro/sub around the following:

exten => s,4,Set(LOCAL(dnd)=${DB("SIP/DND"/${ext})})
exten => s,6,Gosubif($[${dnd}]?8:7)
exten => s,7,Dial(${dev},10)
exten => s,8,Gosub(menu,s,1(${ext}))

see this page for what appears to be a comprehensive list of similar CLASS (Custom Local Area Signaling Services) codes

See Also

Created by: jjhall, Last modification: Tue 05 of Apr, 2011 (07:42 UTC) by imcdona
Please update this page with new information, just login and click on the "Edit" or "Discussion" tab. Get a free login here: Register Thanks! - Find us on Google+