[macro-stdexten] exten => s,1,GotoIf($[${CALLERID(num)}=${ARG2}]?a|1) exten => s,2,Dial(${ARG1}/${ARG2},20) ; Ring the interface, 20 seconds maximum exten => s,3,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER) exten => s-BUSY,1,GotoIf($[${ARG3}=NONE]?3) ; If no VM just give Congestion for 5 seconds exten => s-BUSY,2,Voicemail(b${ARG3}) exten => s-BUSY,3,Congestion(5) exten => s-BUSY,4,Hangup exten => s-NOANSWER,1,GotoIf($[${ARG3}=NONE]?3) ; If no VM just give Congestion for 5 seconds exten => s-NOANSWER,2,Voicemail(u${ARG3}) exten => s-NOANSWER,3,Congestion(5) exten => s-NOANSWER,4,Hangup exten => _s-.,1,Goto(s-NOANSWER,1) ; Treat anything else as no answer exten => a,1,VoiceMailMain(${ARG3}) ; Extension either called itself or hit * in voicemail. exten => a,2,Congestion(5) exten => a,3,Hangup [internal] exten => 100,hint,SIP/100 exten => 100,1,Macro(stdexten,SIP,100,100) exten => 101,hint,SIP/101 exten => 101,1,Macro(stdexten,SIP,101,101) exten => 102,hint,SIP/102 exten => 102,1,Macro(stdexten,SIP,102,102) exten => 103,hint,SIP/103 exten => 103,1,Macro(stdexten,SIP,103,103) exten => 104,hint,SIP/104 exten => 104,1,Macro(stdexten,SIP,104,104) exten => 105,hint,SIP/105 exten => 105,1,Macro(stdexten,SIP,105,105) exten => 110,hint,SIP/110 exten => 110,1,Macro(stdexten,SIP,110,110) exten => 112,hint,SIP/112 exten => 112,1,Macro(stdexten,SIP,112,112) exten => 113,hint,SIP/113 exten => 113,1,Macro(stdexten,SIP,113,113) exten => 114,hint,SIP/114 exten => 114,1,Macro(stdexten,SIP,114,114) exten => 115,hint,SIP/115 exten => 115,1,Macro(stdexten,SIP,115,115) exten => 121,hint,SIP/121 exten => 121,1,Macro(stdexten,SIP,121,121) exten => 122,hint,SIP/122 exten => 122,1,Macro(stdexten,SIP,122,122) exten => 123,hint,SIP/123 exten => 123,1,Macro(stdexten,SIP,123,123) exten => 124,hint,SIP/124 exten => 124,1,Macro(stdexten,SIP,124,124)