[confserv] exten => _XXXX,1,Set(DYNAMIC_FEATURES=nway-start) exten => _XXXX,n,Dial(SIP/${EXTEN}) [dynamic-nway] exten => _1199,1,noop(dynamic-nway) exten => _1199,n,Answer() exten => _1199,n,Set(MEETME_EXIT_CONTEXT=dynamic-nway-invite) exten => _1199,n,Set(DYNAMIC_FEATURES=) exten => _1199,n,Playback(conf-getconfno) exten => _1199,n,Read(CONF,dial,,i) exten => _1199,n,Set(GLOBAL(CONFNO)=${CONF}) exten => _1199,n,noop(${CONFNO}) exten => _1199,n,Playback(conf-getpin) exten => _1199,n,Read(PIN,dial,,i) exten => _1199,n,Set(GLOBAL(CONFPIN)=${PIN}) exten => _1199,n,noop(${CONFPIN}) exten => _1199,n,MeetMe(${CONF},pMX,${PIN}) exten => _1199,n,Hangup() exten => 1995,1,Answer() ;exten => 1995,n,meetme(3456,pdMX) exten => 1995,n,meetme() exten => 1995,n,Hangup() [dynamic-nway-nopin] exten => _1199,1,noop(dynamic-nway-nopin) exten => _1199,n,Answer() exten => _1199,n,GotoIf($[LEN(${CONFNO})=0]?OUT:IN) exten => _1199,n(IN),MeetMe(${CONFNO},pMX,${CONFPIN}) exten => _1199,n,Hangup() exten => _1199,n(OUT),Playback(conf-has-not-started) exten => _1199,n,Hangup() [dynamic-nway-invite] exten => 0,1,noop(dynamic-nway-invite) exten => 0,n,Read(DEST,dial,,i) exten => 0,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv) exten => 0,n,Dial(SIP/${DEST},,g) exten => 0,n,Set(DYNAMIC_FEATURES=) exten => 0,n,Goto(dynamic-nway-nopin,1199,1) exten => i,1,Goto(dynamic-nway-nopin,1199,1) [dynamic-nway-dest] exten => _XXXX,1,noop(dynamic-nway-dest) exten => _XXXX,n,Dial(SIP/${EXTEN},20) ; Ring the interface, 20 seconds [macro-nway-start] exten => s,1,noop(macro-nway-start) exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway-nopin,1199,1) exten => s,n(INPUT),Playback(conf-invite-participant) exten => s,n,Read(OR,dial,1,i) exten => s,n,GotoIf($[${OR}=1]?OK:NO) exten => s,n(OK),Read(DEST,dial,,i) exten => s,n,noop(Read${DEST}) exten => s,n,Set(DYNAMIC_FEATURES=nway-inv#nway-noinv) exten => s,n,Dial(SIP/${DEST},,gtT) exten => s,n,Goto(INPUT) exten => s,n(NO),Hangup(); ;exten => s,n,Set(DYNAMIC_FEATURES=) ;exten => s,n,Goto(dynamic-nway,1199,1) [macro-nway-ok] exten => s,1,noop(macro-nway-ok) exten => s,n,noop(${BRIDGEPEER}) exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway-nopin,1199,1) ;exten => s,n,ChannelRedirect(${BRIDGEPEER},dynamic-nway,8600,1) [macro-nway-notok] exten => s,1,noop(macro-nway-notok) exten => s,n,SoftHangup(${BRIDGEPEER}) [macro-stdexten] ; ;Standard extension macro ; ${ARG1} - Extension (we could have used ${MACRO_EXTEN} here as well ; ${ARG2} - Device(s) to ring ; exten => s,1,noop(macro-stdexten) exten => s,n,Set(DYNAMIC_FEATURES=nway-start) exten => s,n,noop(Dialling...) ;exten => s,n,Dial(SIP/${EXTEN}) exten => s,n,Dial(${ARG2},20,tT) ; Ring the interface, 20 seconds maximum exten => s,n,noop(Check status = ${DIALSTATUS}) exten => s,n,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER) exten => s-NOANSWER,1,Voicemail(${ARG1},u) ; If unavailable, send to voicemail w/ unavail announce exten => s-NOANSWER,2,Goto(default,s,1) ; If they press #, return to start exten => s-BUSY,1,Voicemail(${ARG1},b) ; If busy, send to voicemail w/ busy announce exten => s-BUSY,2,Goto(default,s,1) ; If they press #, return to start exten => _s-.,1,Goto(s-NOANSWER,1) ; Treat anything else as no answer exten => a,1,VoicemailMain(${ARG1}) ; If they press *, send the user into VoicemailMain