Stdexten macro
From KlavoWiki
Below is a macro for the purpose of sending calls to. This will call an extension and based on the dial status will handle the call accordingly.
[macro-stdexten] ; Standard extension macro: ; ${ARG1} - Extension (we could have used ${MACRO_EXTEN} here as well - Voicemail Number ; ${ARG2} - Device(s) to ring - Extension Number exten => s,1,Dial(${ARG2},20,twh) ; Ring the interface, 20 seconds maximum exten => s,2,Goto(s-${DIALSTATUS},1) ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER) exten => s-NOANSWER,1,Voicemail(${ARG1}@default,usj) ; If unavailable, send to voicemail w/ unavail announce exten => s-NOANSWER,n,Hangup ; If they press #, return to start exten => s-NOANSWER,102,Playtones(congestion) exten => s-NOANSWER,n,HangUp exten => s-BUSY,1,Voicemail(${ARG1}@default,bsj) ; If busy, send to voicemail w/ busy announce exten => s-BUSY,n,HangUp ; If they press #, return to start exten => s-BUSY,102,Playtones(congestion) exten => s-BUSY,n,HangUp exten => s-CHANUNAVAIL,1,BackGround(pbx-invalid) exten => s-CHANUNAVAIL,n,BackGround(goodbye) exten => s-CHANUNAVAIL,n,HangUp exten => _s-.,1,Goto(s-NOANSWER,1) ; Treat anything else as no answer exten => a,1,VoicemailMain(${ARG1}@default) ; If they press *, send the user into VoicemailMain exten => a,n,HangUp
A modified version to transfer calls to another phone or extension if the calling extension is in use:
; This code is used for Manager/Secretary Function exten => s,1,GotoIf($["${ARG1}" = "1209"]?2:8) ; Extension to check exten => s,n,ChanIsAvail(SIP/1209,s) exten => s,n,GotoIf($["${AVAILSTATUS}" = "2"]?6:4) ; 2 AST_DEVICE IN USE - "In use"; channel is in use exten => s,n,GotoIf($["${AVAILSTATUS}" = "3"]?6:5) ; 3 AST_DEVICE_BUSY - "Busy"; channel is busy exten => s,n,GotoIf($["${AVAILSTATUS}" = "6"]?6:8) ; 6 AST_DEVICE_RINGING - "Ringing"; ring, ring, ring. exten => s,n,Dial(SIP/1201,20,tw) ; Extension or number to foward to exten => s,n,Goto(s-NOANSWER,1)