[ Context 'macro-dial-one' created by 'pbx_config' ] 'cf' => 1. Set(CFAMPUSER=${IF($["${AMPUSER}"=""]?${CALLERID(number)}:${AMPUSER})}) [pbx_config]
2. ExecIf($["${DB(CF/${DEXTEN})}"="${CFAMPUSER}" | "${DB(CF/${DEXTEN})}"="${REALCALLERIDNUM}" | "${CUT(CUT(BLINDTRANSFER,-,1),/,1)}" = "${DB(CF/${DEXTEN})}" | "${DEXTEN}"="${DB(CF/${DEXTEN})}"]?Return()) [pbx_config]
3. ExecIf($["${DB(AMPUSER/${DEXTEN}/cfringtimer)}" != "0" & "${DB(AMPUSER/${DEXTEN}/cfringtimer)}" != ""]?Set(ARG1=${IF($["${DB(AMPUSER/${DEXTEN}/cfringtimer)}"="-1"]? : ${DB(AMPUSER/${DEXTEN}/cfringtimer)})})) [pbx_config]
4. Set(DEXTEN=${IF($["${CFIGNORE}"=""]?"${DB(CF/${DEXTEN})}#": )}) [pbx_config]
5. ExecIf($["${DEXTEN}"!=""]?Return()) [pbx_config]
6. Set(DIALSTATUS=NOANSWER) [pbx_config]
7. Return() [pbx_config]
'ctclear' => 1. Noop(Deleting: CALLTRACE/${DEXTEN} ${DB_DELETE(CALLTRACE/${DEXTEN})}) [pbx_config]
2. Return() [pbx_config]
'ctset' => 1. Set(DB(CALLTRACE/${DEXTEN})=${CALLERID(number)}) [pbx_config]
2. Return() [pbx_config]
'dlocal' => 1. Set(DSTRING=${IF($["${ARG1}"=""]?${DEXTEN:0:${MATH(${LEN(${DEXTEN})}-1,int)}}:Local/${DEXTEN:0:${MATH(${LEN(${DEXTEN})}-1,int)}}@from-internal/n)}) [pbx_config]
2. Set(USEGOTO=${IF($["${ARG1}"=""]?1:0)}) [pbx_config]
3. Return() [pbx_config]
'dstring' => 1. Set(DSTRING=) [pbx_config]
2. Set(DEVICES=${DB(AMPUSER/${DEXTEN}/device)}) [pbx_config]
3. ExecIf($["${DEVICES}"=""]?Return()) [pbx_config]
4. ExecIf($["${DEVICES:0:1}"="&"]?Set(DEVICES=${DEVICES:1})) [pbx_config]
5. Set(LOOPCNT=${FIELDQTY(DEVICES,&)}) [pbx_config]
6. Set(ITER=1) [pbx_config]
[begin] 7. Set(THISDIAL=${DB(DEVICE/${CUT(DEVICES,&,${ITER})}/dial)}) [pbx_config]
8. GosubIf($["${ASTCHANDAHDI}" = "1"]?zap2dahdi,1()) [pbx_config]
9. GotoIf($["${THISDIAL:0:5}"!="PJSIP"]?doset) [pbx_config]
10. Noop(Debug: Found PJSIP Destination ${THISDIAL}, updating with PJSIP_DIAL_CONTACTS) [pbx_config]
11. Set(THISDIAL=${PJSIP_DIAL_CONTACTS(${THISDIAL:6})}) [pbx_config]
12. GotoIf($["${THISDIAL}"=""]?skipset) [pbx_config]
[doset] 13. Set(DSTRING=${DSTRING}${THISDIAL}&) [pbx_config]
[skipset] 14. Set(ITER=$[${ITER}+1]) [pbx_config]
15. GotoIf($[${ITER}<=${LOOPCNT}]?begin) [pbx_config]
16. ExecIf($["${DSTRING:-1}"!="&"]?Return()) [pbx_config]
17. Set(DSTRING=${DSTRING:0:$[${LEN(${DSTRING})}-1]}) [pbx_config]
18. Return() [pbx_config]
'h' => 1. Macro(hangupcall,) [pbx_config]
'qwait' => 1. ExecIf($["${SAVEDCIDNAME}" = ""]?Set(__SAVEDCIDNAME=${CALLERID(name)})) [pbx_config]
2. Set(ELAPSED=${MATH($[${EPOCH}+30-${QUEUEWAIT}]/60,int)}) [pbx_config]
3. Set(CALLERID(name)=M${ELAPSED}:${SAVEDCIDNAME}) [pbx_config]
4. Return() [pbx_config]
's' => 1. Set(DEXTEN=${ARG3}) [pbx_config]
2. Set(DIALSTATUS_CW=) [pbx_config]
3. GosubIf($["${FROM_DID}"!="" & "${SCREEN}"="" & "${DB(AMPUSER/${DEXTEN}/screen)}"!=""]?screen,1()) [pbx_config]
4. GosubIf($["${DB(CF/${DEXTEN})}"!=""]?cf,1()) [pbx_config]
5. GotoIf($["${DEXTEN:-1}"="#" | "${DB(DND/${DEXTEN})}"=""]?skip1) [pbx_config]
6. Set(DEXTEN=) [pbx_config]
7. Set(DIALSTATUS=BUSY) [pbx_config]
[skip1] 8. GotoIf($["${DEXTEN}"=""]?nodial) [pbx_config]
9. GotoIf($["${DEXTEN:-1}"="#"]?continue) [pbx_config]
10. Set(EXTHASCW=${IF($["${CWIGNORE}"!=""]? :${DB(CW/${DEXTEN})})}) [pbx_config]
11. GotoIf($["${EXTHASCW}"="" | "${DB(CFB/${DEXTEN})}"!="" | "${DB(CFU/${DEXTEN})}"!=""]?next1:cwinusebusy) [pbx_config]
[next1] 12. GotoIf($["${DB(CFU/${DEXTEN})}"!="" & ("${EXTENSION_STATE(${DEXTEN})}"="UNAVAILABLE" | "${EXTENSION_STATE(${DEXTEN})}"="UNKNOWN")]?docfu:skip3) [pbx_config]
[docfu] 13. Set(DEXTEN=) [pbx_config]
14. Set(DIALSTATUS=NOANSWER) [pbx_config]
15. Goto(nodial) [pbx_config]
[skip3] 16. GotoIf($["${EXTHASCW}"="" | "${DB(CFB/${DEXTEN})}"!=""]?next2:continue) [pbx_config]
[next2] 17. GotoIf($["${EXTENSION_STATE(${DEXTEN})}"="NOT_INUSE" | "${EXTENSION_STATE(${DEXTEN})}"="UNAVAILABLE" | "${EXTENSION_STATE(${DEXTEN})}"="UNKNOWN"]?continue) [pbx_config]
18. ExecIf($["${DB(CFB/${DEXTEN})}"!="" & "${CFIGNORE}"=""]?Set(DIALSTATUS=BUSY)) [pbx_config]
19. GotoIf($["${EXTHASCW}"!="" | "${DEXTEN:-1}"="#"]?cwinusebusy) [pbx_config]
20. Set(DEXTEN=) [pbx_config]
21. Set(DIALSTATUS=BUSY) [pbx_config]
22. Goto(nodial) [pbx_config]
[cwinusebusy] 23. GotoIf($["${EXTHASCW}"!="" & "${CWINUSEBUSY}"="true"]?next3:continue) [pbx_config]
[next3] 24. ExecIf($["${EXTENSION_STATE(${DEXTEN})}"!="UNAVAILABLE" & "${EXTENSION_STATE(${DEXTEN})}"!="NOT_INUSE" & "${EXTENSION_STATE(${DEXTEN})}"!="UNKNOWN"]?Set(DIALSTATUS_CW=BUSY)) [pbx_config]
[continue] 25. GotoIf($["${DEXTEN}"=""]?nodial) [pbx_config]
26. GosubIf($["${DEXTEN:-1}"!="#"]?dstring,1():dlocal,1()) [pbx_config]
27. GotoIf($[${LEN(${DSTRING})}=0]?nodial) [pbx_config]
28. GotoIf($["${DEXTEN:-1}"="#"]?skiptrace) [pbx_config]
29. GosubIf($[${REGEX("^[\+]?[0-9]+$" ${CALLERID(number)})} = 1]?ctset,1():ctclear,1()) [pbx_config]
[skiptrace] 30. Set(D_OPTIONS=${IF($["${NODEST}"!="" & ${REGEX("(M[(]auto-blkvm[)])" ${ARG2})} != 1]?${ARG2}M(auto-blkvm):${ARG2})}) [pbx_config]
31. ExecIf($["${ALERT_INFO}"!=""]?SIPAddHeader(Alert-Info: ${ALERT_INFO})) [pbx_config]
32. ExecIf($["${MOHCLASS}"!=""]?Set(CHANNEL(musicclass)=${MOHCLASS})) [pbx_config]
33. GosubIf($["${QUEUEWAIT}"!=""]?qwait,1()) [pbx_config]
34. Set(__CWIGNORE=${CWIGNORE}) [pbx_config]
35. Set(__KEEPCID=TRUE) [pbx_config]
36. GotoIf($["${USEGOTO}"="1"]?usegoto,1) [pbx_config]
37. GotoIf($["${DB(AMPUSER/${EXTTOCALL}/cidname)}" = "" || "${DB(AMPUSER/${AMPUSER}/cidname)}" = ""]?godial) [pbx_config]
38. Gosub(sub-presencestate-display,s,1(${EXTTOCALL})) [pbx_config]
39. Set(CONNECTEDLINE(name,i)=${DB(AMPUSER/${EXTTOCALL}/cidname)}${PRESENCESTATE_DISPLAY}) [pbx_config]
40. Set(CONNECTEDLINE(num)=${EXTTOCALL}) [pbx_config]
41. Set(D_OPTIONS=${D_OPTIONS}I) [pbx_config]
[godial] 42. Macro(dialout-one-predial-hook,) [pbx_config]
43. Dial(${DSTRING},${ARG1},${D_OPTIONS}) [pbx_config]
44. ExecIf($["${DIALSTATUS}"="ANSWER" & "${CALLER_DEST}"!=""]?MacroExit()) [pbx_config]
45. ExecIf($["${DIALSTATUS_CW}"!=""]?Set(DIALSTATUS=${DIALSTATUS_CW})) [pbx_config]
46. GosubIf($[("${SCREEN}"!=""&("${DIALSTATUS}"="TORTURE"|"${DIALSTATUS}"="DONTCALL"))|"${DIALSTATUS}"="ANSWER"]?s-${DIALSTATUS},1()) [pbx_config]
47. MacroExit() [pbx_config]
[nodial] 48. ExecIf($["${DIALSTATUS}" = ""]?Set(DIALSTATUS=NOANSWER)) [pbx_config]
49. Noop(Returned from dial-one with nothing to call and DIALSTATUS: ${DIALSTATUS}) [pbx_config]
50. MacroExit() [pbx_config]
's-BUSY' => 1. Macro(vm,${SCREEN_EXTEN},BUSY,${IVR_RETVM}) [pbx_config]
2. ExecIf($["${IVR_RETVM}"!="RETURN" | "${IVR_CONTEXT}"=""]?Hangup()) [pbx_config]
3. Return() [pbx_config]
's-CHANUNAVAIL' => 1. Macro(vm,${SCREEN_EXTEN},BUSY,${IVR_RETVM}) [pbx_config]
2. ExecIf($["${IVR_RETVM}"!="RETURN" | "${IVR_CONTEXT}"=""]?Hangup()) [pbx_config]
3. Return() [pbx_config]
's-DONTCALL' => 1. Answer() [pbx_config]
2. Wait(1) [pbx_config]
3. Zapateller() [pbx_config]
4. Playback(ss-noservice) [pbx_config]
5. Macro(hangupcall,) [pbx_config]
's-NOANSWER' => 1. Macro(vm,${SCREEN_EXTEN},BUSY,${IVR_RETVM}) [pbx_config]
2. ExecIf($["${IVR_RETVM}"!="RETURN" | "${IVR_CONTEXT}"=""]?Hangup()) [pbx_config]
3. Return() [pbx_config]
's-TORTURE' => 1. Goto(app-blackhole,musiconhold,1) [pbx_config]
2. Macro(hangupcall,) [pbx_config]
'screen' => 1. GotoIf($["${DB(AMPUSER/${DEXTEN}/screen)}"!="nomemory" | "${CALLERID(number)}"=""]?memory) [pbx_config]
2. ExecIf($[${REGEX("^[0-9a-zA-Z ]+$" ${CALLERID(number)})} = 1]?System(rm -f ${ASTVARLIBDIR}/sounds/priv-callerintros/${CALLERID(number)}.*)) [pbx_config]
[memory] 3. Set(__SCREEN=${DB(AMPUSER/${DEXTEN}/screen)}) [pbx_config]
4. Set(__SCREEN_EXTEN=${DEXTEN}) [pbx_config]
5. Set(ARG2=${ARG2}p) [pbx_config]
6. Return() [pbx_config]
'usegoto' => 1. Set(USEGOTO=) [pbx_config]
2. Goto(from-internal,${DSTRING},1) [pbx_config]
'zap2dahdi' => 1. ExecIf($["${THISDIAL}" = ""]?Return()) [pbx_config]
2. Set(NEWDIAL=) [pbx_config]
3. Set(LOOPCNT2=${FIELDQTY(THISDIAL,&)}) [pbx_config]
4. Set(ITER2=1) [pbx_config]
[begin2] 5. Set(THISPART2=${CUT(THISDIAL,&,${ITER2})}) [pbx_config]
6. ExecIf($["${THISPART2:0:3}" = "ZAP"]?Set(THISPART2=DAHDI${THISPART2:3})) [pbx_config]
7. Set(NEWDIAL=${NEWDIAL}${THISPART2}&) [pbx_config]
8. Set(ITER2=$[${ITER2} + 1]) [pbx_config]
9. GotoIf($[${ITER2} <= ${LOOPCNT2}]?begin2) [pbx_config]
10. Set(THISDIAL=${NEWDIAL:0:$[${LEN(${NEWDIAL})}-1]}) [pbx_config]
11. Return() [pbx_config]
-= 16 extensions (122 priorities) in 1 context. =- |