I have a very basic extensions.conf with the following context:

[LocalPhones]

exten => 1001,1,noop(Dialing ${PEX_ONE})
        same => n,Macro(DialStartMonitor,${PEX_ONE})
        same => n,Dial(SIP/${PEX_ONE},30,mTt)
        same => n,Playback(vm-nobodyavail)      ; Play "no one's available"
        same => n,Hangup()

exten => 1002,1,noop(Dialing ${PEX_TWO})
        same => n,Macro(DialStartMonitor,${PEX_TWO})
        same => n,Dial(SIP/${PEX_TWO},30,mTt)
        same => n,Playback(vm-nobodyavail)      ; Play "no one's available"
        same => n,Hangup()

exten => 1003,1,noop(Dialing ${PEX_THREE})
        same => n,Macro(DialStartMonitor,${PEX_THREE})
        same => n,Dial(SIP/${PEX_THREE},30,mTt)
        same => n,Playback(vm-nobodyavail)      ; Play "no one's available"
        same => n,Hangup()

exten => 1004,1,Dial(Dialing ${PEX_FOUR})
        same => n,Macro(DialStartMonitor,${PEX_FOUR})
        same => n,Dial(SIP/${PEX_FOUR},10,m)
        same => n,Playback(vm-nobodyavail)      ; Play "no one's available"
        same => n,Hangup()

exten => 1005,1,Dial(Dialing ${PEX_FIVE})
        same => n,Macro(DialStartMonitor,${PEX_FIVE})
        same => n,Dial(SIP/${PEX_FIVE},10,m)
        same => n,Playback(vm-nobodyavail)      ; Play "no one's available"
        same => n,Hangup()

Is there a way I can combine all these into a single block (instead of 5 blocks like it is now) so that the extensions can dial each other (the extensions are from 1001 to 1010)?

有帮助吗?

解决方案

Correct value-placement dialplan for asterisk is like this

exten => 1000,1,Set(trunk=${PEX_ONE})
exten => 1002,1,Set(trunk=${PEX_TWO})
exten => 1003,1,Set(trunk=${PEX_THREE})
exten => 1004,1,Set(trunk=${PEX_PHONE})
exten => 1005,1,Set(trunk=${PEX_FIVE})
; this will be executed after any of above
; note,it start from 2 prio(1 is from set above)
exten => _100[1-5],2,Noop(Dialing ${trunk})
           same => n,Macro(DialStartMonitor,${trunk})
           same => n,Dial(SIP/${trunk},10,m)
           same => n,Playback(vm-nobodyavail)      ; Play "no one's available"
           same => n,Hangup()

Note, your dialplan is still bad, becuase it play vm-nobodyavail even if user busy or communication was ok, but hanguped called user.

For correct dialplan like that you need analyze DIALSTATUS variable, check extensions.conf.sample for dialplan like that or read dialplan of freepbx.org software.

其他提示

I think it will be something like bellow:

exten => _100[12345],1,Set(DIALTO=${PEX_ONE})
        same => n,GotoIf($["${EXTEN:-1}" = "1"]?process)
        same => n,Set(DIALTO=${PEX_TWO})
        same => n,GotoIf($["${EXTEN:-1}" = "2"]?process)
        same => n,Set(DIALTO=${PEX_THREE})
        same => n,GotoIf($["${EXTEN:-1}" = "3"]?process)
        same => n,Set(DIALTO=${PEX_FOUR})
        same => n,GotoIf($["${EXTEN:-1}" = "4"]?process)
        same => n,Set(DIALTO=${PEX_FIVE})
        same => n(process),Macro(DialStartMonitor,${DIALTO})
        same => n,Dial(SIP/${DIALTO},30,mTt)
        same => n,Playback(vm-nobodyavail)      ; Play "no one's available"
        same => n,Hangup()
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top