Ring groups

I want to be able to do the following:-
define an extension … say 1200 with voicemail 1200
this is a dummy extension … no real device
define several extensions … 1201,1203, 1203 which are real devices all of which have a voicemail of 1200.

When you dial 1200, 1201,1202,1203 all ring.
dial only exits if ONE of the extensions answers or if none of them do(timeout).
i.e. if one of the extensions is not registered it does not end the dial.

if the dial ends (noanswer) then the caller has the option of leaving voicemail at 1200 or dialing a particular outside line.

The first part should be simple … the dial function appears to support this … it is the last part that is interesting …as follows:-

  1. How do you do this … I have some ideas but I would like some input
  2. Can this be done within freePBX
  3. If you set this up, how do you prevent the caller from dropping into a
    state where they can dial any outound number.



I am not 100% sure what you want to do. Something like this (not tested)?

Below are some ideas; I don’t use freepbx but you should be able to do it.

Office Voicemail
When a message is left in voicemail box 1200 the MWI is illuminated on the IP phones on extensions 1201, 1202 and 1203.

Create an office mailbox 1200; create symbolic links to the mailbox.

cd /var/spool/asterisk/voicemail/default/
mkdir 1200
ln -s 1200 1201
ln -s 1200 1202
ln -s 1200 1203

extensions.conf something like this?

;No personal mailboxes for these extensions
exten => 1201,1,Dial(SIP/1201,30)
exten => 1201,2,Hangup()
exten => 1202,1,Dial(SIP/1202,30)
exten => 1202,2,Hangup()
exten => 1203,1,Dial(SIP/1203,30)
exten => 1203,2,Hangup()

exten => 8500,1,VoiceMailMain(${CALLERID(num)})
exten => 8500,2,Hangup()

exten => s,1,Answer
exten => s,2,Dial(SIP/1201&SIP/1202&SIP/1203,30)
exten => s,3,Set(TIMEOUT(digit)=2)
exten => s,4,BackGround(ivr-message)
exten => s,5,HangUp()

exten => 1,1,Dial(Zap/1/1234567890,30) ;Dial my mobile
exten => 1,2,Hangup()

exten => 2,1,VoiceMail(1200|s) ;voicemail 1200
exten => 2,2,Hangup()

exten => _ZXXX,1,Goto(internal,${EXTEN},1) ;Match internal extensions
exten => _XXXX.,1,Congestion() ;Block all others

exten => t,1,Goto(incoming,s,2) ;timeout
exten => i,1,Goto(incoming,s,2) ;invalid