; This macro dials SIP Broker and if ENUM fails falls back to VoIP provider 1.
[macro-dialprovider]
exten => s,1,Set(CALLERID(all)=<${CALLERID(num)}>) ; Set outbound CallerID
exten => s,n,Dial(SIP/sipbroker-out/${MACRO_EXTEN},30) ; Call SIP Broker for ENUM lookup
exten => s,n,NoOp( Dial Status: ${DIALSTATUS})
exten => s,n,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Hangup
exten => s-CONGESTION,1,Congestion
exten => s-CANCEL,1,Hangup
exten => s-BUSY,1,Busy
exten => s-CHANUNAVAIL,1,Dial(SIP/provider-context/${MACRO_EXTEN},30) ; If failed then Dial provider
exten => s,n,Hangup
[macro-dialsipbroker]
exten => s,1,Set(CALLERID(all)=<${CALLERID(num)}>) ; Set outbound CallerID
exten => s,n,Dial(SIP/sipbroker-out/${ARG1}) ; Call SIP Broker for ENUM lookup
exten => s,n,Hangup
[examples]
exten => _X.,1,Macro(dialprovider) ; e164 dialing
exten => _*X.,1,Macro(dialsipbroker,${EXTEN:0}) ; SIP-Code dialing