4

From Dellsmsh, 11 Months ago, written in Plain Text, viewed 43 times.
URL https://pastebin.freepbx.org/view/e1d4093b Embed
Download Paste or View Raw
  1. login as: root
  2. root@192.168.3.1's password:
  3. Last login: Mon Jul 24 13:07:55 2017 from 192.168.3.3
  4. [root@localhost ~]# asterisk -r
  5. Privilege escalation protection disabled!
  6. See https://wiki.asterisk.org/wiki/x/1gKfAQ for more details.
  7. Asterisk 11.7.0, Copyright (C) 1999 - 2013 Digium, Inc. and others.
  8. Created by Mark Spencer <markster@digium.com>
  9. Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details.
  10. This is free software, with components licensed under the GNU General Public
  11. License version 2 and other licenses; you are welcome to redistribute it under
  12. certain conditions. Type 'core show license' for details.
  13. =========================================================================
  14. Connected to Asterisk 11.7.0 currently running on localhost (pid = 1809)
  15. localhost*CLI> dialplan show
  16. [ Context 'parkedcalls' created by 'features' ]
  17.   '700' =>          1. Park()                                     [features]
  18.  
  19. [ Context 'dpma_message_context' created by 'digium_phone_module' ]
  20.   'proxy' =>        1. Verbose(No Valid DPMA License found.  Module is loaded but disabled. Please reload module once valid license is installed.) [digium_phone_module]
  21.  
  22. [ Context 'macro-saydigits' created by 'pbx_config' ]
  23.   's' =>            1. Noop(Trying custom SayDigits playback for "${ARG1}") [pbx_config]
  24.                     2. Playback(tts/custom-${MD5(${ARG1})})       [pbx_config]
  25.                     3. GotoIf($["${PLAYBACKSTATUS}"="SUCCESS"]?done) [pbx_config]
  26.      [tts]          4. Macro(tts-saydigits,${ARG1},${ARG2},${ARG3}) [pbx_config]
  27.                     5. SayDigits(${ARG1})                         [pbx_config]
  28.                     6. Goto(done)                                 [pbx_config]
  29.  
  30. [ Context 'macro-saynumber' created by 'pbx_config' ]
  31.   's' =>            1. Noop(Trying custom SayNumber playback for "${ARG1}") [pbx_config]
  32.                     2. Playback(tts/custom-${MD5(${ARG1})})       [pbx_config]
  33.                     3. GotoIf($["${PLAYBACKSTATUS}"="SUCCESS"]?done) [pbx_config]
  34.      [tts]          4. Macro(tts-saynumber,${ARG1},${ARG2},${ARG3}) [pbx_config]
  35.                     5. SayNumber(${ARG1})                         [pbx_config]
  36.                     6. Goto(done)                                 [pbx_config]
  37.                     105. Noop(tts handled saynumber)              [pbx_config]
  38.  
  39. [ Context 'macro-sayname' created by 'pbx_config' ]
  40.   's' =>            1. Noop(Trying custom SayName playback for "${ARG1}") [pbx_config]
  41.                     2. Playback(tts/custom-${MD5(${ARG1})})       [pbx_config]
  42.                     3. GotoIf($["${PLAYBACKSTATUS}"="SUCCESS"]?done) [pbx_config]
  43.      [tts]          4. Macro(tts-sayalpha,${ARG1},${ARG2},${ARG3}) [pbx_config]
  44.                     5. SayAlpha(${ARG1})                          [pbx_config]
  45.                     6. Goto(done)                                 [pbx_config]
  46.                     105. Noop(tts handled sayname)                [pbx_config]
  47.  
  48. [ Context 'macro-saytext' created by 'pbx_config' ]
  49.   's' =>            1. Noop(Trying custom SayText playback for "${ARG1}") [pbx_config]
  50.                     2. Playback(tts/custom-${MD5(${ARG1})})       [pbx_config]
  51.                     3. GotoIf($["${PLAYBACKSTATUS}"="SUCCESS"]?done) [pbx_config]
  52.      [tts]          4. Macro(tts-saytext,${ARG1},${ARG2},${ARG3}) [pbx_config]
  53.                     5. Noop(No text-to-speech handler for SayText, cannot say "${ARG1}") [pbx_config]
  54.                     6. Goto(done)                                 [pbx_config]
  55.                     105. Noop(tts handled saytext)                [pbx_config]
  56.  
  57. [ Context 'macro-fixcid' created by 'pbx_config' ]
  58.   's' =>            1. Set(CALLERID(name)=${CALLERID(name)})      [pbx_config]
  59.  
  60. [ Context 'default' created by 'pbx_config' ]
  61.   's' =>            1. Playback(vm-goodbye)                       [pbx_config]
  62.                     2. Noop(ERROR: FreePBX Does not use the [default] context, confguration error) [pbx_config]
  63.                     3. Macro(hangupcall)                          [pbx_config]
  64.   Include =>        'ext-local'                                   [pbx_config]
  65.  
  66. [ Context 'macro-user-logoff' created by 'pbx_config' ]
  67.   's' =>            1. Set(DEVICETYPE=${DB(DEVICE/${CALLERID(number)}/type)}) [pbx_config]
  68.                     2. GotoIf($["${DEVICETYPE}" = "fixed"]?s-FIXED,1) [pbx_config]
  69.                     3. AGI(user_login_out.agi,logout,${CALLERID(number)}) [pbx_config]
  70.      [done]         4. Playback(agent-loggedoff)                  [pbx_config]
  71.   's-FIXED' =>      1. NoOp(Device is FIXED and cannot be logged out of) [pbx_config]
  72.                     2. Playback(an-error-has-occured&vm-goodbye)  [pbx_config]
  73.                     3. Hangup()                                   [pbx_config]
  74.  
  75. [ Context 'macro-user-logon' created by 'pbx_config' ]
  76.   's' =>            1. Set(DEVICETYPE=${DB(DEVICE/${CALLERID(number)}/type)}) [pbx_config]
  77.                     2. Answer()                                   [pbx_config]
  78.                     3. Wait(1)                                    [pbx_config]
  79.                     4. GotoIf($["${DEVICETYPE}" = "fixed"]?s-FIXED,1) [pbx_config]
  80.                     5. Set(AMPUSER=${ARG1})                       [pbx_config]
  81.                     6. GotoIf($["${AMPUSER}" != ""]?gotpass)      [pbx_config]
  82.      [playagain]    7. Read(AMPUSER,please-enter-your-extension-then-press-pound,,,4) [pbx_config]
  83.                     8. GotoIf($["${AMPUSER}" = ""]?s-MAXATTEMPTS,1) [pbx_config]
  84.      [gotpass]      9. GotoIf($["${DB_EXISTS(AMPUSER/${AMPUSER}/password)}" = "0"]?s-NOUSER,1) [pbx_config]
  85.                     10. Set(AMPUSERPASS=${DB_RESULT})             [pbx_config]
  86.                     11. GotoIf($[${LEN(${AMPUSERPASS})} = 0]?s-NOPASSWORD,1) [pbx_config]
  87.                     12. Set(DEVICEUSER=${DB(DEVICE/${CALLERID(number)}/user)}) [pbx_config]
  88.                     13. GotoIf($["${DEVICEUSER}" = "${AMPUSER}"]?s-ALREADYLOGGEDON,1) [pbx_config]
  89.                     14. Authenticate(${AMPUSERPASS})              [pbx_config]
  90.                     15. AGI(user_login_out.agi,login,${CALLERID(number)},${AMPUSER}) [pbx_config]
  91.                     16. Playback(agent-loginok)                   [pbx_config]
  92.   's-ALREADYLOGGEDON' => 1. NoOp(This device has already been logged into by this user) [pbx_config]
  93.                     2. Playback(vm-goodbye)                       [pbx_config]
  94.                     3. Hangup()                                   [pbx_config]
  95.   's-FIXED' =>      1. NoOp(Device is FIXED and cannot be logged into) [pbx_config]
  96.                     2. SayDigits(${CALLERID(number)})             [pbx_config]
  97.                     3. Playback(vm-isunavail&vm-goodbye)          [pbx_config]
  98.                     4. Hangup()                                   [pbx_config]
  99.   's-MAXATTEMPTS' => 1. NoOp(Too many login attempts)              [pbx_config]
  100.                     2. Playback(vm-goodbye)                       [pbx_config]
  101.                     3. Hangup()                                   [pbx_config]
  102.   's-NOPASSWORD' => 1. NoOp(This extension does not exist or no password is set) [pbx_config]
  103.                     2. Playback(pbx-invalid)                      [pbx_config]
  104.                     3. Goto(s,playagain)                          [pbx_config]
  105.   's-NOUSER' =>     1. NoOp(Invalid extension ${AMPUSER} entered) [pbx_config]
  106.                     2. Playback(pbx-invalid)                      [pbx_config]
  107.                     3. Goto(s,playagain)                          [pbx_config]
  108.  
  109. [ Context 'macro-dialout-dundi-predial-hook' created by 'pbx_config' ]
  110.   's' =>            1. MacroExit()                                [pbx_config]
  111.  
  112. [ Context 'macro-dial-ringall-predial-hook' created by 'pbx_config' ]
  113.   's' =>            1. MacroExit()                                [pbx_config]
  114.  
  115. [ Context 'macro-dial-hunt-predial-hook' created by 'pbx_config' ]
  116.   's' =>            1. MacroExit()                                [pbx_config]
  117.  
  118. [ Context 'macro-dialout-one-predial-hook' created by 'pbx_config' ]
  119.   's' =>            1. MacroExit()                                [pbx_config]
  120.  
  121. [ Context 'macro-dialout-trunk-predial-hook' created by 'pbx_config' ]
  122.   's' =>            1. MacroExit()                                [pbx_config]
  123.  
  124. [ Context 'macro-get-vmcontext' created by 'pbx_config' ]
  125.   's' =>            1. Set(VMCONTEXT=${DB(AMPUSER/${ARG1}/voicemail)}) [pbx_config]
  126.                     2. GotoIf($["foo${VMCONTEXT}" = "foo"]?200:300) [pbx_config]
  127.                     200. Set(VMCONTEXT=default)                   [pbx_config]
  128.                     300. NoOp()                                   [pbx_config]
  129.  
  130. [ Context 'from-did-direct' created by 'pbx_config' ]
  131.   Include =>        'ext-findmefollow'                            [pbx_config]
  132.   Include =>        'ext-local'                                   [pbx_config]
  133.  
  134. [ Context 'from-internal-xfer' created by 'pbx_config' ]
  135.   'h' =>            1. Macro(hangupcall)                          [pbx_config]
  136.   Include =>        'from-internal-custom'                        [pbx_config]
  137.   Include =>        'from-internal-additional'                    [pbx_config]
  138.  
  139. [ Context 'from-internal-noxfer' created by 'pbx_config' ]
  140.   'h' =>            1. Macro(hangupcall)                          [pbx_config]
  141.   Include =>        'from-internal-noxfer-custom'                 [pbx_config]
  142.   Include =>        'from-internal-noxfer-additional'             [pbx_config]
  143.  
  144. [ Context 'from-internal' created by 'pbx_config' ]
  145.   'auto_hint_103' => hint: SIP/103,CustomPresence:103              [DIGIUM_PHONE_USERS]
  146.   'auto_hint_104' => hint: SIP/104,CustomPresence:104              [DIGIUM_PHONE_USERS]
  147.   'auto_hint_200' => hint: SIP/200,CustomPresence:200              [DIGIUM_PHONE_USERS]
  148.   'h' =>            1. Macro(hangupcall)                          [pbx_config]
  149.   Include =>        'from-internal-noxfer'                        [pbx_config]
  150.   Include =>        'from-internal-xfer'                          [pbx_config]
  151.   Include =>        'bad-number'                                  [pbx_config]
  152.  
  153. [ Context 'from-sip-external' created by 'pbx_config' ]
  154.   'auto_hint_3' =>  hint: SIP/3,CustomPresence:3                  [DIGIUM_PHONE_USERS]
  155.   'auto_hint_4' =>  hint: SIP/4,CustomPresence:4                  [DIGIUM_PHONE_USERS]
  156.   'h' =>            1. Hangup()                                   [pbx_config]
  157.   'i' =>            1. Hangup()                                   [pbx_config]
  158.   's' =>            1. GotoIf($["${SIPLANG}"!=""]?setlanguage:checkanon) [pbx_config]
  159.      [setlanguage]  2. Set(CHANNEL(language)=${SIPLANG})          [pbx_config]
  160.      [checkanon]    3. GotoIf($["${ALLOW_SIP_ANON}"!="yes"]?noanonymous) [pbx_config]
  161.                     4. Goto(from-trunk,${DID},1)                  [pbx_config]
  162.      [noanonymous]  5. Set(TIMEOUT(absolute)=15)                  [pbx_config]
  163.                     6. Log(WARNING,"Rejecting unknown SIP connection from ${CHANNEL(recvip)}") [pbx_config]
  164.                     7. Answer()                                   [pbx_config]
  165.                     8. Wait(2)                                    [pbx_config]
  166.                     9. Playback(ss-noservice)                     [pbx_config]
  167.                     10. Playtones(congestion)                     [pbx_config]
  168.                     11. Congestion(5)                             [pbx_config]
  169.   't' =>            1. Hangup()                                   [pbx_config]
  170.   '_.' =>           1. NoOp(Received incoming SIP connection from unknown peer to ${EXTEN}) [pbx_config]
  171.                     2. Set(DID=${IF($["${EXTEN:1:2}"=""]?s:${EXTEN})}) [pbx_config]
  172.                     3. Goto(s,1)                                  [pbx_config]
  173.  
  174. [ Context 'from-pstn-toheader' created by 'pbx_config' ]
  175.   '_.' =>           1. NoOp(Attempting to extract DID from SIP To header) [pbx_config]
  176.                     2. gotoif($["${CHANNEL(channeltype)}"="SIP"]?SIP) [pbx_config]
  177.                     3. gotoif($["${CHANNEL(channeltype)}"="PJSIP"]?PJSIP) [pbx_config]
  178.                     4. NoOp(Unable to determine SIP channel type) [pbx_config]
  179.                     5. goto(from-pstn,${EXTEN},1))                [pbx_config]
  180.      [SIP]          6. Goto(from-pstn,${CUT(CUT(SIP_HEADER(To),@,1),:,2)},1) [pbx_config]
  181.      [PJSIP]        7. Goto(from-pstn,${CUT(CUT(PJSIP_HEADER(read,To),@,1),:,2)},1) [pbx_config]
  182.  
  183. [ Context 'from-pstn-e164-us' created by 'pbx_config' ]
  184.   's' (CID match '_+1NXXNXXXXXX') =>  1. Set(CALLERID(number)=${CALLERID(number):2}) [pbx_config]
  185.   's' (CID match '_+NX.') =>  1. Set(CALLERID(number)=011${CALLERID(number):1}) [pbx_config]
  186.   's' (CID match '_011NX.') =>  2. Goto(from-pstn,${EXTEN},1)                 [pbx_config]
  187.   's' (CID match '_NXXNXXXXXX') =>  2. Goto(from-pstn,${EXTEN},1)                 [pbx_config]
  188.   's' =>            1. Goto(from-pstn,${EXTEN},1)                 [pbx_config]
  189.   '_+1NXXNXXXXXX' (CID match '_+1NXXNXXXXXX') =>  1. Set(CALLERID(number)=${CALLERID(number):2}) [pbx_config]
  190.   '_+1NXXNXXXXXX' (CID match '_+NX.') =>  1. Set(CALLERID(number)=011${CALLERID(number):1}) [pbx_config]
  191.   '_+1NXXNXXXXXX' (CID match '_011NX.') =>  2. Goto(from-pstn,${EXTEN:2},1)               [pbx_config]
  192.   '_+1NXXNXXXXXX' (CID match '_NXXNXXXXXX') =>  2. Goto(from-pstn,${EXTEN:2},1)               [pbx_config]
  193.   '_+1NXXNXXXXXX' => 1. Goto(from-pstn,${EXTEN:2},1)               [pbx_config]
  194.   '_[0-9+].' (CID match '_+1NXXNXXXXXX') =>  1. Set(CALLERID(number)=${CALLERID(number):2}) [pbx_config]
  195.   '_[0-9+].' (CID match '_+NX.') =>  1. Set(CALLERID(number)=011${CALLERID(number):1}) [pbx_config]
  196.   '_[0-9+].' (CID match '_011NX.') =>  2. Goto(from-pstn,${EXTEN},1)                 [pbx_config]
  197.   '_[0-9+].' (CID match '_1NXXNXXXXXX') =>  1. Set(CALLERID(number)=${CALLERID(number):1}) [pbx_config]
  198.   '_[0-9+].' (CID match '_NXXNXXXXXX') =>  2. Goto(from-pstn,${EXTEN},1)                 [pbx_config]
  199.   '_[0-9+].' =>     1. Goto(from-pstn,${EXTEN},1)                 [pbx_config]
  200.  
  201. [ Context 'from-pstn' created by 'pbx_config' ]
  202.   Include =>        'from-pstn-custom'                            [pbx_config]
  203.   Include =>        'ext-did'                                     [pbx_config]
  204.   Include =>        'ext-did-post-custom'                         [pbx_config]
  205.   Include =>        'from-did-direct'                             [pbx_config]
  206.   Include =>        'ext-did-catchall'                            [pbx_config]
  207.  
  208. [ Context 'from-trunk' created by 'pbx_config' ]
  209.   Include =>        'from-pstn'                                   [pbx_config]
  210.  
  211. [ Context 'from-analog' created by 'pbx_config' ]
  212.   Include =>        'from-dahdi'                                  [pbx_config]
  213.  
  214. [ Context 'from-digital' created by 'pbx_config' ]
  215.   Include =>        'from-pstn'                                   [pbx_config]
  216.  
  217. [ Context 'from-internal-noxfer-additional' created by 'pbx_config' ]
  218.   'h' =>            1. Hangup()                                   [pbx_config]
  219.   Include =>        'from-internal-noxfer-additional-custom'      [pbx_config]
  220.   Include =>        'ext-paging'                                  [pbx_config]
  221.  
  222. [ Context 'from-internal-additional' created by 'pbx_config' ]
  223.   'h' =>            1. Hangup()                                   [pbx_config]
  224.   Include =>        'from-internal-additional-custom'             [pbx_config]
  225.   Include =>        'app-cf-busy-off'                             [pbx_config]
  226.   Include =>        'app-cf-off'                                  [pbx_config]
  227.   Include =>        'app-cf-busy-prompting-on'                    [pbx_config]
  228.   Include =>        'app-cf-busy-on'                              [pbx_config]
  229.   Include =>        'app-cf-busy-off-any'                         [pbx_config]
  230.   Include =>        'app-cf-off-any'                              [pbx_config]
  231.   Include =>        'app-cf-on'                                   [pbx_config]
  232.   Include =>        'app-cf-toggle'                               [pbx_config]
  233.   Include =>        'app-cf-unavailable-prompt-on'                [pbx_config]
  234.   Include =>        'app-cf-unavailable-on'                       [pbx_config]
  235.   Include =>        'app-cf-prompting-on'                         [pbx_config]
  236.   Include =>        'app-cf-unavailable-off'                      [pbx_config]
  237.   Include =>        'ext-cf-hints'                                [pbx_config]
  238.   Include =>        'app-callwaiting-cwoff'                       [pbx_config]
  239.   Include =>        'app-callwaiting-cwon'                        [pbx_config]
  240.   Include =>        'ext-meetme'                                  [pbx_config]
  241.   Include =>        'app-dnd-off'                                 [pbx_config]
  242.   Include =>        'app-dnd-on'                                  [pbx_config]
  243.   Include =>        'app-dnd-toggle'                              [pbx_config]
  244.   Include =>        'ext-dnd-hints'                               [pbx_config]
  245.   Include =>        'app-fmf-toggle'                              [pbx_config]
  246.   Include =>        'ext-findmefollow'                            [pbx_config]
  247.   Include =>        'fmgrps'                                      [pbx_config]
  248.   Include =>        'app-calltrace'                               [pbx_config]
  249.   Include =>        'app-echo-test'                               [pbx_config]
  250.   Include =>        'app-speakextennum'                           [pbx_config]
  251.   Include =>        'app-speakingclock'                           [pbx_config]
  252.   Include =>        'ext-intercom-users'                          [pbx_config]
  253.   Include =>        'app-pbdirectory'                             [pbx_config]
  254.   Include =>        'ext-queues'                                  [pbx_config]
  255.   Include =>        'app-queue-toggle'                            [pbx_config]
  256.   Include =>        'app-queue-caller-count'                      [pbx_config]
  257.   Include =>        'app-recordings'                              [pbx_config]
  258.   Include =>        'ext-group'                                   [pbx_config]
  259.   Include =>        'grps'                                        [pbx_config]
  260.   Include =>        'app-speeddial'                               [pbx_config]
  261.   Include =>        'timeconditions-toggles'                      [pbx_config]
  262.   Include =>        'app-dialvm'                                  [pbx_config]
  263.   Include =>        'app-vmmain'                                  [pbx_config]
  264.   Include =>        'app-blacklist'                               [pbx_config]
  265.   Include =>        'app-userlogonoff'                            [pbx_config]
  266.   Include =>        'ext-local-confirm'                           [pbx_config]
  267.   Include =>        'findmefollow-ringallv2'                      [pbx_config]
  268.   Include =>        'app-pickup'                                  [pbx_config]
  269.   Include =>        'app-zapbarge'                                [pbx_config]
  270.   Include =>        'app-chanspy'                                 [pbx_config]
  271.   Include =>        'ext-test'                                    [pbx_config]
  272.   Include =>        'ext-local'                                   [pbx_config]
  273.   Include =>        'outbound-allroutes'                          [pbx_config]
  274.   Include =>        'app-contactmanager-sd'                       [pbx_config]
  275.  
  276. [ Context 'app-contactmanager-sd' created by 'pbx_config' ]
  277.   '_*10X!' =>       1. Answer()                                   [pbx_config]
  278.                     2. Macro(user-callerid,)                      [pbx_config]
  279.                     3. GotoIf($[${DB_EXISTS(CM/speeddial/${EXTEN:3})}=1]?from-internal,${DB(CM/speeddial/${EXTEN:3})},1) [pbx_config]
  280.                     4. Goto(bad-number,s,1)                       [pbx_config]
  281.   Include =>        'app-contactmanager-sd-custom'                [pbx_config]
  282.  
  283. [ Context 'func-apply-sipheaders' created by 'pbx_config' ]
  284.   's' =>            1. Noop(Applying SIP Headers to channel)      [pbx_config]
  285.                     2. Set(SIPHEADERKEYS=${HASHKEYS(SIPHEADERS)}) [pbx_config]
  286.                     3. While($["${SET(sipkey=${SHIFT(SIPHEADERKEYS)})}" != ""]) [pbx_config]
  287.                     4. Set(sipheader=${HASH(SIPHEADERS,${sipkey})}) [pbx_config]
  288.                     5. SIPAddHeader(${sipkey}: ${sipheader})      [pbx_config]
  289.                     6. EndWhile()                                 [pbx_config]
  290.                     7. Return()                                   [pbx_config]
  291.   Include =>        'func-apply-sipheaders-custom'                [pbx_config]
  292.  
  293. [ Context 'func-set-sipheader' created by 'pbx_config' ]
  294.   's' =>            1. Noop(Sip Add Header function called. Adding ${ARG1} = ${ARG2}) [pbx_config]
  295.                     2. Set(HASH(_SIPHEADERS,${ARG1})=${ARG2})     [pbx_config]
  296.                     3. Return()                                   [pbx_config]
  297.   Include =>        'func-set-sipheader-custom'                   [pbx_config]
  298.  
  299. [ Context 'macro-dial-one' created by 'pbx_config' ]
  300.   'cf' =>           1. Set(CFAMPUSER=${IF($["${AMPUSER}"=""]?${CALLERID(number)}:${AMPUSER})}) [pbx_config]
  301.                     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]
  302.                     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]
  303.                     4. Set(DEXTEN=${IF($["${CFIGNORE}"=""]?"${DB(CF/${DEXTEN})}#": )}) [pbx_config]
  304.                     5. ExecIf($["${DEXTEN}"!=""]?Return())        [pbx_config]
  305.                     6. Set(DIALSTATUS=NOANSWER)                   [pbx_config]
  306.                     7. Return()                                   [pbx_config]
  307.   'ctclear' =>      1. Noop(Deleting: CALLTRACE/${DEXTEN} ${DB_DELETE(CALLTRACE/${DEXTEN})}) [pbx_config]
  308.                     2. Return()                                   [pbx_config]
  309.   'ctset' =>        1. Set(DB(CALLTRACE/${DEXTEN})=${CALLERID(number)}) [pbx_config]
  310.                     2. Return()                                   [pbx_config]
  311.   '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]
  312.                     2. Set(USEGOTO=${IF($["${ARG1}"=""]?1:0)})    [pbx_config]
  313.                     3. Return()                                   [pbx_config]
  314.   'dstring' =>      1. Set(DSTRING=)                              [pbx_config]
  315.                     2. Set(DEVICES=${DB(AMPUSER/${DEXTEN}/device)}) [pbx_config]
  316.                     3. ExecIf($["${DEVICES}"=""]?Return())        [pbx_config]
  317.                     4. ExecIf($["${DEVICES:0:1}"="&"]?Set(DEVICES=${DEVICES:1})) [pbx_config]
  318.                     5. Set(LOOPCNT=${FIELDQTY(DEVICES,&)})        [pbx_config]
  319.                     6. Set(ITER=1)                                [pbx_config]
  320.      [begin]        7. Set(THISDIAL=${DB(DEVICE/${CUT(DEVICES,&,${ITER})}/dial)}) [pbx_config]
  321.                     8. GosubIf($["${ASTCHANDAHDI}" = "1"]?zap2dahdi,1()) [pbx_config]
  322.                     9. GotoIf($["${THISDIAL:0:5}"!="PJSIP"]?docheck) [pbx_config]
  323.                     10. Noop(Debug: Found PJSIP Destination ${THISDIAL}) [pbx_config]
  324.                     11. GotoIf($[ ${REGEX("(/.+/|@)" ${THISDIAL})} = 1 ]?doset) [pbx_config]
  325.                     12. Noop(Debug: Updating PJSIP Destination with PJSIP_DIAL_CONTACTS) [pbx_config]
  326.                     13. Set(THISDIAL=${PJSIP_DIAL_CONTACTS(${THISDIAL:6})}) [pbx_config]
  327.      [docheck]      14. GotoIf($["${THISDIAL}"=""]?skipset)       [pbx_config]
  328.      [doset]        15. Set(DSTRING=${DSTRING}${THISDIAL}&)       [pbx_config]
  329.      [skipset]      16. Set(ITER=$[${ITER}+1])                    [pbx_config]
  330.                     17. GotoIf($[${ITER}<=${LOOPCNT}]?begin)      [pbx_config]
  331.                     18. ExecIf($["${DSTRING:-1}"!="&"]?Return())  [pbx_config]
  332.                     19. Set(DSTRING=${DSTRING:0:$[${LEN(${DSTRING})}-1]}) [pbx_config]
  333.                     20. Return()                                  [pbx_config]
  334.   'h' =>            1. Macro(hangupcall,)                         [pbx_config]
  335.   'qwait' =>        1. ExecIf($["${SAVEDCIDNAME}" = ""]?Set(__SAVEDCIDNAME=${CALLERID(name)})) [pbx_config]
  336.                     2. Set(ELAPSED=${MATH($[${EPOCH}+30-${QUEUEWAIT}]/60,int)}) [pbx_config]
  337.                     3. Set(CALLERID(name)=M${ELAPSED}:${SAVEDCIDNAME}) [pbx_config]
  338.                     4. Return()                                   [pbx_config]
  339.   's' =>            1. Set(DEXTEN=${ARG3})                        [pbx_config]
  340.      [setexttocall] 2. ExecIf($[${LEN(${EXTTOCALL})}=0 & ${LEN(${DEXTEN})}>0]?Set(EXTTOCALL=${DEXTEN})) [pbx_config]
  341.                     3. Set(DIALSTATUS_CW=)                        [pbx_config]
  342.                     4. GosubIf($["${FROM_DID}"!="" & "${SCREEN}"="" & "${DB(AMPUSER/${DEXTEN}/screen)}"!=""]?screen,1()) [pbx_config]
  343.                     5. GosubIf($["${DB(CF/${DEXTEN})}"!=""]?cf,1()) [pbx_config]
  344.                     6. GotoIf($["${DEXTEN:-1}"="#" | "${DB(DND/${DEXTEN})}"=""]?skip1) [pbx_config]
  345.                     7. Set(DEXTEN=)                               [pbx_config]
  346.                     8. Set(DIALSTATUS=BUSY)                       [pbx_config]
  347.      [skip1]        9. GotoIf($["${DEXTEN}"=""]?nodial)           [pbx_config]
  348.                     10. GotoIf($["${DEXTEN:-1}"="#"]?continue)    [pbx_config]
  349.                     11. Set(EXTHASCW=${IF($["${CWIGNORE}"!=""]? :${DB(CW/${DEXTEN})})}) [pbx_config]
  350.                     12. GotoIf($["${EXTHASCW}"="" | "${DB(CFB/${DEXTEN})}"!="" | "${DB(CFU/${DEXTEN})}"!=""]?next1:cwinusebusy) [pbx_config]
  351.      [next1]        13. GotoIf($["${DB(CFU/${DEXTEN})}"!="" & ("${EXTENSION_STATE(${DEXTEN})}"="UNAVAILABLE" | "${EXTENSION_STATE(${DEXTEN})}"="UNKNOWN")]?docfu:skip3) [pbx_config]
  352.      [docfu]        14. Set(DEXTEN=)                              [pbx_config]
  353.                     15. Set(DIALSTATUS=NOANSWER)                  [pbx_config]
  354.                     16. Goto(nodial)                              [pbx_config]
  355.      [skip3]        17. GotoIf($["${EXTHASCW}"="" | "${DB(CFB/${DEXTEN})}"!=""]?next2:continue) [pbx_config]
  356.      [next2]        18. GotoIf($["${EXTENSION_STATE(${DEXTEN})}"="NOT_INUSE" | "${EXTENSION_STATE(${DEXTEN})}"="UNAVAILABLE" | "${EXTENSION_STATE(${DEXTEN})}"="UNKNOWN"]?continue) [pbx_config]
  357.                     19. ExecIf($["${DB(CFB/${DEXTEN})}"!="" & "${CFIGNORE}"=""]?Set(DIALSTATUS=BUSY)) [pbx_config]
  358.                     20. GotoIf($["${EXTHASCW}"!="" | "${DEXTEN:-1}"="#"]?cwinusebusy) [pbx_config]
  359.                     21. Set(DEXTEN=)                              [pbx_config]
  360.                     22. Set(DIALSTATUS=BUSY)                      [pbx_config]
  361.                     23. Goto(nodial)                              [pbx_config]
  362.      [cwinusebusy]  24. GotoIf($["${EXTHASCW}"!="" & "${CWINUSEBUSY}"="true"]?next3:continue) [pbx_config]
  363.      [next3]        25. ExecIf($["${EXTENSION_STATE(${DEXTEN})}"!="UNAVAILABLE" & "${EXTENSION_STATE(${DEXTEN})}"!="NOT_INUSE" & "${EXTENSION_STATE(${DEXTEN})}"!="UNKNOWN"]?Set(DIALSTATUS_CW=BUSY)) [pbx_config]
  364.      [continue]     26. GotoIf($["${DEXTEN}"=""]?nodial)          [pbx_config]
  365.                     27. GosubIf($["${DEXTEN:-1}"!="#"]?dstring,1():dlocal,1()) [pbx_config]
  366.                     28. GotoIf($[${LEN(${DSTRING})}=0]?nodial)    [pbx_config]
  367.                     29. GotoIf($["${DEXTEN:-1}"="#"]?skiptrace)   [pbx_config]
  368.                     30. GosubIf($[${REGEX("^[\+]?[0-9]+$" ${CALLERID(number)})} = 1]?ctset,1():ctclear,1()) [pbx_config]
  369.      [skiptrace]    31. Set(D_OPTIONS=${IF($["${NODEST}"!="" & ${REGEX("(M[(]auto-blkvm[)])" ${ARG2})} != 1]?${ARG2}M(auto-blkvm):${ARG2})}) [pbx_config]
  370.                     32. Noop(Blind Transfer: ${BLINDTRANSFER}, Attended Transfer: ${ATTENDEDTRANSFER}, User: ${AMPUSER}, Alert Info: ${ALERT_INFO}) [pbx_config]
  371.                     33. ExecIf($["${ALERT_INFO}"="" & ${LEN(${AMPUSER})}!=0 & ${LEN(${BLINDTRANSFER})}=0 & ${LEN(${ATTENDEDTRANSFER})}=0]?Set(ALERT_INFO=)) [pbx_config]
  372.                     34. ExecIf($[${LEN(${BLINDTRANSFER})}!=0]?Set(ALERT_INFO=)) [pbx_config]
  373.                     35. ExecIf($[${LEN(${ATTENDEDTRANSFER})}!=0]?Set(ALERT_INFO=)) [pbx_config]
  374.                     36. ExecIf($["${RVOL}"!=""]?Set(ALERT_INFO=${IF($["${ALERT_INFO}"!=""]?${ALERT_INFO}:Normal)};volume=${RVOL})) [pbx_config]
  375.                     37. ExecIf($["${RVOL}"="" & "${DB(AMPUSER/${EXTTOCALL}/rvolume)}" != ""]?Set(ALERT_INFO=${IF($["${ALERT_INFO}"!=""]?${ALERT_INFO}:Normal)};volume=${DB(AMPUSER/${EXTTOCALL}/rvolume)})) [pbx_config]
  376.                     38. GosubIf($["${ALERT_INFO}"!="" & "${ALERT_INFO}"!=" "]?func-set-sipheader,s,1(Alert-Info,${ALERT_INFO})) [pbx_config]
  377.                     39. ExecIf($[("${MOHCLASS}"!="default") & ("${MOHCLASS}"!="")]?Set(CHANNEL(musicclass)=${MOHCLASS})) [pbx_config]
  378.                     40. GosubIf($["${QUEUEWAIT}"!=""]?qwait,1())  [pbx_config]
  379.                     41. Set(__CWIGNORE=${CWIGNORE})               [pbx_config]
  380.                     42. Set(__KEEPCID=TRUE)                       [pbx_config]
  381.                     43. GotoIf($["${USEGOTO}"="1"]?usegoto,1)     [pbx_config]
  382.                     44. GotoIf($["${DB(AMPUSER/${EXTTOCALL}/cidname)}" = "" || "${DB(AMPUSER/${AMPUSER}/cidname)}" = ""]?godial) [pbx_config]
  383.                     45. Gosub(sub-presencestate-display,s,1(${EXTTOCALL})) [pbx_config]
  384.                     46. Set(CONNECTEDLINE(name,i)=${DB(AMPUSER/${EXTTOCALL}/cidname)}${PRESENCESTATE_DISPLAY}) [pbx_config]
  385.                     47. Set(CONNECTEDLINE(num)=${EXTTOCALL})      [pbx_config]
  386.                     48. Set(D_OPTIONS=${D_OPTIONS}I)              [pbx_config]
  387.      [godial]       49. Macro(dialout-one-predial-hook,)          [pbx_config]
  388.                     50. ExecIf($["${DIRECTION}" = "INBOUND"]?Set(D_OPTIONS=${STRREPLACE(D_OPTIONS,T)}I)) [pbx_config]
  389.      [dialapp]      51. Dial(${DSTRING},${ARG1},${D_OPTIONS}b(func-apply-sipheaders^s^1)) [pbx_config]
  390.                     52. ExecIf($["${DIALSTATUS}"="ANSWER" & "${CALLER_DEST}"!=""]?MacroExit()) [pbx_config]
  391.                     53. ExecIf($["${DIALSTATUS_CW}"!=""]?Set(DIALSTATUS=${DIALSTATUS_CW})) [pbx_config]
  392.                     54. GosubIf($[("${SCREEN}"!=""&("${DIALSTATUS}"="TORTURE"|"${DIALSTATUS}"="DONTCALL"))|"${DIALSTATUS}"="ANSWER"]?s-${DIALSTATUS},1()) [pbx_config]
  393.                     55. MacroExit()                               [pbx_config]
  394.      [nodial]       56. ExecIf($["${DIALSTATUS}" = ""]?Set(DIALSTATUS=NOANSWER)) [pbx_config]
  395.                     57. Noop(Returned from dial-one with nothing to call and DIALSTATUS: ${DIALSTATUS}) [pbx_config]
  396.                     58. MacroExit()                               [pbx_config]
  397.   's-BUSY' =>       1. Macro(vm,${SCREEN_EXTEN},BUSY,${IVR_RETVM}) [pbx_config]
  398.                     2. ExecIf($["${IVR_RETVM}"!="RETURN" | "${IVR_CONTEXT}"=""]?Hangup()) [pbx_config]
  399.                     3. Return()                                   [pbx_config]
  400.   's-CHANUNAVAIL' => 1. Macro(vm,${SCREEN_EXTEN},BUSY,${IVR_RETVM}) [pbx_config]
  401.                     2. ExecIf($["${IVR_RETVM}"!="RETURN" | "${IVR_CONTEXT}"=""]?Hangup()) [pbx_config]
  402.                     3. Return()                                   [pbx_config]
  403.   's-DONTCALL' =>   1. Answer()                                   [pbx_config]
  404.                     2. Wait(1)                                    [pbx_config]
  405.                     3. Zapateller()                               [pbx_config]
  406.                     4. Playback(ss-noservice)                     [pbx_config]
  407.                     5. Macro(hangupcall,)                         [pbx_config]
  408.   's-NOANSWER' =>   1. Macro(vm,${SCREEN_EXTEN},BUSY,${IVR_RETVM}) [pbx_config]
  409.                     2. ExecIf($["${IVR_RETVM}"!="RETURN" | "${IVR_CONTEXT}"=""]?Hangup()) [pbx_config]
  410.                     3. Return()                                   [pbx_config]
  411.   's-TORTURE' =>    1. Goto(app-blackhole,musiconhold,1)          [pbx_config]
  412.                     2. Macro(hangupcall,)                         [pbx_config]
  413.   'screen' =>       1. GotoIf($["${DB(AMPUSER/${DEXTEN}/screen)}"!="nomemory" | "${CALLERID(number)}"=""]?memory) [pbx_config]
  414.                     2. ExecIf($[${REGEX("^[0-9a-zA-Z ]+$" ${CALLERID(number)})} = 1]?System(rm -f ${ASTVARLIBDIR}/sounds/priv-callerintros/${CALLERID(number)}.*)) [pbx_config]
  415.      [memory]       3. Set(__SCREEN=${DB(AMPUSER/${DEXTEN}/screen)}) [pbx_config]
  416.                     4. Set(__SCREEN_EXTEN=${DEXTEN})              [pbx_config]
  417.                     5. Set(ARG2=${ARG2}p)                         [pbx_config]
  418.                     6. Return()                                   [pbx_config]
  419.   'usegoto' =>      1. Set(USEGOTO=)                              [pbx_config]
  420.                     2. Goto(from-internal,${DSTRING},1)           [pbx_config]
  421.   'zap2dahdi' =>    1. ExecIf($["${THISDIAL}" = ""]?Return())     [pbx_config]
  422.                     2. Set(NEWDIAL=)                              [pbx_config]
  423.                     3. Set(LOOPCNT2=${FIELDQTY(THISDIAL,&)})      [pbx_config]
  424.                     4. Set(ITER2=1)                               [pbx_config]
  425.      [begin2]       5. Set(THISPART2=${CUT(THISDIAL,&,${ITER2})}) [pbx_config]
  426.                     6. ExecIf($["${THISPART2:0:3}" = "ZAP"]?Set(THISPART2=DAHDI${THISPART2:3})) [pbx_config]
  427.                     7. Set(NEWDIAL=${NEWDIAL}${THISPART2}&)       [pbx_config]
  428.                     8. Set(ITER2=$[${ITER2} + 1])                 [pbx_config]
  429.                     9. GotoIf($[${ITER2} <= ${LOOPCNT2}]?begin2)  [pbx_config]
  430.                     10. Set(THISDIAL=${NEWDIAL:0:$[${LEN(${NEWDIAL})}-1]}) [pbx_config]
  431.                     11. Return()                                  [pbx_config]
  432.   Include =>        'macro-dial-one-custom'                       [pbx_config]
  433.  
  434. [ Context 'macro-hangupcall' created by 'pbx_config' ]
  435.   's' =>            1. ExecIf($["${CALLFILENAME}"!="" & "${CDR(recordingfile)}"=""]?Set(CDR(recordingfile)=${CALLFILENAME}.${MON_FMT})) [pbx_config]
  436.      [start]        2. GotoIf($["${USE_CONFIRMATION}"="" | "${RINGGROUP_INDEX}"="" | "${CHANNEL}"!="${UNIQCHAN}"]?theend) [pbx_config]
  437.      [delrgi]       3. Noop(Deleting: RG/${RINGGROUP_INDEX}/${CHANNEL} ${DB_DELETE(RG/${RINGGROUP_INDEX}/${CHANNEL})}) [pbx_config]
  438.      [theend]       4. ExecIf($["${ONETOUCH_RECFILE}"!="" & "${CDR(recordingfile)}"=""]?Set(CDR(recordingfile)=${ONETOUCH_RECFILE})) [pbx_config]
  439.                     5. Hangup()                                   [pbx_config]
  440.                     6. MacroExit()                                [pbx_config]
  441.   Include =>        'macro-hangupcall-custom'                     [pbx_config]
  442.  
  443. [ Context 'macro-blkvm-check' created by 'pbx_config' ]
  444.   's' =>            1. Set(GOSUB_RETVAL=${SHARED(BLKVM,${BLKVM_CHANNEL})}) [pbx_config]
  445.                     2. ExecIf($["${GOSUB_RETVAL}"="" & "${CC_RECALL}"="1"]?Set(GOSUB_RETVAL=TRUE)) [pbx_config]
  446.                     3. MacroExit()                                [pbx_config]
  447.   Include =>        'macro-blkvm-check-custom'                    [pbx_config]
  448.  
  449. [ Context 'macro-blkvm-clr' created by 'pbx_config' ]
  450.   's' =>            1. Set(SHARED(BLKVM,${BLKVM_CHANNEL})=)       [pbx_config]
  451.                     2. Set(GOSUB_RETVAL=)                         [pbx_config]
  452.                     3. MacroExit()                                [pbx_config]
  453.   Include =>        'macro-blkvm-clr-custom'                      [pbx_config]
  454.  
  455. [ Context 'macro-blkvm-set' created by 'pbx_config' ]
  456.   's' =>            1. ExecIf($[!${EXISTS(${BLKVM_CHANNEL})} | "{ARG1}" = "reset"]?Set(__BLKVM_CHANNEL=${CHANNEL})) [pbx_config]
  457.                     2. Set(SHARED(BLKVM,${BLKVM_CHANNEL})=TRUE)   [pbx_config]
  458.                     3. Set(GOSUB_RETVAL=TRUE)                     [pbx_config]
  459.                     4. MacroExit()                                [pbx_config]
  460.   Include =>        'macro-blkvm-set-custom'                      [pbx_config]
  461.  
  462. [ Context 'macro-blkvm-setifempty' created by 'pbx_config' ]
  463.   's' =>            1. GotoIf($[!${EXISTS(${BLKVM_CHANNEL})}]?init) [pbx_config]
  464.                     2. Set(GOSUB_RETVAL=${SHARED(BLKVM,${BLKVM_CHANNEL})}) [pbx_config]
  465.                     3. MacroExit()                                [pbx_config]
  466.      [init]         4. Set(__BLKVM_CHANNEL=${CHANNEL})            [pbx_config]
  467.                     5. Set(SHARED(BLKVM,${BLKVM_CHANNEL})=TRUE)   [pbx_config]
  468.                     6. Set(GOSUB_RETVAL=TRUE)                     [pbx_config]
  469.                     7. MacroExit()                                [pbx_config]
  470.   Include =>        'macro-blkvm-setifempty-custom'               [pbx_config]
  471.  
  472. [ Context 'originate-skipvm' created by 'pbx_config' ]
  473.   '_.X' =>          1. Macro(blkvm-set,)                          [pbx_config]
  474.                     2. Goto(from-internal,${EXTEN},1)             [pbx_config]
  475.   Include =>        'originate-skipvm-custom'                     [pbx_config]
  476.  
  477. [ Context 'macro-simple-dial' created by 'pbx_config' ]
  478.   'docfb' =>        1. GotoIf($["${DB(AMPUSER/${CFBEXT}/device)}" = "" ]?chlocal) [pbx_config]
  479.                     2. Dial(Local/${CFBEXT}@ext-local,${RT},${DIAL_OPTIONS}) [pbx_config]
  480.                     3. Return()                                   [pbx_config]
  481.      [chlocal]      4. ExecIf($["${DIRECTION}" = "INBOUND"]?Set(DIAL_OPTIONS=${STRREPLACE(DIAL_OPTIONS,T)}I)) [pbx_config]
  482.                     5. Dial(Local/${CFBEXT}@from-internal/n,${RT},${DIAL_OPTIONS}) [pbx_config]
  483.                     6. Return()                                   [pbx_config]
  484.   'docfu' =>        1. GotoIf($["${DB(AMPUSER/${CFUEXT}/device)}" = "" ]?chlocal) [pbx_config]
  485.                     2. Dial(Local/${CFUEXT}@ext-local,${RT},${DIAL_OPTIONS}) [pbx_config]
  486.                     3. Return()                                   [pbx_config]
  487.      [chlocal]      4. ExecIf($["${DIRECTION}" = "INBOUND"]?Set(DIAL_OPTIONS=${STRREPLACE(DIAL_OPTIONS,T)}I)) [pbx_config]
  488.                     5. Dial(Local/${CFUEXT}@from-internal/n,${RT},${DIAL_OPTIONS}) [pbx_config]
  489.                     6. Return()                                   [pbx_config]
  490.   's' =>            1. Set(__EXTTOCALL=${ARG1})                   [pbx_config]
  491.                     2. Set(RT=${ARG2})                            [pbx_config]
  492.                     3. Set(CFUEXT=${DB(CFU/${EXTTOCALL})})        [pbx_config]
  493.                     4. Set(CFBEXT=${DB(CFB/${EXTTOCALL})})        [pbx_config]
  494.                     5. Set(CWI_TMP=${CWIGNORE})                   [pbx_config]
  495.      [macrodial]    6. Macro(dial-one,${RT},${DIAL_OPTIONS},${EXTTOCALL}) [pbx_config]
  496.                     7. Set(__CWIGNORE=${CWI_TMP})                 [pbx_config]
  497.                     8. Set(PR_DIALSTATUS=${DIALSTATUS})           [pbx_config]
  498.      [calldocfu]    9. GosubIf($["${PR_DIALSTATUS}"="NOANSWER" & "${CFUEXT}"!=""]?docfu,1()) [pbx_config]
  499.      [calldocfb]    10. GosubIf($["${PR_DIALSTATUS}"="BUSY" & "${CFBEXT}"!=""]?docfb,1()) [pbx_config]
  500.                     11. Set(DIALSTATUS=${PR_DIALSTATUS})          [pbx_config]
  501.                     12. Goto(s-${DIALSTATUS},1)                   [pbx_config]
  502.   '_s-.' =>         1. Noop(Extension is reporting ${EXTEN})      [pbx_config]
  503.   Include =>        'macro-simple-dial-custom'                    [pbx_config]
  504.  
  505. [ Context 'macro-exten-vm' created by 'pbx_config' ]
  506.   'clrheader' =>    1. ExecIf($[${LEN(${SIPURI})}&"${SIPURI}"="${SIP_URI_OPTIONS}"]?Set(SIP_URI_OPTIONS=)) [pbx_config]
  507.                     2. ExecIf($[${LEN(${ALERTINFO})}]?SIPRemoveHeader(${ALERTINFO})) [pbx_config]
  508.                     3. ExecIf($[${LEN(${CALLINFO})}]?SIPRemoveHeader(${CALLINFO})) [pbx_config]
  509.                     4. Return()                                   [pbx_config]
  510.   'docfb' =>        1. ExecIf($["${DB(AMPUSER/${EXTTOCALL}/cfringtimer)}"="-1"|("${ARG1}"="novm"&"${ARG4}"="1")]?StackPop()) [pbx_config]
  511.                     2. GotoIf($["${DB(AMPUSER/${EXTTOCALL}/cfringtimer)}"="-1"|("${ARG1}"="novm"&"${ARG4}"="1")]?from-internal,${DB(CFB/${EXTTOCALL})},1) [pbx_config]
  512.                     3. Set(RTCF=${IF($["${DB(AMPUSER/${EXTTOCALL}/cfringtimer)}"="0"]?${RT}:${DB(AMPUSER/${EXTTOCALL}/cfringtimer)})}) [pbx_config]
  513.                     4. ExecIf($["${DIRECTION}" = "INBOUND"]?Set(DIAL_OPTIONS=${STRREPLACE(DIAL_OPTIONS,T)}I)) [pbx_config]
  514.                     5. Dial(Local/${DB(CFB/${EXTTOCALL})}@from-internal/n,${RTCF},${DIAL_OPTIONS}) [pbx_config]
  515.                     6. Return()                                   [pbx_config]
  516.   'docfu' =>        1. ExecIf($["${DB(AMPUSER/${EXTTOCALL}/cfringtimer)}"="-1"|("${ARG1}"="novm"&"${ARG3}"="1")]?StackPop()) [pbx_config]
  517.                     2. GotoIf($["${DB(AMPUSER/${EXTTOCALL}/cfringtimer)}"="-1"|("${ARG1}"="novm"&"${ARG3}"="1")]?from-internal,${DB(CFU/${EXTTOCALL})},1) [pbx_config]
  518.                     3. Set(RTCF=${IF($["${DB(AMPUSER/${EXTTOCALL}/cfringtimer)}"="0"]?${RT}:${DB(AMPUSER/${EXTTOCALL}/cfringtimer)})}) [pbx_config]
  519.                     4. ExecIf($["${DIRECTION}" = "INBOUND"]?Set(DIAL_OPTIONS=${STRREPLACE(DIAL_OPTIONS,T)}I)) [pbx_config]
  520.                     5. Dial(Local/${DB(CFU/${EXTTOCALL})}@from-internal/n,${RTCF},${DIAL_OPTIONS}) [pbx_config]
  521.                     6. Return()                                   [pbx_config]
  522.   'exit' =>         1. Playback(beep&line-busy-transfer-menu&silence/1) [pbx_config]
  523.                     2. MacroExit()                                [pbx_config]
  524.   's' =>            1. Macro(user-callerid,)                      [pbx_config]
  525.                     2. Set(RingGroupMethod=none)                  [pbx_config]
  526.                     3. Set(__EXTTOCALL=${ARG2})                   [pbx_config]
  527.                     4. Set(__PICKUPMARK=${ARG2})                  [pbx_config]
  528.                     5. Set(RT=${IF($["${ARG1}"!="novm" | "${DB(CFU/${EXTTOCALL})}"!="" | "${DB(CFB/${EXTTOCALL})}"!="" | "${ARG3}"="1" | "${ARG4}"="1" | "${ARG5}"="1"]?${RINGTIMER}:)}) [pbx_config]
  529.                     6. ExecIf($[$["${REDIRECTING(reason)}" = "send_to_vm" | "${SIP_HEADER(X-Digium-Call-Feature)}" = "feature_send_to_vm" | "${PJSIP_HEADER(read,X-Digium-Call-Feature)}" = "feature_send_to_vm"] & "${ARG1}" != "novm"]?Macro(vm,${ARG1},DIRECTDIAL,${IVR_RETVM})) [pbx_config]
  530.                     7. ExecIf($[$["${REDIRECTING(reason)}" = "send_to_vm" | "${SIP_HEADER(X-Digium-Call-Feature)}" = "feature_send_to_vm" | "${PJSIP_HEADER(read,X-Digium-Call-Feature)}" = "feature_send_to_vm"] & "${ARG1}" != "novm"]?MacroExit()) [pbx_config]
  531.                     8. ExecIf($["${SIP_HEADER(X-Digium-Call-Feature)}" = "feature_intercom" | "${PJSIP_HEADER(read,X-Digium-Call-Feature)}" = "feature_intercom"]?Gosub(ext-intercom,${INTERCOMCODE}${EXTTOCALL},1())) [pbx_config]
  532.                     9. ExecIf($["${SIP_HEADER(X-Digium-Call-Feature)}" = "feature_intercom" | "${PJSIP_HEADER(read,X-Digium-Call-Feature)}" = "feature_intercom"]?MacroExit()) [pbx_config]
  533.                     10. ExecIf($["${SIP_HEADER(X-Digium-Call-Feature)}" = "feature_monitor" | "${PJSIP_HEADER(read,X-Digium-Call-Feature)}" = "feature_monitor"]?ChanSpy(${DB(DEVICE/${EXTTOCALL}/dial},q)) [pbx_config]
  534.                     11. ExecIf($["${SIP_HEADER(X-Digium-Call-Feature)}" = "feature_monitor" | "${PJSIP_HEADER(read,X-Digium-Call-Feature)}" = "feature_monitor"]?MacroExit()) [pbx_config]
  535.      [checkrecord]  12. Gosub(sub-record-check,s,1(exten,${EXTTOCALL},dontcare)) [pbx_config]
  536.                     13. GotoIf($["${CUT(CHANNEL,@,2):5:5}"="queue"|"${AMPUSER}"=""|${LEN(${FROM_DID})}|"${DB(AMPUSER/${EXTTOCALL}/answermode)}"!="intercom"|${LEN(${BLINDTRANSFER})}|"${EXTENSION_STATE(${EXTTOCALL})}"!="NOT_INUSE"|"${CC_RECALL}"!=""]?macrodial) [pbx_config]
  537.                     14. Set(INTERCOM_EXT_DOPTIONS=${DIAL_OPTIONS}) [pbx_config]
  538.                     15. Set(INTERCOM_RETURN=TRUE)                 [pbx_config]
  539.                     16. Gosub(ext-intercom,*80${EXTTOCALL},1())   [pbx_config]
  540.                     17. Set(INTERCOM_RETURN=)                     [pbx_config]
  541.                     18. Set(INTERCOM_EXT_DOPTIONS=)               [pbx_config]
  542.      [macrodial]    19. GosubIf($["${INTERCOM_CALL}"="TRUE" & ${LEN(${BLINDTRANSFER})}]?clrheader,1()) [pbx_config]
  543.                     20. Macro(dial-one,${RT},${DIAL_OPTIONS},${EXTTOCALL}) [pbx_config]
  544.                     21. Set(SV_DIALSTATUS=${DIALSTATUS})          [pbx_config]
  545.      [calldocfu]    22. GosubIf($[("${SV_DIALSTATUS}"="NOANSWER"|"${SV_DIALSTATUS}"="CHANUNAVAIL") & "${DB(CFU/${EXTTOCALL})}"!="" & "${SCREEN}"=""]?docfu,1()) [pbx_config]
  546.      [calldocfb]    23. GosubIf($["${SV_DIALSTATUS}"="BUSY" & "${DB(CFB/${EXTTOCALL})}"!="" & "${SCREEN}"=""]?docfb,1()) [pbx_config]
  547.                     24. Set(DIALSTATUS=${SV_DIALSTATUS})          [pbx_config]
  548.                     25. ExecIf($[("${DIALSTATUS}"="NOANSWER"&"${ARG3}"="1")|("${DIALSTATUS}"="BUSY"&"${ARG4}"="1")|("${DIALSTATUS}"="CHANUNAVAIL"&"${ARG5}"="1")]?MacroExit()) [pbx_config]
  549.                     26. GotoIf($["${ARG1}"="novm"]?s-${DIALSTATUS},1) [pbx_config]
  550.                     27. Macro(vm,${ARG1},${DIALSTATUS},${IVR_RETVM}) [pbx_config]
  551.   's-BUSY' =>       1. GotoIf($["${IVR_RETVM}"="RETURN" & "${IVR_CONTEXT}"!=""]?exit,1) [pbx_config]
  552.                     2. Playtones(busy)                            [pbx_config]
  553.                     3. Busy(20)                                   [pbx_config]
  554.   '_s-!' =>         1. GotoIf($["${IVR_RETVM}"="RETURN" & "${IVR_CONTEXT}"!=""]?exit,1) [pbx_config]
  555.                     2. Playtones(congestion)                      [pbx_config]
  556.                     3. Congestion(10)                             [pbx_config]
  557.   Include =>        'macro-exten-vm-custom'                       [pbx_config]
  558.  
  559. [ Context 'macro-vm' created by 'pbx_config' ]
  560.   'a' =>            1. Macro(get-vmcontext,${MEXTEN})             [pbx_config]
  561.                     2. GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/novmstar)}" = "1"]?s,1) [pbx_config]
  562.                     3. GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/*/ext)}" = "0"]?adef,1) [pbx_config]
  563.                     4. Set(VMX_ADEST_EXT=${DB_RESULT})            [pbx_config]
  564.      [acontext]     5. Set(VMX_ADEST_CONTEXT=${IF($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/*/context)}" = "1"]?${DB_RESULT}:${VMX_CONTEXT})}) [pbx_config]
  565.      [apri]         6. Set(VMX_ADEST_PRI=${IF($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/*/pri)}" = "1"]?${DB_RESULT}:${VMX_PRI})}) [pbx_config]
  566.                     7. Goto(${VMX_ADEST_CONTEXT},${VMX_ADEST_EXT},${VMX_ADEST_PRI}) [pbx_config]
  567.   'adef' =>         1. VoiceMailMain(${MEXTEN}@${VMCONTEXT})      [pbx_config]
  568.                     2. GotoIf($["${RETVM}" = "RETURN"]?exit-RETURN,1) [pbx_config]
  569.                     3. Hangup()                                   [pbx_config]
  570.   'dovm' =>         1. Noop(VMX Timeout - go to voicemail)        [pbx_config]
  571.                     2. VoiceMail(${MEXTEN}@${VMCONTEXT},${VMX_OPTS}${VMGAIN}) [pbx_config]
  572.                     3. Goto(exit-${VMSTATUS},1)                   [pbx_config]
  573.   'exit-FAILED' =>  1. Playback(im-sorry&an-error-has-occurred)   [pbx_config]
  574.                     2. GotoIf($["${RETVM}" = "RETURN"]?exit-RETURN,1) [pbx_config]
  575.                     3. Hangup()                                   [pbx_config]
  576.   'exit-RETURN' =>  1. Noop(Returning From Voicemail because macro) [pbx_config]
  577.   'exit-SUCCESS' => 1. GotoIf($["${RETVM}" = "RETURN"]?exit-RETURN,1) [pbx_config]
  578.                     2. Playback(goodbye)                          [pbx_config]
  579.                     3. Hangup()                                   [pbx_config]
  580.   'exit-USEREXIT' => 1. GotoIf($["${RETVM}" = "RETURN"]?exit-RETURN,1) [pbx_config]
  581.                     2. Playback(goodbye)                          [pbx_config]
  582.                     3. Hangup()                                   [pbx_config]
  583.   'o' =>            1. Playback(one-moment-please)                [pbx_config]
  584.                     2. GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/0/ext)}" = "0"]?doopdef) [pbx_config]
  585.                     3. Set(VMX_OPDEST_EXT=${DB_RESULT})           [pbx_config]
  586.      [opcontext]    4. Set(VMX_OPDEST_CONTEXT=${IF($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/0/context)}" = "1"]?${DB_RESULT}:${VMX_CONTEXT})}) [pbx_config]
  587.      [oppri]        5. Set(VMX_OPDEST_PRI=${IF($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/0/pri)}" = "1"]?${DB_RESULT}:${VMX_PRI})}) [pbx_config]
  588.                     6. Goto(${VMX_OPDEST_CONTEXT},${VMX_OPDEST_EXT},${VMX_OPDEST_PRI}) [pbx_config]
  589.      [doopdef]      7. GotoIf($["x${OPERATOR_XTN}"="x"]?nooper:from-internal,${OPERATOR_XTN},1) [pbx_config]
  590.      [nooper]       8. GotoIf($["x${FROM_DID}"="x"]?nodid)        [pbx_config]
  591.                     9. Dial(Local/${FROM_DID}@from-pstn,)         [pbx_config]
  592.                     10. Macro(hangup,)                            [pbx_config]
  593.      [nodid]        11. Dial(Local/s@from-pstn,)                  [pbx_config]
  594.                     12. Macro(hangup,)                            [pbx_config]
  595.   's' =>            1. Macro(user-callerid,SKIPTTL)               [pbx_config]
  596.                     2. Set(VMGAIN=${IF($["foo${VM_GAIN}"!="foo"]?"g(${VM_GAIN})": )}) [pbx_config]
  597.                     3. Macro(blkvm-check,)                        [pbx_config]
  598.                     4. GotoIf($["${GOSUB_RETVAL}" != "TRUE"]?vmx,1) [pbx_config]
  599.                     5. Hangup()                                   [pbx_config]
  600.   's-BUSY' =>       1. Noop(BUSY voicemail)                       [pbx_config]
  601.                     2. Macro(get-vmcontext,${MEXTEN})             [pbx_config]
  602.                     3. VoiceMail(${MEXTEN}@${VMCONTEXT},${VM_OPTS}b${VMGAIN}) [pbx_config]
  603.                     4. Goto(exit-${VMSTATUS},1)                   [pbx_config]
  604.   's-DIRECTDIAL' => 1. Noop(DIRECTDIAL voicemail)                 [pbx_config]
  605.                     2. Macro(get-vmcontext,${MEXTEN})             [pbx_config]
  606.                     3. VoiceMail(${MEXTEN}@${VMCONTEXT},${VM_OPTS}${VM_DDTYPE}${VMGAIN}) [pbx_config]
  607.                     4. Goto(exit-${VMSTATUS},1)                   [pbx_config]
  608.   's-INSTRUCT' =>   1. Noop(NOMESSAGE (beeb only) voicemail)      [pbx_config]
  609.                     2. Macro(get-vmcontext,${MEXTEN})             [pbx_config]
  610.                     3. VoiceMail(${MEXTEN}@${VMCONTEXT},${VM_OPTS}${VMGAIN}) [pbx_config]
  611.                     4. Goto(exit-${VMSTATUS},1)                   [pbx_config]
  612.   's-NOMESSAGE' =>  1. Noop(NOMESSAGE (beep only) voicemail)      [pbx_config]
  613.                     2. Macro(get-vmcontext,${MEXTEN})             [pbx_config]
  614.                     3. VoiceMail(${MEXTEN}@${VMCONTEXT},s${VM_OPTS}${VMGAIN}) [pbx_config]
  615.                     4. Goto(exit-${VMSTATUS},1)                   [pbx_config]
  616.   't' =>            1. Hangup()                                   [pbx_config]
  617.   'vmx' =>          1. Set(MEXTEN=${ARG1})                        [pbx_config]
  618.                     2. Set(MMODE=${ARG2})                         [pbx_config]
  619.                     3. Set(RETVM=${ARG3})                         [pbx_config]
  620.                     4. Set(MODE=${IF($["${MMODE}"="BUSY"]?busy:unavail)}) [pbx_config]
  621.                     5. Macro(get-vmcontext,${MEXTEN})             [pbx_config]
  622.                     6. Set(MODE=${IF($[(${STAT(f,${ASTSPOOLDIR}/voicemail/${VMCONTEXT}/${MEXTEN}/temp.wav)} = 1) || (${STAT(f,${ASTSPOOLDIR}/voicemail/${VMCONTEXT}/${MEXTEN}/temp.WAV)} = 1)]?temp:${MODE})}) [pbx_config]
  623.                     7. Noop(MODE IS: ${MODE})                     [pbx_config]
  624.                     8. GotoIf($["${DB(AMPUSER/${MEXTEN}/vmx/${MODE}/state)}" != "enabled"]?chknomsg) [pbx_config]
  625.                     9. Set(VM_OPTS=${IF($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/vmxopts/timeout)}" = "1"]?${DB_RESULT}:${VM_OPTS})}) [pbx_config]
  626.      [chknomsg]     10. GotoIf($["${MMODE}"="NOMESSAGE"]?s-${MMODE},1) [pbx_config]
  627.                     11. GotoIf($["${MMODE}" != "DIRECTDIAL"]?notdirect) [pbx_config]
  628.                     12. Set(MODE=${IF($["${REGEX("[b]" ${VM_DDTYPE})}" = "1"]?busy:${MODE})}) [pbx_config]
  629.      [notdirect]    13. Noop(Checking if ext ${MEXTEN} is enabled: ${DB(AMPUSER/${MEXTEN}/vmx/${MODE}/state)}) [pbx_config]
  630.                     14. GotoIf($["${DB(AMPUSER/${MEXTEN}/vmx/${MODE}/state)}" != "enabled"]?s-${MMODE},1) [pbx_config]
  631.                     15. GotoIf($[(${STAT(f,${ASTSPOOLDIR}/voicemail/${VMCONTEXT}/${MEXTEN}/temp.wav)} = 1) || (${STAT(f,${ASTSPOOLDIR}/voicemail/${VMCONTEXT}/${MEXTEN}/temp.WAV)} = 1)]?tmpgreet) [pbx_config]
  632.                     16. GotoIf($[(${STAT(f,${ASTSPOOLDIR}/voicemail/${VMCONTEXT}/${MEXTEN}/${MODE}.wav)} = 0) && (${STAT(f,${ASTSPOOLDIR}/voicemail/${VMCONTEXT}/${MEXTEN}/${MODE}.WAV)} = 0)]?nofile) [pbx_config]
  633.                     17. Set(VMX_TIMEOUT=2)                        [pbx_config]
  634.                     18. Set(VMX_REPEAT=1)                         [pbx_config]
  635.                     19. Set(VMX_LOOPS=1)                          [pbx_config]
  636.                     20. Set(LOOPCOUNT=0)                          [pbx_config]
  637.                     21. Set(VMX_REPEAT=${IF($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/repeat)}" = "1"]?${DB_RESULT}:${VMX_REPEAT})}) [pbx_config]
  638.      [vmxtime]      22. Set(VMX_TIMEOUT=${IF($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/timeout)}" = "1"]?${DB_RESULT}:${VMX_TIMEOUT})}) [pbx_config]
  639.      [vmxloops]     23. Set(VMX_LOOPS=${IF($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/loops)}" = "1"]?${DB_RESULT}:${VMX_LOOPS})}) [pbx_config]
  640.      [vmxanswer]    24. Answer()                                  [pbx_config]
  641.      [loopstart]    25. Read(ACTION,${ASTSPOOLDIR}/voicemail/${VMCONTEXT}/${MEXTEN}/${MODE},1,skip,${VMX_REPEAT},${VMX_TIMEOUT}) [pbx_config]
  642.                     26. GotoIf($["${EXISTS(${ACTION})}" = "1"]?checkopt) [pbx_config]
  643.      [noopt]        27. Noop(Timeout: going to timeout dest)      [pbx_config]
  644.                     28. Set(VMX_OPTS=${DB(AMPUSER/${MEXTEN}/vmx/${MODE}/vmxopts/timeout)}) [pbx_config]
  645.      [chktime]      29. GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/timedest/ext)}" = "0"]?dotime) [pbx_config]
  646.                     30. Set(VMX_TIMEDEST_EXT=${DB_RESULT})        [pbx_config]
  647.                     31. Set(VMX_TIMEDEST_CONTEXT=${IF($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/timedest/context)}" = "1"]?${DB_RESULT}:${VMX_TIMEDEST_CONTEXT})}) [pbx_config]
  648.      [timepri]      32. Set(VMX_TIMEDEST_PRI=${IF($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/timedest/pri)}" = "1"]?${DB_RESULT}:${VMX_TIMEDEST_PRI})}) [pbx_config]
  649.      [dotime]       33. Goto(${VMX_TIMEDEST_CONTEXT},${VMX_TIMEDEST_EXT},${VMX_TIMEDEST_PRI}) [pbx_config]
  650.      [checkopt]     34. GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/${ACTION}/ext)}" = "1"]?doopt) [pbx_config]
  651.                     35. GotoIf($["${ACTION}" = "0"]?o,1)          [pbx_config]
  652.                     36. GotoIf($["${ACTION}" = "*"]?adef,1)       [pbx_config]
  653.                     37. Set(LOOPCOUNT=$[${LOOPCOUNT} + 1])        [pbx_config]
  654.                     38. GotoIf($["${LOOPCOUNT}" > "${VMX_LOOPS}"]?toomany) [pbx_config]
  655.                     39. Playback(pm-invalid-option&please-try-again) [pbx_config]
  656.                     40. Goto(loopstart)                           [pbx_config]
  657.      [toomany]      41. Noop(Too Many invalid entries, got to invalid dest) [pbx_config]
  658.                     42. Set(VMX_OPTS=${VMX_OPTS_LOOP})            [pbx_config]
  659.                     43. Set(VMX_OPTS=${IF($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/vmxopts/loops)}" = "1"]?${DB_RESULT}:${VMX_OPTS})}) [pbx_config]
  660.      [chkloop]      44. GotoIf($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/loopdest/ext)}" = "0"]?doloop) [pbx_config]
  661.                     45. Set(VMX_LOOPDEST_EXT=${DB_RESULT})        [pbx_config]
  662.                     46. Set(VMX_LOOPDEST_CONTEXT=${IF($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/loopdest/context)}" = "1"]?${DB_RESULT}:${VMX_LOOPDEST_CONTEXT})}) [pbx_config]
  663.      [looppri]      47. Set(VMX_LOOPDEST_PRI=${IF($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/loopdest/pri)}" = "1"]?${DB_RESULT}:${VMX_LOOPDEST_PRI})}) [pbx_config]
  664.      [doloop]       48. Goto(${VMX_LOOPDEST_CONTEXT},${VMX_LOOPDEST_EXT},${VMX_LOOPDEST_PRI}) [pbx_config]
  665.      [doopt]        49. Noop(Got a valid option: ${DB_RESULT})    [pbx_config]
  666.                     50. Set(VMX_EXT=${DB_RESULT})                 [pbx_config]
  667.                     51. GotoIf($["${VMX_EXT}" != "dovm"]?getdest) [pbx_config]
  668.      [vmxopts]      52. Set(VMX_OPTS=${IF($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/vmxopts/dovm)}" = "1"]?${DB_RESULT}:${VMX_OPTS_DOVM})}) [pbx_config]
  669.      [vmxdovm]      53. Goto(dovm,1)                              [pbx_config]
  670.      [getdest]      54. Set(VMX_CONTEXT=${IF($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/${ACTION}/context)}" = "1"]?${DB_RESULT}:${VMX_CONTEXT})}) [pbx_config]
  671.      [vmxpri]       55. Set(VMX_PRI=${IF($["${DB_EXISTS(AMPUSER/${MEXTEN}/vmx/${MODE}/${ACTION}/pri)}" = "1"]?${DB_RESULT}:${VMX_PRI})}) [pbx_config]
  672.      [vmxgoto]      56. Goto(${VMX_CONTEXT},${VMX_EXT},${VMX_PRI}) [pbx_config]
  673.      [nofile]       57. Noop(File for mode: ${MODE} does not exist, SYSTEMSTATUS: ${SYSTEMSTATUS}, going to normal voicemail) [pbx_config]
  674.                     58. Goto(s-${MMODE},1)                        [pbx_config]
  675.      [tmpgreet]     59. Noop(Temporary Greeting Detected, going to normal voicemail) [pbx_config]
  676.                     60. Goto(s-${MMODE},1)                        [pbx_config]
  677.   '_s-.' =>         1. Macro(get-vmcontext,${MEXTEN})             [pbx_config]
  678.                     2. VoiceMail(${MEXTEN}@${VMCONTEXT},${VM_OPTS}u${VMGAIN}) [pbx_config]
  679.                     3. Goto(exit-${VMSTATUS},1)                   [pbx_config]
  680.   Include =>        'macro-vm-custom'                             [pbx_config]
  681.  
  682. [ Context 'macro-block-cf' created by 'pbx_config' ]
  683.   's-ANSWER' =>     1. Noop(Call successfully answered - Hanging up now) [pbx_config]
  684.                     2. Macro(hangupcall,)                         [pbx_config]
  685.   '_X.' =>          1. Hangup()                                   [pbx_config]
  686.   Include =>        'macro-block-cf-custom'                       [pbx_config]
  687.  
  688. [ Context 'macro-setmusic' created by 'pbx_config' ]
  689.   's' =>            1. Set(CHANNEL(musicclass)=${ARG1})           [pbx_config]
  690.   Include =>        'macro-setmusic-custom'                       [pbx_config]
  691.  
  692. [ Context 'macro-dial-confirm' created by 'pbx_config' ]
  693.   's' =>            1. Set(DB(RG/${ARG4}/${CHANNEL})=RINGING)     [pbx_config]
  694.                     2. Set(__UNIQCHAN=${CHANNEL})                 [pbx_config]
  695.                     3. Set(USE_CONFIRMATION=TRUE)                 [pbx_config]
  696.                     4. Set(RINGGROUP_INDEX=${ARG4})               [pbx_config]
  697.                     5. Set(FORCE_CONFIRM=)                        [pbx_config]
  698.                     6. Set(ARG4=)                                 [pbx_config]
  699.                     7. Macro(dial,${ARG1},${ARG2},${ARG3})        [pbx_config]
  700.                     8. Noop(Deleting: RG/${RINGGROUP_INDEX}/${CHANNEL} ${DB_DELETE(RG/${RINGGROUP_INDEX}/${CHANNEL})}) [pbx_config]
  701.                     9. Set(USE_CONFIRMATION=)                     [pbx_config]
  702.                     10. Set(RINGGROUP_INDEX=)                     [pbx_config]
  703.   Include =>        'macro-dial-confirm-custom'                   [pbx_config]
  704.  
  705. [ Context 'from-dahdi' created by 'pbx_config' ]
  706.   's' =>            1. Noop(Entering from-dahdi with DID == ${DID}) [pbx_config]
  707.                     2. Ringing()                                  [pbx_config]
  708.                     3. Set(DID=${IF($["${DID}"= ""]?s:${DID})})   [pbx_config]
  709.                     4. Noop(DID is now ${DID})                    [pbx_config]
  710.                     5. GotoIf($["${CHANNEL:0:5}"="DAHDI"]?dahdiok:checkzap) [pbx_config]
  711.      [checkzap]     6. GotoIf($["${CHANNEL:0:3}"="Zap"]?zapok:neither) [pbx_config]
  712.      [neither]      7. Goto(from-pstn,${DID},1)                   [pbx_config]
  713.                     8. Macro(Hangupcall,dummy)                    [pbx_config]
  714.      [dahdiok]      9. Noop(Is a DAHDi Channel)                   [pbx_config]
  715.                     10. Set(CHAN=${CHANNEL:6})                    [pbx_config]
  716.                     11. Set(CHAN=${CUT(CHAN,-,1)})                [pbx_config]
  717.                     12. Macro(from-dahdi-${CHAN},${DID},1)        [pbx_config]
  718.                     13. Noop(Returned from Macro from-dahdi-${CHAN}) [pbx_config]
  719.                     14. Goto(from-pstn,${DID},1)                  [pbx_config]
  720.      [zapok]        15. Noop(Is a Zaptel Channel)                 [pbx_config]
  721.                     16. Set(CHAN=${CHANNEL:4})                    [pbx_config]
  722.                     17. Set(CHAN=${CUT(CHAN,-,1)})                [pbx_config]
  723.                     18. Macro(from-dahdi-${CHAN},${DID},1)        [pbx_config]
  724.                     19. Noop(Returned from Macro from-dahdi-${CHAN}) [pbx_config]
  725.                     20. Goto(from-pstn,${DID},1)                  [pbx_config]
  726.   '_X.' =>          1. Set(DID=${EXTEN})                          [pbx_config]
  727.                     2. Goto(s,1)                                  [pbx_config]
  728.   Include =>        'from-dahdi-custom'                           [pbx_config]
  729.  
  730. [ Context 'from-zaptel' created by 'pbx_config' ]
  731.   'foo' =>          1. Noop(bar)                                  [pbx_config]
  732.   Include =>        'from-zaptel-custom'                          [pbx_config]
  733.   Include =>        'from-dahdi'                                  [pbx_config]
  734.  
  735. [ Context 'macro-outbound-callerid' created by 'pbx_config' ]
  736.   's' =>            1. ExecIf($["${CALLINGNAMEPRES_SV}" != ""]?Set(CALLERPRES(name-pres)=${CALLINGNAMEPRES_SV})) [pbx_config]
  737.                     2. ExecIf($["${CALLINGNUMPRES_SV}" != ""]?Set(CALLERPRES(num-pres)=${CALLINGNUMPRES_SV})) [pbx_config]
  738.                     3. ExecIf($["${REALCALLERIDNUM:1:2}" = ""]?Set(REALCALLERIDNUM=${CALLERID(number)})) [pbx_config]
  739.      [start]        4. GotoIf($[ $["${REALCALLERIDNUM}" = ""] | $["${KEEPCID}" != "TRUE"] | $["${OUTKEEPCID_${ARG1}}" = "on"] ]?normcid) [pbx_config]
  740.                     5. Set(USEROUTCID=${REALCALLERIDNUM})         [pbx_config]
  741.                     6. GotoIf($["foo${DB(AMPUSER/${REALCALLERIDNUM}/device)}" = "foo"]?bypass) [pbx_config]
  742.      [normcid]      7. Set(USEROUTCID=${DB(AMPUSER/${AMPUSER}/outboundcid)}) [pbx_config]
  743.      [bypass]       8. Set(EMERGENCYCID=${DB(DEVICE/${REALCALLERIDNUM}/emergency_cid)}) [pbx_config]
  744.                     9. Set(TRUNKOUTCID=${OUTCID_${ARG1}})         [pbx_config]
  745.                     10. GotoIf($["${EMERGENCYROUTE:1:2}" = "" | "${EMERGENCYCID:1:2}" = ""]?trunkcid) [pbx_config]
  746.                     11. Set(CALLERID(all)=${EMERGENCYCID})        [pbx_config]
  747.                     12. Set(CDR(outbound_cnum)=${CALLERID(num)})  [pbx_config]
  748.                     13. Set(CDR(outbound_cnam)=${CALLERID(name)}) [pbx_config]
  749.      [exit]         14. MacroExit()                               [pbx_config]
  750.      [trunkcid]     15. ExecIf($[${LEN(${TRUNKOUTCID})} != 0]?Set(CALLERID(all)=${TRUNKOUTCID})) [pbx_config]
  751.      [usercid]      16. ExecIf($[${LEN(${USEROUTCID})} != 0]?Set(CALLERID(all)=${USEROUTCID})) [pbx_config]
  752.                     17. ExecIf($[${LEN(${TRUNKCIDOVERRIDE})} != 0 | ${LEN(${FORCEDOUTCID_${ARG1}})} != 0]?Set(CALLERID(all)=${IF($[${LEN(${FORCEDOUTCID_${ARG1}})}=0]?${TRUNKCIDOVERRIDE}:${FORCEDOUTCID_${ARG1}})})) [pbx_config]
  753.      [hidecid]      18. ExecIf($["${CALLERID(name)}"="hidden"]?Set(CALLERPRES(name-pres)=prohib_passed_screen)) [pbx_config]
  754.                     19. ExecIf($["${CALLERID(name)}"="hidden"]?Set(CALLERPRES(num-pres)=prohib_passed_screen)) [pbx_config]
  755.                     20. Set(CDR(outbound_cnum)=${CALLERID(num)})  [pbx_config]
  756.                     21. Set(CDR(outbound_cnam)=${CALLERID(name)}) [pbx_config]
  757.   Include =>        'macro-outbound-callerid-custom'              [pbx_config]
  758.  
  759. [ Context 'macro-user-callerid' created by 'pbx_config' ]
  760.   'en' =>           1. Playback(im-sorry&an-error-has-occurred&with&call-forwarding) [pbx_config]
  761.                     2. Return()                                   [pbx_config]
  762.      [hook_1]       3. Playback(beep&im-sorry&your&simul-call-limit-reached&goodbye) [pbx_config]
  763.                     4. Return()                                   [pbx_config]
  764.   'h' =>            1. Macro(hangupcall,)                         [pbx_config]
  765.   'ja' =>           1. Playback(im-sorry&call-forwarding&jp-no&an-error-has-occured) [pbx_config]
  766.                     2. Return()                                   [pbx_config]
  767.      [hook_1]       3. Playback(beep&im-sorry&simul-call-limit-reached) [pbx_config]
  768.                     4. Return()                                   [pbx_config]
  769.   'lang-playback' => 1. GosubIf($[${DIALPLAN_EXISTS(macro-user-callerid,${CHANNEL(language)})}]?macro-user-callerid,${CHANNEL(language)},${ARG1}():macro-user-callerid,en,${ARG1}()) [pbx_config]
  770.                     2. Return()                                   [pbx_config]
  771.   's' =>            1. Set(TOUCH_MONITOR=${UNIQUEID})             [pbx_config]
  772.                     2. Set(AMPUSER=${IF($["${AMPUSER}" = ""]?${CALLERID(number)}:${AMPUSER})}) [pbx_config]
  773.                     3. GotoIf($["${CUT(CHANNEL,@,2):5:5}"="queue" | ${LEN(${AMPUSERCIDNAME})}]?report) [pbx_config]
  774.                     4. ExecIf($["${REALCALLERIDNUM:1:2}" = ""]?Set(REALCALLERIDNUM=${CALLERID(number)})) [pbx_config]
  775.                     5. Set(AMPUSER=${DB(DEVICE/${REALCALLERIDNUM}/user)}) [pbx_config]
  776.                     6. GotoIf($["${AMPUSER}" = "none"]?limit)     [pbx_config]
  777.                     7. Set(AMPUSERCIDNAME=${DB(AMPUSER/${AMPUSER}/cidname)}) [pbx_config]
  778.                     8. GotoIf($["${AMPUSERCIDNAME:1:2}" = ""]?report) [pbx_config]
  779.                     9. Set(AMPUSERCID=${IF($["${ARG2}" != "EXTERNAL" & "${DB_EXISTS(AMPUSER/${AMPUSER}/cidnum)}" = "1"]?${DB_RESULT}:${AMPUSER})}) [pbx_config]
  780.                     10. Set(__DIAL_OPTIONS=${IF($["${DB_EXISTS(AMPUSER/${AMPUSER}/dialopts)}" = "1"]?${DB_RESULT}:${DIAL_OPTIONS})}) [pbx_config]
  781.                     11. Set(CALLERID(all)="${AMPUSERCIDNAME}" <${AMPUSERCID}>) [pbx_config]
  782.                     12. GotoIf($["${ARG1}"="LIMIT" & ${LEN(${AMPUSER})} & ${DB_EXISTS(AMPUSER/${AMPUSER}/concurrency_limit)} & ${DB(AMPUSER/${AMPUSER}/concurrency_limit)}>0 & ${GROUP_COUNT(${AMPUSER}@concurrency_limit)}>=${DB(AMPUSER/${AMPUSER}/concurrency_limit)}]?limit) [pbx_config]
  783.                     13. ExecIf($["${ARG1}"="LIMIT" & ${LEN(${AMPUSER})}]?Set(GROUP(concurrency_limit)=${AMPUSER})) [pbx_config]
  784.      [report]       14. GotoIf($[ "${ARG1}" = "SKIPTTL" | "${ARG1}" = "LIMIT" ]?continue) [pbx_config]
  785.      [report2]      15. Set(__TTL=${IF($["foo${TTL}" = "foo"]?64:$[ ${TTL} - 1 ])}) [pbx_config]
  786.                     16. GotoIf($[ ${TTL} > 0 ]?continue)          [pbx_config]
  787.                     17. Wait(${RINGTIMER})                        [pbx_config]
  788.                     18. Answer()                                  [pbx_config]
  789.                     19. Wait(1)                                   [pbx_config]
  790.                     20. Gosub(macro-user-callerid,lang-playback,1(hook_0)) [pbx_config]
  791.                     21. Macro(hangupcall,)                        [pbx_config]
  792.      [limit]        22. Answer()                                  [pbx_config]
  793.                     23. Wait(1)                                   [pbx_config]
  794.                     24. Gosub(macro-user-callerid,lang-playback,1(hook_1)) [pbx_config]
  795.                     25. Macro(hangupcall,)                        [pbx_config]
  796.                     26. Congestion(20)                            [pbx_config]
  797.      [continue]     27. Set(CALLERID(number)=${CALLERID(number):0:40}) [pbx_config]
  798.                     28. Set(CALLERID(name)=${CALLERID(name):0:40}) [pbx_config]
  799.                     29. GotoIf($["${CALLERID(name)}" = ""]?cnum)  [pbx_config]
  800.                     30. Set(CDR(cnam)=${CALLERID(name)})          [pbx_config]
  801.      [cnum]         31. Set(CDR(cnum)=${CALLERID(num)})           [pbx_config]
  802.                     32. Set(CHANNEL(language)=${MASTER_CHANNEL(CHANNEL(language))}) [pbx_config]
  803.   Include =>        'macro-user-callerid-custom'                  [pbx_config]
  804.  
  805. [ Context 'macro-privacy-mgr' created by 'pbx_config' ]
  806.   'h' =>            1. Hangup()                                   [pbx_config]
  807.   's' =>            1. Set(KEEPCID=${CALLERID(num)})              [pbx_config]
  808.                     2. Set(TESTCID=${IF($["${CALLERID(num):0:1}"="+"]?${MATH(1+${CALLERID(num):1})}:${MATH(1+${CALLERID(num)})})}) [pbx_config]
  809.                     3. ExecIf($[${LEN(${TESTCID})}=0]?Set(CALLERID(num)=)) [pbx_config]
  810.                     4. PrivacyManager(${ARG1},${ARG2})            [pbx_config]
  811.                     5. GotoIf($["${PRIVACYMGRSTATUS}"="FAILED"]?fail) [pbx_config]
  812.                     6. GosubIf($["${CALLED_BLACKLIST}"="1"]?app-blacklist-check,s,1()) [pbx_config]
  813.                     7. Set(CALLERID(num-pres)=allowed_passed_screen) [pbx_config]
  814.                     8. MacroExit()                                [pbx_config]
  815.      [fail]         9. Noop(STATUS: ${PRIVACYMGRSTATUS} CID: ${CALLERID(num)} ${CALLERID(name)} CALLPRES: ${CALLLINGPRES}) [pbx_config]
  816.                     10. Playback(sorry-youre-having-problems&goodbye) [pbx_config]
  817.                     11. Playtones(congestion)                     [pbx_config]
  818.                     12. Congestion(20)                            [pbx_config]
  819.   Include =>        'macro-privacy-mgr-custom'                    [pbx_config]
  820.  
  821. [ Context 'macro-dialout-trunk' created by 'pbx_config' ]
  822.   '1' =>            1. Goto(s-INVALIDNMBR,1)                      [pbx_config]
  823.   '17' =>           1. Goto(s-BUSY,1)                             [pbx_config]
  824.   '18' =>           1. Goto(s-NOANSWER,1)                         [pbx_config]
  825.   '22' =>           1. Goto(s-CHANGED,1)                          [pbx_config]
  826.   '23' =>           1. Goto(s-CHANGED,1)                          [pbx_config]
  827.   '28' =>           1. Goto(s-INVALIDNMBR,1)                      [pbx_config]
  828.   'bypass' =>       1. Noop(TRUNK: ${OUT_${DIAL_TRUNK}} BYPASSING because dialout-trunk-predial-hook) [pbx_config]
  829.   'continue' =>     1. Noop(TRUNK Dial failed due to ${DIALSTATUS} HANGUPCAUSE: ${HANGUPCAUSE} - failing through to other trunks) [pbx_config]
  830.                     2. ExecIf($["${AMPUSER}"!="" ]?Set(CALLERID(number)=${AMPUSER})) [pbx_config]
  831.   'disabletrunk' => 1. Noop(TRUNK: ${OUT_${DIAL_TRUNK}} DISABLED - falling through to next trunk) [pbx_config]
  832.   'h' =>            1. Macro(hangupcall,)                         [pbx_config]
  833.   's' =>            1. Set(DIAL_TRUNK=${ARG1})                    [pbx_config]
  834.                     2. GosubIf($[$["${ARG3}" != ""] & $["${DB(AMPUSER/${AMPUSER}/pinless)}" != "NOPASSWD"]]?sub-pincheck,s,1()) [pbx_config]
  835.                     3. GotoIf($["x${OUTDISABLE_${DIAL_TRUNK}}" = "xon"]?disabletrunk,1) [pbx_config]
  836.                     4. Set(DIAL_NUMBER=${ARG2})                   [pbx_config]
  837.                     5. Set(DIAL_TRUNK_OPTIONS=${DIAL_OPTIONS})    [pbx_config]
  838.                     6. Set(OUTBOUND_GROUP=OUT_${DIAL_TRUNK})      [pbx_config]
  839.                     7. GotoIf($["${OUTMAXCHANS_${DIAL_TRUNK}}foo" = "foo"]?nomax) [pbx_config]
  840.                     8. GotoIf($[ ${GROUP_COUNT(OUT_${DIAL_TRUNK})} >= ${OUTMAXCHANS_${DIAL_TRUNK}} ]?chanfull) [pbx_config]
  841.      [nomax]        9. GotoIf($["${INTRACOMPANYROUTE}" = "YES"]?skipoutcid) [pbx_config]
  842.                     10. Set(DIAL_TRUNK_OPTIONS=${IF($["${DB_EXISTS(TRUNK/${DIAL_TRUNK}/dialopts)}" = "1"]?${DB_RESULT}:${TRUNK_OPTIONS})}) [pbx_config]
  843.                     11. Macro(outbound-callerid,${DIAL_TRUNK})    [pbx_config]
  844.      [skipoutcid]   12. GosubIf($["${PREFIX_TRUNK_${DIAL_TRUNK}}" != ""]?sub-flp-${DIAL_TRUNK},s,1()) [pbx_config]
  845.                     13. Set(OUTNUM=${OUTPREFIX_${DIAL_TRUNK}}${DIAL_NUMBER}) [pbx_config]
  846.                     14. Set(custom=${CUT(OUT_${DIAL_TRUNK},:,1)}) [pbx_config]
  847.                     15. ExecIf($["${MOHCLASS}"!="default" & "${MOHCLASS}"!="" & "${FORCE_CONFIRM}"="" ]?Set(DIAL_TRUNK_OPTIONS=M(setmusic^${MOHCLASS})${DIAL_TRUNK_OPTIONS})) [pbx_config]
  848.                     16. ExecIf($["${FORCE_CONFIRM}"!="" ]?Set(DIAL_TRUNK_OPTIONS=${DIAL_TRUNK_OPTIONS}M(confirm))) [pbx_config]
  849.      [gocall]       17. Macro(dialout-trunk-predial-hook,)        [pbx_config]
  850.                     18. GotoIf($["${PREDIAL_HOOK_RET}" = "BYPASS"]?bypass,1) [pbx_config]
  851.                     19. ExecIf($["${DB(AMPUSER/${AMPUSER}/cidname)}" != ""]?Set(CONNECTEDLINE(num,i)=${DIAL_NUMBER})) [pbx_config]
  852.                     20. ExecIf($[$["${DB(AMPUSER/${AMPUSER}/cidname)}" != ""] & $["${CALLERID(name)}"!="hidden"]]?Set(CONNECTEDLINE(name,i)=CID:${CALLERID(number)})) [pbx_config]
  853.                     21. ExecIf($[$["${DB(AMPUSER/${AMPUSER}/cidname)}" != ""] & $["${CALLERID(name)}"="hidden"]]?Set(CONNECTEDLINE(name,i)=CID:(Hidden)${CALLERID(number)})) [pbx_config]
  854.                     22. GotoIf($["${custom}" = "AMP"]?customtrunk) [pbx_config]
  855.                     23. Dial(${OUT_${DIAL_TRUNK}}/${OUTNUM}${OUT_${DIAL_TRUNK}_SUFFIX},${TRUNK_RING_TIMER},${DIAL_TRUNK_OPTIONS}) [pbx_config]
  856.                     24. Noop(Dial failed for some reason with DIALSTATUS = ${DIALSTATUS} and HANGUPCAUSE = ${HANGUPCAUSE}) [pbx_config]
  857.                     25. GotoIf($["${ARG4}" = "on"]?continue,1:s-${DIALSTATUS},1) [pbx_config]
  858.      [customtrunk]  26. Set(pre_num=${CUT(OUT_${DIAL_TRUNK},$,1)}) [pbx_config]
  859.                     27. Set(the_num=${CUT(OUT_${DIAL_TRUNK},$,2)}) [pbx_config]
  860.                     28. Set(post_num=${CUT(OUT_${DIAL_TRUNK},$,3)}) [pbx_config]
  861.                     29. GotoIf($["${the_num}" = "OUTNUM"]?outnum:skipoutnum) [pbx_config]
  862.      [outnum]       30. Set(the_num=${OUTNUM})                    [pbx_config]
  863.      [skipoutnum]   31. Dial(${pre_num:4}${the_num}${post_num},${TRUNK_RING_TIMER},${DIAL_TRUNK_OPTIONS}) [pbx_config]
  864.                     32. Noop(Dial failed for some reason with DIALSTATUS = ${DIALSTATUS} and HANGUPCAUSE = ${HANGUPCAUSE}) [pbx_config]
  865.                     33. GotoIf($["${ARG4}" = "on"]?continue,1:s-${DIALSTATUS},1) [pbx_config]
  866.      [chanfull]     34. Noop(max channels used up)                [pbx_config]
  867.   's-ANSWER' =>     1. Noop(Call successfully answered - Hanging up now) [pbx_config]
  868.                     2. Macro(hangupcall,)                         [pbx_config]
  869.   's-BUSY' =>       1. Noop(Dial failed due to trunk reporting BUSY - giving up) [pbx_config]
  870.                     2. Playtones(busy)                            [pbx_config]
  871.                     3. Busy(20)                                   [pbx_config]
  872.   's-CHANGED' =>    1. Noop(Dial failed due to trunk reporting Number Changed - giving up) [pbx_config]
  873.                     2. Playtones(busy)                            [pbx_config]
  874.                     3. Busy(20)                                   [pbx_config]
  875.   's-INVALIDNMBR' => 1. Noop(Dial failed due to trunk reporting Address Incomplete - giving up) [pbx_config]
  876.                     2. Progress()                                 [pbx_config]
  877.                     3. Playback(ss-noservice,noanswer)            [pbx_config]
  878.                     4. Busy(20)                                   [pbx_config]
  879.   's-NOANSWER' =>   1. Noop(Dial failed due to trunk reporting NOANSWER - giving up) [pbx_config]
  880.                     2. Progress()                                 [pbx_config]
  881.                     3. Playback(number-not-answering,noanswer)    [pbx_config]
  882.                     4. Congestion(20)                             [pbx_config]
  883.   '_s-.' =>         1. Set(RC=${IF($[${ISNULL(${HANGUPCAUSE})}]?0:${HANGUPCAUSE})}) [pbx_config]
  884.                     2. Goto(${RC},1)                              [pbx_config]
  885.   '_X.' =>          1. Goto(continue,1)                           [pbx_config]
  886.   '_X' =>           1. Goto(continue,1)                           [pbx_config]
  887.   Include =>        'macro-dialout-trunk-custom'                  [pbx_config]
  888.  
  889. [ Context 'sub-pincheck' created by 'pbx_config' ]
  890.   's' =>            1. Authenticate(${ARG3},)                     [pbx_config]
  891.                     2. ResetCDR()                                 [pbx_config]
  892.                     3. Return()                                   [pbx_config]
  893.   Include =>        'sub-pincheck-custom'                         [pbx_config]
  894.  
  895. [ Context 'macro-auto-blkvm' created by 'pbx_config' ]
  896.   's' =>            1. Set(__MACRO_RESULT=)                       [pbx_config]
  897.                     2. Set(CFIGNORE=)                             [pbx_config]
  898.                     3. Set(MASTER_CHANNEL(CFIGNORE)=)             [pbx_config]
  899.                     4. Set(FORWARD_CONTEXT=from-internal)         [pbx_config]
  900.                     5. Set(MASTER_CHANNEL(FORWARD_CONTEXT)=from-internal) [pbx_config]
  901.                     6. Macro(blkvm-clr,)                          [pbx_config]
  902.                     7. ExecIf($[!${REGEX("[^0-9]" ${DIALEDPEERNUMBER})} && "${DB(AMPUSER/${AMPUSER}/cidname)}" != ""]?Set(MASTER_CHANNEL(CONNECTEDLINE(num))=${DIALEDPEERNUMBER})) [pbx_config]
  903.                     8. ExecIf($[!${REGEX("[^0-9]" ${DIALEDPEERNUMBER})} && "${DB(AMPUSER/${AMPUSER}/cidname)}" != ""]?Set(MASTER_CHANNEL(CONNECTEDLINE(name))=${DB(AMPUSER/${DIALEDPEERNUMBER}/cidname)})) [pbx_config]
  904.   Include =>        'macro-auto-blkvm-custom'                     [pbx_config]
  905.  
  906. [ Context 'macro-auto-confirm' created by 'pbx_config' ]
  907.   's' =>            1. Set(__MACRO_RESULT=)                       [pbx_config]
  908.                     2. Set(CFIGNORE=)                             [pbx_config]
  909.                     3. Set(MASTER_CHANNEL(CFIGNORE)=)             [pbx_config]
  910.                     4. Set(FORWARD_CONTEXT=from-internal)         [pbx_config]
  911.                     5. Set(MASTER_CHANNEL(FORWARD_CONTEXT)=from-internal) [pbx_config]
  912.                     6. Macro(blkvm-clr,)                          [pbx_config]
  913.                     7. Noop(Deleting: RG/${ARG1}/${UNIQCHAN} ${DB_DELETE(RG/${ARG1}/${UNIQCHAN})}) [pbx_config]
  914.                     8. ExecIf($[!${REGEX("[^0-9]" ${DIALEDPEERNUMBER})} && "${DB(AMPUSER/${AMPUSER}/cidname)}" != ""]?Set(MASTER_CHANNEL(CONNECTEDLINE(num))=${DIALEDPEERNUMBER})) [pbx_config]
  915.                     9. ExecIf($[!${REGEX("[^0-9]" ${DIALEDPEERNUMBER})} && "${DB(AMPUSER/${AMPUSER}/cidname)}" != ""]?Set(MASTER_CHANNEL(CONNECTEDLINE(name))=${DB(AMPUSER/${DIALEDPEERNUMBER}/cidname)})) [pbx_config]
  916.   Include =>        'macro-auto-confirm-custom'                   [pbx_config]
  917.  
  918. [ Context 'macro-confirm' created by 'pbx_config' ]
  919.   '1' =>            1. GotoIf($["${DB_EXISTS(RG/${ARG3}/${UNIQCHAN})}"="0" & "${SHARED(ANSWER_STATUS,${FORCE_CONFIRM})}"=""]?toolate,1) [pbx_config]
  920.                     2. Noop(Deleting: RG/${ARG3}/${UNIQCHAN} ${DB_DELETE(RG/${ARG3}/${UNIQCHAN})}) [pbx_config]
  921.                     3. Macro(blkvm-clr,)                          [pbx_config]
  922.                     4. Set(SHARED(ANSWER_STATUS,${FORCE_CONFIRM})=) [pbx_config]
  923.      [skip]         5. Set(__MACRO_RESULT=)                       [pbx_config]
  924.                     6. ExecIf($[("${MOHCLASS}"!="default") & ("${MOHCLASS}"!="")]?Set(CHANNEL(musicclass)=${MOHCLASS})) [pbx_config]
  925.      [exitopt1]     7. MacroExit()                                [pbx_config]
  926.   '2' =>            1. Goto(noanswer,1)                           [pbx_config]
  927.   '3' =>            1. SayDigits(${CALLCONFIRMCID})               [pbx_config]
  928.                     2. GotoIf($["${DB_EXISTS(RG/${ARG3}/${UNIQCHAN})}"="0" & "${SHARED(ANSWER_STATUS,${FORCE_CONFIRM})}"=""]?toolate,1:s,start) [pbx_config]
  929.   'h' =>            1. Macro(hangupcall,)                         [pbx_config]
  930.   'noanswer' =>     1. Set(__MACRO_RESULT=ABORT)                  [pbx_config]
  931.      [exitnoanswer] 2. MacroExit()                                [pbx_config]
  932.   's' =>            1. Set(LOOPCOUNT=0)                           [pbx_config]
  933.                     2. Set(__MACRO_RESULT=ABORT)                  [pbx_config]
  934.                     3. Set(MSG1=${IF($["${ARG1}${ALT_CONFIRM_MSG}"=""]?incoming-call-1-accept-2-decline:${IF($[${LEN(${ALT_CONFIRM_MSG})}>0]?${ALT_CONFIRM_MSG}:${ARG1})})}) [pbx_config]
  935.      [start]        4. Background(${MSG1},m,${CHANNEL(language)},macro-confirm) [pbx_config]
  936.                     5. Read(INPUT,,1,,,4)                         [pbx_config]
  937.                     6. GotoIf($[${LEN(${INPUT})} > 0]?${INPUT},1:t,1) [pbx_config]
  938.   't' =>            1. GotoIf($["${DB_EXISTS(RG/${ARG3}/${UNIQCHAN})}"="0" & "${SHARED(ANSWER_STATUS,${FORCE_CONFIRM})}"=""]?toolate,1) [pbx_config]
  939.                     2. Set(LOOPCOUNT=$[ ${LOOPCOUNT} + 1 ])       [pbx_config]
  940.                     3. GotoIf($[ ${LOOPCOUNT} < 5 ]?s,start:noanswer,1) [pbx_config]
  941.   'toolate' =>      1. Set(MSG2=${IF($["foo${ARG2}" != "foo"]?${ARG2}:"incoming-call-no-longer-avail")}) [pbx_config]
  942.                     2. Playback(${MSG2})                          [pbx_config]
  943.                     3. Set(__MACRO_RESULT=ABORT)                  [pbx_config]
  944.      [exittoolate]  4. MacroExit()                                [pbx_config]
  945.   '_X' =>           1. Background(invalid,m,${CHANNEL(language)},macro-confirm) [pbx_config]
  946.                     2. GotoIf($["${DB_EXISTS(RG/${ARG3}/${UNIQCHAN})}"="0" | "${SHARED(ANSWER_STATUS,${FORCE_CONFIRM})}"=""]?toolate,1) [pbx_config]
  947.                     3. Set(LOOPCOUNT=$[ ${LOOPCOUNT} + 1 ])       [pbx_config]
  948.                     4. GotoIf($[ ${LOOPCOUNT} < 5 ]?s,start:noanswer,1) [pbx_config]
  949.   Include =>        'macro-confirm-custom'                        [pbx_config]
  950.  
  951. [ Context 'sub-presencestate-display' created by 'pbx_config' ]
  952.   's' =>            1. Goto(state-${TOLOWER(${PRESENCE_STATE(CustomPresence:${ARG1},value)})},1) [pbx_config]
  953.   'state-' =>       1. Set(PRESENCESTATE_DISPLAY=)                [pbx_config]
  954.                     2. Return()                                   [pbx_config]
  955.   'state-available' => 1. Set(PRESENCESTATE_DISPLAY=(Available))     [pbx_config]
  956.                     2. Return()                                   [pbx_config]
  957.   'state-away' =>   1. Set(PRESENCESTATE_DISPLAY=(Away))          [pbx_config]
  958.                     2. Return()                                   [pbx_config]
  959.   'state-chat' =>   1. Set(PRESENCESTATE_DISPLAY=(Chatty))        [pbx_config]
  960.                     2. Return()                                   [pbx_config]
  961.   'state-dnd' =>    1. Set(PRESENCESTATE_DISPLAY=(DND))           [pbx_config]
  962.                     2. Return()                                   [pbx_config]
  963.   'state-unavailable' => 1. Set(PRESENCESTATE_DISPLAY=(Unavailable))   [pbx_config]
  964.                     2. Return()                                   [pbx_config]
  965.   'state-xa' =>     1. Set(PRESENCESTATE_DISPLAY=(Extended Away)) [pbx_config]
  966.                     2. Return()                                   [pbx_config]
  967.   '_state-.' =>     1. Set(PRESENCESTATE_DISPLAY=)                [pbx_config]
  968.                     2. Return()                                   [pbx_config]
  969.   Include =>        'sub-presencestate-display-custom'            [pbx_config]
  970.  
  971. [ Context 'bad-number' created by 'pbx_config' ]
  972.   's' =>            1. Goto(11,1)                                 [pbx_config]
  973.   '_X.' =>          1. ResetCDR()                                 [pbx_config]
  974.                     2. NoCDR()                                    [pbx_config]
  975.                     3. Progress()                                 [pbx_config]
  976.                     4. Wait(1)                                    [pbx_config]
  977.                     5. Playback(silence/1&cannot-complete-as-dialed&check-number-dial-again,noanswer) [pbx_config]
  978.                     6. Wait(1)                                    [pbx_config]
  979.                     7. Congestion(20)                             [pbx_config]
  980.                     8. Hangup()                                   [pbx_config]
  981.   Include =>        'bad-number-custom'                           [pbx_config]
  982.  
  983. [ Context 'app-blackhole' created by 'pbx_config' ]
  984.   'busy' =>         1. Noop(Blackhole Dest: Busy)                 [pbx_config]
  985.                     2. Progress()                                 [pbx_config]
  986.                     3. Busy(20)                                   [pbx_config]
  987.                     4. Hangup()                                   [pbx_config]
  988.   'congestion' =>   1. Noop(Blackhole Dest: Congestion)           [pbx_config]
  989.                     2. Progress()                                 [pbx_config]
  990.                     3. Playtones(congestion)                      [pbx_config]
  991.                     4. Congestion(20)                             [pbx_config]
  992.                     5. Hangup()                                   [pbx_config]
  993.   'hangup' =>       1. Noop(Blackhole Dest: Hangup)               [pbx_config]
  994.                     2. Hangup()                                   [pbx_config]
  995.   'musiconhold' =>  1. Noop(Blackhole Dest: Put caller on hold forever) [pbx_config]
  996.                     2. Answer()                                   [pbx_config]
  997.                     3. MusicOnHold()                              [pbx_config]
  998.   'no-service' =>   1. Noop(Blackhole Dest: No service)           [pbx_config]
  999.                     2. Answer()                                   [pbx_config]
  1000.                     3. Wait(1)                                    [pbx_config]
  1001.                     4. Zapateller()                               [pbx_config]
  1002.                     5. Playback(ss-noservice)                     [pbx_config]
  1003.                     6. Hangup()                                   [pbx_config]
  1004.   'ring' =>         1. Noop(Blackhole Dest: Ring)                 [pbx_config]
  1005.                     2. Answer()                                   [pbx_config]
  1006.                     3. Playtones(ring)                            [pbx_config]
  1007.                     4. Wait(300)                                  [pbx_config]
  1008.                     5. Hangup()                                   [pbx_config]
  1009.   'zapateller' =>   1. Noop(Blackhole Dest: Play SIT Tone)        [pbx_config]
  1010.                     2. Answer()                                   [pbx_config]
  1011.                     3. Zapateller()                               [pbx_config]
  1012.   Include =>        'app-blackhole-custom'                        [pbx_config]
  1013.  
  1014. [ Context 'outrt-12' created by 'pbx_config' ]
  1015.   '_1NXXNXXXXXX' => 1. Macro(user-callerid,LIMIT,EXTERNAL,)       [pbx_config]
  1016.                     2. Gosub(sub-record-check,s,1(out,${EXTEN},delayed)) [pbx_config]
  1017.                     3. Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})}) [pbx_config]
  1018.                     4. ExecIf($["${KEEPCID}"!="TRUE" & ${LEN(${DB(AMPUSER/${AMPUSER}/outboundcid)})}=0 & ${LEN(${TRUNKCIDOVERRIDE})}=0]?Set(TRUNKCIDOVERRIDE=4052907322)) [pbx_config]
  1019.                     5. Set(_NODEST=)                              [pbx_config]
  1020.                     6. Macro(dialout-trunk,1,${EXTEN},,off)       [pbx_config]
  1021.                     7. Macro(outisbusy,)                          [pbx_config]
  1022.   '_NXXNXXXXXX' =>  1. Macro(user-callerid,LIMIT,EXTERNAL,)       [pbx_config]
  1023.                     2. Gosub(sub-record-check,s,1(out,${EXTEN},delayed)) [pbx_config]
  1024.                     3. Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})}) [pbx_config]
  1025.                     4. ExecIf($["${KEEPCID}"!="TRUE" & ${LEN(${DB(AMPUSER/${AMPUSER}/outboundcid)})}=0 & ${LEN(${TRUNKCIDOVERRIDE})}=0]?Set(TRUNKCIDOVERRIDE=4052907322)) [pbx_config]
  1026.                     5. Set(_NODEST=)                              [pbx_config]
  1027.                     6. Macro(dialout-trunk,1,${EXTEN},,off)       [pbx_config]
  1028.                     7. Macro(outisbusy,)                          [pbx_config]
  1029.   '_NXXXXXX' =>     1. Macro(user-callerid,LIMIT,EXTERNAL,)       [pbx_config]
  1030.                     2. Gosub(sub-record-check,s,1(out,${EXTEN},delayed)) [pbx_config]
  1031.                     3. Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})}) [pbx_config]
  1032.                     4. ExecIf($["${KEEPCID}"!="TRUE" & ${LEN(${DB(AMPUSER/${AMPUSER}/outboundcid)})}=0 & ${LEN(${TRUNKCIDOVERRIDE})}=0]?Set(TRUNKCIDOVERRIDE=4052907322)) [pbx_config]
  1033.                     5. Set(_NODEST=)                              [pbx_config]
  1034.                     6. Macro(dialout-trunk,1,${EXTEN},,off)       [pbx_config]
  1035.                     7. Macro(outisbusy,)                          [pbx_config]
  1036.   '_NXX' =>         1. Macro(user-callerid,LIMIT,EXTERNAL,)       [pbx_config]
  1037.                     2. Gosub(sub-record-check,s,1(out,${EXTEN},delayed)) [pbx_config]
  1038.                     3. Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})}) [pbx_config]
  1039.                     4. ExecIf($["${KEEPCID}"!="TRUE" & ${LEN(${DB(AMPUSER/${AMPUSER}/outboundcid)})}=0 & ${LEN(${TRUNKCIDOVERRIDE})}=0]?Set(TRUNKCIDOVERRIDE=4052907322)) [pbx_config]
  1040.                     5. Set(_NODEST=)                              [pbx_config]
  1041.                     6. Macro(dialout-trunk,1,${EXTEN},,off)       [pbx_config]
  1042.                     7. Macro(outisbusy,)                          [pbx_config]
  1043.   Include =>        'outrt-12-custom'                             [pbx_config]
  1044.  
  1045. [ Context 'outbound-allroutes' created by 'pbx_config' ]
  1046.   'foo' =>          1. Noop(bar)                                  [pbx_config]
  1047.   Include =>        'outbound-allroutes-custom'                   [pbx_config]
  1048.   Include =>        'outrt-12'                                    [pbx_config]
  1049.  
  1050. [ Context 'macro-prepend-cid' created by 'pbx_config' ]
  1051.   's' =>            1. GotoIf($["${RGPREFIX}" = ""]?REPCID)       [pbx_config]
  1052.                     2. GotoIf($["${RGPREFIX}" != "${CALLERID(name):0:${LEN(${RGPREFIX})}}"]?REPCID) [pbx_config]
  1053.                     3. Set(CALLERID(name)=${CALLERID(name):${LEN(${RGPREFIX})}}) [pbx_config]
  1054.                     4. Set(_RGPREFIX=)                            [pbx_config]
  1055.      [REPCID]       5. Set(_RGPREFIX=${ARG1})                     [pbx_config]
  1056.                     6. Set(CALLERID(name)=${RGPREFIX}${CALLERID(name)}) [pbx_config]
  1057.   Include =>        'macro-prepend-cid-custom'                    [pbx_config]
  1058.  
  1059. [ Context 'ext-trunk' created by 'pbx_config' ]
  1060.   '1' =>            1. Set(TDIAL_STRING=SIP/cox)                  [pbx_config]
  1061.                     2. Set(DIAL_TRUNK=1)                          [pbx_config]
  1062.                     3. Goto(ext-trunk,tdial,1)                    [pbx_config]
  1063.   'tdial' =>        1. Set(OUTBOUND_GROUP=OUT_${DIAL_TRUNK})      [pbx_config]
  1064.                     2. GotoIf($["${OUTMAXCHANS_${DIAL_TRUNK}}" = ""]?nomax) [pbx_config]
  1065.                     3. GotoIf($[${GROUP_COUNT(OUT_${DIAL_TRUNK})} >= ${OUTMAXCHANS_${DIAL_TRUNK}}]?hangit) [pbx_config]
  1066.      [nomax]        4. ExecIf($["${CALLINGNAMEPRES_SV}" != ""]?Set(CALLERPRES(name-pres)=${CALLINGNAMEPRES_SV})) [pbx_config]
  1067.                     5. ExecIf($["${CALLINGNUMPRES_SV}" != ""]?Set(CALLERPRES(num-pres)=${CALLINGNUMPRES_SV})) [pbx_config]
  1068.                     6. Set(DIAL_NUMBER=${FROM_DID})               [pbx_config]
  1069.                     7. GosubIf($["${PREFIX_TRUNK_${DIAL_TRUNK}}" != ""]?sub-flp-${DIAL_TRUNK},s,1()) [pbx_config]
  1070.                     8. Set(OUTNUM=${OUTPREFIX_${DIAL_TRUNK}}${DIAL_NUMBER}) [pbx_config]
  1071.                     9. Set(DIAL_TRUNK_OPTIONS=${IF($["${DB_EXISTS(TRUNK/${DIAL_TRUNK}/dialopts)}" = "1"]?${DB_RESULT}:${TRUNK_OPTIONS})}) [pbx_config]
  1072.                     10. Dial(${TDIAL_STRING}/${OUTNUM}${TDIAL_SUFFIX},${TRUNK_RING_TIMER},${DIAL_TRUNK_OPTIONS}) [pbx_config]
  1073.                     11. Set(CALLERID(number)=${CALLERID(number):0:40}) [pbx_config]
  1074.                     12. Set(CALLERID(name)=${CALLERID(name):0:40}) [pbx_config]
  1075.      [hangit]       13. Hangup()                                  [pbx_config]
  1076.   Include =>        'ext-trunk-custom'                            [pbx_config]
  1077.  
  1078. [ Context 'from-trunk-sip-cox' created by 'pbx_config' ]
  1079.   '_.' =>           1. Set(GROUP()=OUT_1)                         [pbx_config]
  1080.                     2. Goto(from-trunk,${EXTEN},1)                [pbx_config]
  1081.   Include =>        'from-trunk-sip-cox-custom'                   [pbx_config]
  1082.  
  1083. [ Context 'ext-did-0002' created by 'pbx_config' ]
  1084.   '4052907322' =>   1. Set(__DIRECTION=INBOUND)                   [pbx_config]
  1085.                     2. Gosub(sub-record-check,s,1(in,${EXTEN},delayed)) [pbx_config]
  1086.                     3. Gosub(app-blacklist-check,s,1())           [pbx_config]
  1087.                     4. Set(__FROM_DID=${EXTEN})                   [pbx_config]
  1088.                     5. Set(CDR(did)=${FROM_DID})                  [pbx_config]
  1089.                     6. ExecIf($[ "${CALLERID(name)}" = "" ] ?Set(CALLERID(name)=${CALLERID(num)})) [pbx_config]
  1090.                     7. Set(CHANNEL(musicclass)=Opus)              [pbx_config]
  1091.                     8. Set(__MOHCLASS=Opus)                       [pbx_config]
  1092.                     9. Set(__REVERSAL_REJECT=FALSE)               [pbx_config]
  1093.                     10. GotoIf($["${REVERSAL_REJECT}"!="TRUE"]?post-reverse-charge) [pbx_config]
  1094.                     11. GotoIf($["${CHANNEL(reversecharge)}"="1"]?macro-hangupcall) [pbx_config]
  1095.      [post-reverse-charge] 12. Noop()                                    [pbx_config]
  1096.                     13. Set(__CALLINGNAMEPRES_SV=${CALLERID(name-pres)}) [pbx_config]
  1097.                     14. Set(__CALLINGNUMPRES_SV=${CALLERID(num-pres)}) [pbx_config]
  1098.                     15. Set(CALLERID(name-pres)=allowed_not_screened) [pbx_config]
  1099.                     16. Set(CALLERID(num-pres)=allowed_not_screened) [pbx_config]
  1100.      [did-cid-hook] 17. Noop(CallerID Entry Point)                [pbx_config]
  1101.                     18. Macro(prepend-cid,CAP: )                  [pbx_config]
  1102.      [dest-ext]     19. Goto(app-announcement-5,s,1)              [pbx_config]
  1103.   '4056015013' =>   1. Set(__DIRECTION=INBOUND)                   [pbx_config]
  1104.                     2. Gosub(sub-record-check,s,1(in,${EXTEN},never)) [pbx_config]
  1105.                     3. Gosub(app-blacklist-check,s,1())           [pbx_config]
  1106.                     4. Set(__FROM_DID=${EXTEN})                   [pbx_config]
  1107.                     5. Set(CDR(did)=${FROM_DID})                  [pbx_config]
  1108.                     6. ExecIf($[ "${CALLERID(name)}" = "" ] ?Set(CALLERID(name)=${CALLERID(num)})) [pbx_config]
  1109.                     7. Set(CHANNEL(musicclass)=Opus)              [pbx_config]
  1110.                     8. Set(__MOHCLASS=Opus)                       [pbx_config]
  1111.                     9. Set(__REVERSAL_REJECT=FALSE)               [pbx_config]
  1112.                     10. GotoIf($["${REVERSAL_REJECT}"!="TRUE"]?post-reverse-charge) [pbx_config]
  1113.                     11. GotoIf($["${CHANNEL(reversecharge)}"="1"]?macro-hangupcall) [pbx_config]
  1114.      [post-reverse-charge] 12. Noop()                                    [pbx_config]
  1115.                     13. Set(__CALLINGNAMEPRES_SV=${CALLERID(name-pres)}) [pbx_config]
  1116.                     14. Set(__CALLINGNUMPRES_SV=${CALLERID(num-pres)}) [pbx_config]
  1117.                     15. Set(CALLERID(name-pres)=allowed_not_screened) [pbx_config]
  1118.                     16. Set(CALLERID(num-pres)=allowed_not_screened) [pbx_config]
  1119.      [did-cid-hook] 17. Noop(CallerID Entry Point)                [pbx_config]
  1120.                     18. Macro(prepend-cid, CIS:)                  [pbx_config]
  1121.      [dest-ext]     19. Goto(app-blackhole,hangup,1)              [pbx_config]
  1122.   '4056028732' =>   1. Set(__DIRECTION=INBOUND)                   [pbx_config]
  1123.                     2. Gosub(sub-record-check,s,1(in,${EXTEN},delayed)) [pbx_config]
  1124.                     3. Gosub(app-blacklist-check,s,1())           [pbx_config]
  1125.                     4. Set(__FROM_DID=${EXTEN})                   [pbx_config]
  1126.                     5. Set(CDR(did)=${FROM_DID})                  [pbx_config]
  1127.                     6. ExecIf($[ "${CALLERID(name)}" = "" ] ?Set(CALLERID(name)=${CALLERID(num)})) [pbx_config]
  1128.                     7. Set(CHANNEL(musicclass)=Opus)              [pbx_config]
  1129.                     8. Set(__MOHCLASS=Opus)                       [pbx_config]
  1130.                     9. Set(__REVERSAL_REJECT=FALSE)               [pbx_config]
  1131.                     10. GotoIf($["${REVERSAL_REJECT}"!="TRUE"]?post-reverse-charge) [pbx_config]
  1132.                     11. GotoIf($["${CHANNEL(reversecharge)}"="1"]?macro-hangupcall) [pbx_config]
  1133.      [post-reverse-charge] 12. Noop()                                    [pbx_config]
  1134.                     13. Set(__CALLINGNAMEPRES_SV=${CALLERID(name-pres)}) [pbx_config]
  1135.                     14. Set(__CALLINGNUMPRES_SV=${CALLERID(num-pres)}) [pbx_config]
  1136.                     15. Set(CALLERID(name-pres)=allowed_not_screened) [pbx_config]
  1137.                     16. Set(CALLERID(num-pres)=allowed_not_screened) [pbx_config]
  1138.      [did-cid-hook] 17. Noop(CallerID Entry Point)                [pbx_config]
  1139.                     18. Macro(prepend-cid,RDL:)                   [pbx_config]
  1140.      [dest-ext]     19. Goto(app-announcement-17,s,1)             [pbx_config]
  1141.   '4056028734' =>   1. Set(__DIRECTION=INBOUND)                   [pbx_config]
  1142.                     2. Gosub(sub-record-check,s,1(in,${EXTEN},delayed)) [pbx_config]
  1143.                     3. Gosub(app-blacklist-check,s,1())           [pbx_config]
  1144.                     4. Set(__FROM_DID=${EXTEN})                   [pbx_config]
  1145.                     5. Set(CDR(did)=${FROM_DID})                  [pbx_config]
  1146.                     6. ExecIf($[ "${CALLERID(name)}" = "" ] ?Set(CALLERID(name)=${CALLERID(num)})) [pbx_config]
  1147.                     7. Set(CHANNEL(musicclass)=Opus)              [pbx_config]
  1148.                     8. Set(__MOHCLASS=Opus)                       [pbx_config]
  1149.                     9. Set(__REVERSAL_REJECT=FALSE)               [pbx_config]
  1150.                     10. GotoIf($["${REVERSAL_REJECT}"!="TRUE"]?post-reverse-charge) [pbx_config]
  1151.                     11. GotoIf($["${CHANNEL(reversecharge)}"="1"]?macro-hangupcall) [pbx_config]
  1152.      [post-reverse-charge] 12. Noop()                                    [pbx_config]
  1153.                     13. Set(__CALLINGNAMEPRES_SV=${CALLERID(name-pres)}) [pbx_config]
  1154.                     14. Set(__CALLINGNUMPRES_SV=${CALLERID(num-pres)}) [pbx_config]
  1155.                     15. Set(CALLERID(name-pres)=allowed_not_screened) [pbx_config]
  1156.                     16. Set(CALLERID(num-pres)=allowed_not_screened) [pbx_config]
  1157.      [did-cid-hook] 17. Noop(CallerID Entry Point)                [pbx_config]
  1158.                     18. Macro(prepend-cid,OPS:)                   [pbx_config]
  1159.      [dest-ext]     19. Goto(app-announcement-16,s,1)             [pbx_config]
  1160.   '4056028748' =>   1. Set(__DIRECTION=INBOUND)                   [pbx_config]
  1161.                     2. Gosub(sub-record-check,s,1(in,${EXTEN},delayed)) [pbx_config]
  1162.                     3. Gosub(app-blacklist-check,s,1())           [pbx_config]
  1163.                     4. Set(__FROM_DID=${EXTEN})                   [pbx_config]
  1164.                     5. Set(CDR(did)=${FROM_DID})                  [pbx_config]
  1165.                     6. ExecIf($[ "${CALLERID(name)}" = "" ] ?Set(CALLERID(name)=${CALLERID(num)})) [pbx_config]
  1166.                     7. Set(CHANNEL(musicclass)=Opus)              [pbx_config]
  1167.                     8. Set(__MOHCLASS=Opus)                       [pbx_config]
  1168.                     9. Set(__REVERSAL_REJECT=FALSE)               [pbx_config]
  1169.                     10. GotoIf($["${REVERSAL_REJECT}"!="TRUE"]?post-reverse-charge) [pbx_config]
  1170.                     11. GotoIf($["${CHANNEL(reversecharge)}"="1"]?macro-hangupcall) [pbx_config]
  1171.      [post-reverse-charge] 12. Noop()                                    [pbx_config]
  1172.                     13. Set(__CALLINGNAMEPRES_SV=${CALLERID(name-pres)}) [pbx_config]
  1173.                     14. Set(__CALLINGNUMPRES_SV=${CALLERID(num-pres)}) [pbx_config]
  1174.                     15. Set(CALLERID(name-pres)=allowed_not_screened) [pbx_config]
  1175.                     16. Set(CALLERID(num-pres)=allowed_not_screened) [pbx_config]
  1176.      [did-cid-hook] 17. Noop(CallerID Entry Point)                [pbx_config]
  1177.                     18. Macro(prepend-cid,Color Code:)            [pbx_config]
  1178.      [dest-ext]     19. Goto(app-announcement-11,s,1)             [pbx_config]
  1179.   '4056051313' =>   1. Set(__DIRECTION=INBOUND)                   [pbx_config]
  1180.                     2. Gosub(sub-record-check,s,1(in,${EXTEN},no)) [pbx_config]
  1181.                     3. Gosub(app-blacklist-check,s,1())           [pbx_config]
  1182.                     4. Set(__FROM_DID=${EXTEN})                   [pbx_config]
  1183.                     5. Set(CDR(did)=${FROM_DID})                  [pbx_config]
  1184.                     6. ExecIf($[ "${CALLERID(name)}" = "" ] ?Set(CALLERID(name)=${CALLERID(num)})) [pbx_config]
  1185.                     7. Set(CHANNEL(musicclass)=Opus)              [pbx_config]
  1186.                     8. Set(__MOHCLASS=Opus)                       [pbx_config]
  1187.                     9. Set(__REVERSAL_REJECT=FALSE)               [pbx_config]
  1188.                     10. GotoIf($["${REVERSAL_REJECT}"!="TRUE"]?post-reverse-charge) [pbx_config]
  1189.                     11. GotoIf($["${CHANNEL(reversecharge)}"="1"]?macro-hangupcall) [pbx_config]
  1190.      [post-reverse-charge] 12. Noop()                                    [pbx_config]
  1191.                     13. Set(__CALLINGNAMEPRES_SV=${CALLERID(name-pres)}) [pbx_config]
  1192.                     14. Set(__CALLINGNUMPRES_SV=${CALLERID(num-pres)}) [pbx_config]
  1193.                     15. Set(CALLERID(name-pres)=allowed_not_screened) [pbx_config]
  1194.                     16. Set(CALLERID(num-pres)=allowed_not_screened) [pbx_config]
  1195.      [did-cid-hook] 17. Noop(CallerID Entry Point)                [pbx_config]
  1196.      [dest-ext]     18. Goto(app-blackhole,hangup,1)              [pbx_config]
  1197.   Include =>        'ext-did-0002-custom'                         [pbx_config]
  1198.  
  1199. [ Context 'ext-did-catchall' created by 'pbx_config' ]
  1200.   '_.' =>           1. Noop(Catch-All DID Match - Found ${EXTEN} - You probably want a DID for this.) [pbx_config]
  1201.                     2. Log(WARNING,Friendly Scanner from ${CUT(CUT(SIP_HEADER(Via), ,2),:,1)}) [pbx_config]
  1202.                     3. Set(__FROM_DID=${EXTEN})                   [pbx_config]
  1203.                     4. Goto(ext-did,s,1)                          [pbx_config]
  1204.   Include =>        'ext-did-catchall-custom'                     [pbx_config]
  1205.  
  1206. [ Context 'ext-did-0001' created by 'pbx_config' ]
  1207.   's' =>            1. Set(__DIRECTION=INBOUND)                   [pbx_config]
  1208.                     2. Gosub(app-blacklist-check,s,1())           [pbx_config]
  1209.                     3. ExecIf($["${FROM_DID}" = ""]?Set(__FROM_DID=${EXTEN})) [pbx_config]
  1210.                     4. Set(CDR(did)=${FROM_DID})                  [pbx_config]
  1211.                     5. ExecIf($[ "${CALLERID(name)}" = "" ] ?Set(CALLERID(name)=${CALLERID(num)})) [pbx_config]
  1212.                     6. Set(__MOHCLASS=)                           [pbx_config]
  1213.                     7. Set(__REVERSAL_REJECT=FALSE)               [pbx_config]
  1214.                     8. GotoIf($["${REVERSAL_REJECT}"!="TRUE"]?post-reverse-charge) [pbx_config]
  1215.                     9. GotoIf($["${CHANNEL(reversecharge)}"="1"]?macro-hangupcall) [pbx_config]
  1216.      [post-reverse-charge] 10. Noop()                                    [pbx_config]
  1217.                     11. Set(__CALLINGNAMEPRES_SV=${CALLERID(name-pres)}) [pbx_config]
  1218.                     12. Set(__CALLINGNUMPRES_SV=${CALLERID(num-pres)}) [pbx_config]
  1219.                     13. Set(CALLERID(name-pres)=allowed_not_screened) [pbx_config]
  1220.                     14. Set(CALLERID(num-pres)=allowed_not_screened) [pbx_config]
  1221.      [did-cid-hook] 15. Noop(CallerID Entry Point)                [pbx_config]
  1222.      [dest-ext]     16. Goto(ivr-4,s,1)                           [pbx_config]
  1223.   Include =>        'ext-did-0001-custom'                         [pbx_config]
  1224.  
  1225. [ Context 'ext-did' created by 'pbx_config' ]
  1226.   'foo' =>          1. Noop(bar)                                  [pbx_config]
  1227.   Include =>        'ext-did-custom'                              [pbx_config]
  1228.   Include =>        'ext-did-0001'                                [pbx_config]
  1229.   Include =>        'ext-did-0002'                                [pbx_config]
  1230.  
  1231. [ Context 'ext-test' created by 'pbx_config' ]
  1232.   '7777' =>         1. Macro(user-callerid,)                      [pbx_config]
  1233.                     2. Goto(from-pstn,${EXTEN},1)                 [pbx_config]
  1234.   'h' =>            1. Macro(hangupcall,)                         [pbx_config]
  1235.   Include =>        'ext-test-custom'                             [pbx_config]
  1236.  
  1237. [ Context 'app-chanspy' created by 'pbx_config' ]
  1238.   '555' =>          1. Macro(user-callerid,)                      [pbx_config]
  1239.                     2. Answer()                                   [pbx_config]
  1240.                     3. Wait(1)                                    [pbx_config]
  1241.                     4. ChanSpy()                                  [pbx_config]
  1242.                     5. Hangup()                                   [pbx_config]
  1243.   Include =>        'app-chanspy-custom'                          [pbx_config]
  1244.  
  1245. [ Context 'app-zapbarge' created by 'pbx_config' ]
  1246.   '888' =>          1. Macro(user-callerid,)                      [pbx_config]
  1247.                     2. Set(GROUP()=${CALLERID(number)})           [pbx_config]
  1248.                     3. Answer()                                   [pbx_config]
  1249.                     4. Wait(1)                                    [pbx_config]
  1250.                     5. DAHDIBarge()                               [pbx_config]
  1251.                     6. Hangup()                                   [pbx_config]
  1252.   Include =>        'app-zapbarge-custom'                         [pbx_config]
  1253.  
  1254. [ Context 'app-pickup' created by 'pbx_config' ]
  1255.   '***80100' =>     1. Macro(user-callerid,)                      [pbx_config]
  1256.                     2. Set(PICKUP_EXTEN=${AMPUSER})               [pbx_config]
  1257.                     3. Pickup(100&100@PICKUPMARK&400@from-internal&400@from-internal-xfer&400@ext-group) [pbx_config]
  1258.                     4. Hangup()                                   [pbx_config]
  1259.   '**100' =>        1. Macro(user-callerid,)                      [pbx_config]
  1260.                     2. Set(PICKUP_EXTEN=${AMPUSER})               [pbx_config]
  1261.                     3. Pickup(100&100@PICKUPMARK&400@from-internal&400@from-internal-xfer&400@ext-group) [pbx_config]
  1262.                     4. Hangup()                                   [pbx_config]
  1263.   '_***80.' =>      1. Macro(user-callerid,)                      [pbx_config]
  1264.                     2. Set(PICKUP_EXTEN=${AMPUSER})               [pbx_config]
  1265.                     3. Pickup(${EXTEN:5}&${EXTEN:5}@PICKUPMARK)   [pbx_config]
  1266.                     4. Hangup()                                   [pbx_config]
  1267.   '_**.' =>         1. Macro(user-callerid,)                      [pbx_config]
  1268.                     2. Set(PICKUP_EXTEN=${AMPUSER})               [pbx_config]
  1269.                     3. Pickup(${EXTEN:2}&${EXTEN:2}@PICKUPMARK)   [pbx_config]
  1270.                     4. Hangup()                                   [pbx_config]
  1271.   Include =>        'app-pickup-custom'                           [pbx_config]
  1272.  
  1273. [ Context 'findmefollow-ringallv2' created by 'pbx_config' ]
  1274.   '_FMGL-.' =>      1. NoCDR()                                    [pbx_config]
  1275.                     2. Set(ENDLOOP=$[${EPOCH} + ${FMPRERING} + 2]) [pbx_config]
  1276.      [start]        3. GotoIf($["${SHARED(FM_DND,${FMUNIQUE})}" = "DND"]?dodnd) [pbx_config]
  1277.                     4. Wait(1)                                    [pbx_config]
  1278.                     5. GotoIf($[${EPOCH} < ${ENDLOOP}]?start)     [pbx_config]
  1279.                     6. Set(SHARED(FM_DND,${FMUNIQUE})=)           [pbx_config]
  1280.      [dodial]       7. Macro(dial,${FMGRPTIME},${DIAL_OPTIONS},${EXTEN:5}) [pbx_config]
  1281.                     8. Hangup()                                   [pbx_config]
  1282.      [dodnd]        19. Set(SHARED(FM_DND,${FMUNIQUE})=)          [pbx_config]
  1283.                     20. GotoIf($["${FMPRIME}" = "FALSE"]?dodial)  [pbx_config]
  1284.                     21. Hangup()                                  [pbx_config]
  1285.   '_FMPR-.' =>      1. NoCDR()                                    [pbx_config]
  1286.                     2. Set(RingGroupMethod=)                      [pbx_config]
  1287.                     3. Set(USE_CONFIRMATION=)                     [pbx_config]
  1288.                     4. Set(RINGGROUP_INDEX=)                      [pbx_config]
  1289.                     5. Macro(simple-dial,${EXTEN:5},${FMREALPRERING}) [pbx_config]
  1290.                     6. ExecIf($["${DIALSTATUS}" = "BUSY"]?Set(SHARED(FM_DND,${FMUNIQUE})=DND)) [pbx_config]
  1291.                     7. Hangup()                                   [pbx_config]
  1292.   Include =>        'findmefollow-ringallv2-custom'               [pbx_config]
  1293.  
  1294. [ Context 'ext-local-confirm' created by 'pbx_config' ]
  1295.   '_LC-.' =>        1. ExecIf($["${DIRECTION}" = "INBOUND"]?Set(DIAL_OPTIONS=${STRREPLACE(DIAL_OPTIONS,T)}I)) [pbx_config]
  1296.                     2. Set(THISDIAL=${DB(DEVICE/${EXTEN:3}/dial)}) [pbx_config]
  1297.                     3. GotoIf($["${THISDIAL:0:5}"!="PJSIP"]?dial) [pbx_config]
  1298.                     4. Noop(Debug: Found PJSIP Destination ${THISDIAL}, updating with PJSIP_DIAL_CONTACTS) [pbx_config]
  1299.                     5. Set(THISDIAL=${PJSIP_DIAL_CONTACTS(${EXTEN:3})}) [pbx_config]
  1300.      [dial]         6. Dial(${THISDIAL},${RT},${DIAL_OPTIONS}M(auto-confirm^${RG_IDX})b(func-apply-sipheaders^s^1)) [pbx_config]
  1301.   Include =>        'ext-local-confirm-custom'                    [pbx_config]
  1302.  
  1303. [ Context 'macro-dial' created by 'pbx_config' ]
  1304.   'ANSWER' =>       1. Noop(Call successfully answered - Hanging up now) [pbx_config]
  1305.                     2. Macro(hangupcall,)                         [pbx_config]
  1306.   'DONTCALL' =>     1. Answer()                                   [pbx_config]
  1307.                     2. Wait(1)                                    [pbx_config]
  1308.                     3. Zapateller()                               [pbx_config]
  1309.                     4. Playback(ss-noservice)                     [pbx_config]
  1310.                     5. Macro(hangupcall,)                         [pbx_config]
  1311.   'NOANSWER' =>     1. Macro(vm,${SCREEN_EXTEN},BUSY,${IVR_RETVM}) [pbx_config]
  1312.                     2. GotoIf($["${IVR_RETVM}" != "RETURN" | "${IVR_CONTEXT}" = ""]?bye) [pbx_config]
  1313.                     3. Return()                                   [pbx_config]
  1314.      [bye]          4. Macro(hangupcall,)                         [pbx_config]
  1315.   'TORTURE' =>      1. Goto(app-blackhole,musiconhold,1)          [pbx_config]
  1316.                     2. Macro(hangupcall,)                         [pbx_config]
  1317.   'h' =>            1. Macro(hangupcall,)                         [pbx_config]
  1318.   's' =>            1. Noop(Blind Transfer: ${BLINDTRANSFER}, Attended Transfer: ${ATTENDEDTRANSFER}, User: ${AMPUSER}, Alert Info: ${ALERT_INFO}) [pbx_config]
  1319.                     2. ExecIf($["${ALERT_INFO}"="" & ${LEN(${AMPUSER})}!=0 & ${LEN(${BLINDTRANSFER})}=0 & ${LEN(${ATTENDEDTRANSFER})}=0]?Set(ALERT_INFO=)) [pbx_config]
  1320.                     3. ExecIf($[${LEN(${BLINDTRANSFER})}!=0]?Set(ALERT_INFO=)) [pbx_config]
  1321.                     4. ExecIf($[${LEN(${ATTENDEDTRANSFER})}!=0]?Set(ALERT_INFO=)) [pbx_config]
  1322.                     5. ExecIf($[("${MOHCLASS}"!="default") & ("${MOHCLASS}"!="")]?Set(CHANNEL(musicclass)=${MOHCLASS})) [pbx_config]
  1323.      [dial]         6. AGI(dialparties.agi)                       [pbx_config]
  1324.                     7. Noop(Returned from dialparties with no extensions to call and DIALSTATUS: ${DIALSTATUS}) [pbx_config]
  1325.                     8. MacroExit()                                [pbx_config]
  1326.      [normdial]     9. Noop(Returned from dialparties with groups to dial) [pbx_config]
  1327.                     10. Set(LOOPCNT=${FIELDQTY(FILTERED_DIAL,-)}) [pbx_config]
  1328.                     11. Set(ITER=1)                               [pbx_config]
  1329.      [ndloopbegin]  12. Set(EXTTOCALL=${CUT(FILTERED_DIAL,-,${ITER})}) [pbx_config]
  1330.                     13. Noop(Working with ${EXTTOCALL})           [pbx_config]
  1331.                     14. ExecIf($["${RVOL}"!=""]?Set(HASH(__SIPHEADERS,Alert-Info)=${IF($["${ALERT_INFO}"!=""]?${ALERT_INFO}:Normal)};volume=${RVOL})) [pbx_config]
  1332.                     15. ExecIf($["${RVOL}"="" & "${DB(AMPUSER/${EXTTOCALL}/rvolume)}" != ""]?Set(HASH(__SIPHEADERS,Alert-Info)=${IF($["${ALERT_INFO}"!=""]?${ALERT_INFO}:Normal)};volume=${DB(AMPUSER/${EXTTOCALL}/rvolume)})) [pbx_config]
  1333.                     16. Set(ITER=$[${ITER}+1])                    [pbx_config]
  1334.                     17. GotoIf($[${ITER}<=${LOOPCNT}]?ndloopbegin) [pbx_config]
  1335.                     18. Macro(dial-ringall-predial-hook,)         [pbx_config]
  1336.      [nddialapp]    19. Dial(${ds}b(func-apply-sipheaders^s^1),)  [pbx_config]
  1337.                     20. Set(DIALSTATUS=${IF($["${DIALSTATUS_CW}"!="" ]?${DIALSTATUS_CW}:${DIALSTATUS})}) [pbx_config]
  1338.                     21. GosubIf($[("${SCREEN}" != "" & ("${DIALSTATUS}" = "TORTURE" | "${DIALSTATUS}" = "DONTCALL"))  | "${DIALSTATUS}" = "ANSWER"]?${DIALSTATUS},1()) [pbx_config]
  1339.      [groupnoanswer] 22. Noop(Returning since nobody answered)     [pbx_config]
  1340.                     23. MacroExit()                               [pbx_config]
  1341.      [huntdial]     24. Noop(Returned from dialparties with ${HuntMembers} hunt members to dial) [pbx_config]
  1342.                     25. Set(HuntLoop=0)                           [pbx_config]
  1343.                     26. ExecIf($[${LEN(${HuntMembers})}=0]?Set(HuntMembers=0)) [pbx_config]
  1344.      [a22]          27. GotoIf($[${HuntMembers} >= 1]?a30)        [pbx_config]
  1345.      [huntnoanswer] 28. Noop(Returning as there are no members left in the hunt group to ring) [pbx_config]
  1346.                     29. MacroExit()                               [pbx_config]
  1347.      [a30]          30. Set(HuntMember=HuntMember${HuntLoop})     [pbx_config]
  1348.                     31. GotoIf($[$["${CALLTRACE_HUNT}" != "" ] & $[$["${RingGroupMethod}" = "hunt" ] | $["${RingGroupMethod}" = "firstavailable"] | $["${RingGroupMethod}" = "firstnotonphone"]]]?a32:a35) [pbx_config]
  1349.      [a32]          32. Set(CT_EXTEN=${CUT(FILTERED_DIAL,,$[${HuntLoop} + 1])}) [pbx_config]
  1350.                     33. Set(EXTTOCALL=${CT_EXTEN})                [pbx_config]
  1351.                     34. Set(DB(CALLTRACE/${CT_EXTEN})=${CALLTRACE_HUNT}) [pbx_config]
  1352.                     35. Goto(s,huntstart)                         [pbx_config]
  1353.      [a35]          36. GotoIf($[$["${CALLTRACE_HUNT}" != "" ] & $["${RingGroupMethod}" = "memoryhunt" ]]?a36:a50) [pbx_config]
  1354.      [a36]          37. Set(CTLoop=0)                             [pbx_config]
  1355.      [a37]          38. GotoIf($[${CTLoop} > ${HuntLoop}]?huntstart) [pbx_config]
  1356.                     39. Set(CT_EXTEN=${CUT(FILTERED_DIAL,,$[${CTLoop} + 1])}) [pbx_config]
  1357.                     40. Set(EXTTOCALL=${CT_EXTEN})                [pbx_config]
  1358.                     41. Set(DB(CALLTRACE/${CT_EXTEN})=${CALLTRACE_HUNT}) [pbx_config]
  1359.                     42. Set(CTLoop=$[1 + ${CTLoop}])              [pbx_config]
  1360.                     43. Goto(s,a37)                               [pbx_config]
  1361.      [huntstart]    44. Noop(Hunt Dial Start)                     [pbx_config]
  1362.                     45. ExecIf($["${RVOL}"!=""]?Set(HASH(__SIPHEADERS,Alert-Info)=${IF($["${ALERT_INFO}"!=""]?${ALERT_INFO}:Normal)};volume=${RVOL})) [pbx_config]
  1363.                     46. ExecIf($["${RVOL}"="" & "${DB(AMPUSER/${EXTTOCALL}/rvolume)}" != ""]?Set(HASH(__SIPHEADERS,Alert-Info)=${IF($["${ALERT_INFO}"!=""]?${ALERT_INFO}:Normal)};volume=${DB(AMPUSER/${EXTTOCALL}/rvolume)})) [pbx_config]
  1364.                     47. Macro(dial-hunt-predial-hook,)            [pbx_config]
  1365.      [hsdialapp]    48. Dial(${${HuntMember}}${ds}b(func-apply-sipheaders^s^1),) [pbx_config]
  1366.                     49. GotoIf($["${DIALSTATUS}" = "ANSWER"]?ANSWER,1) [pbx_config]
  1367.                     50. Set(HuntLoop=$[1 + ${HuntLoop}])          [pbx_config]
  1368.                     51. GotoIf($[$["${RingGroupMethod}" = "firstavailable"] | $["${RingGroupMethod}" = "firstnotonphone"]] & $[$["${DIALSTATUS}" != "CHANUNAVAIL"] & $["${DIALSTATUS}" != "CONGESTION"]]?huntreset:a46) [pbx_config]
  1369.      [huntreset]    52. Set(HuntMembers=1)                        [pbx_config]
  1370.      [a46]          53. Set(HuntMembers=$[${HuntMembers} - 1])    [pbx_config]
  1371.                     54. Goto(s,a22)                               [pbx_config]
  1372.      [a50]          55. Noop(Deleting: CALLTRACE/${CT_EXTEN} ${DB_DELETE(CALLTRACE/${CT_EXTEN})}) [pbx_config]
  1373.                     56. Goto(s,huntstart)                         [pbx_config]
  1374.   Include =>        'macro-dial-custom'                           [pbx_config]
  1375.  
  1376. [ Context 'app-userlogonoff' created by 'pbx_config' ]
  1377.   '*11' =>          1. Macro(user-logon,)                         [pbx_config]
  1378.      [hook_on_1]    2. Hangup()                                   [pbx_config]
  1379.   '*12' =>          1. Macro(user-logoff,)                        [pbx_config]
  1380.      [hook_off]     2. Hangup()                                   [pbx_config]
  1381.   '_*11.' =>        1. Macro(user-logon,${EXTEN:3},)              [pbx_config]
  1382.      [hook_on_2]    2. Hangup()                                   [pbx_config]
  1383.   Include =>        'app-userlogonoff-custom'                     [pbx_config]
  1384.  
  1385. [ Context 'app-blacklist-last' created by 'pbx_config' ]
  1386.   '1' =>            1. Set(DB(blacklist/${lastcaller})=1)         [pbx_config]
  1387.                     2. Playback(num-was-successfully)             [pbx_config]
  1388.                     3. Playback(added)                            [pbx_config]
  1389.                     4. Wait(1)                                    [pbx_config]
  1390.                     5. Hangup()                                   [pbx_config]
  1391.   'en' =>           1. Playback(if-correct-press&digits/1)        [pbx_config]
  1392.                     2. Return()                                   [pbx_config]
  1393.   'ja' =>           1. Playback(if-correct-press&digits/1&pleasepress) [pbx_config]
  1394.                     2. Return()                                   [pbx_config]
  1395.   's' =>            1. Answer()                                   [pbx_config]
  1396.                     2. Macro(user-callerid,)                      [pbx_config]
  1397.                     3. Wait(1)                                    [pbx_config]
  1398.                     4. Set(lastcaller=${DB(CALLTRACE/${AMPUSER})}) [pbx_config]
  1399.                     5. GotoIf($[ $[ "${lastcaller}" = "" ] | $[ "${lastcaller}" = "unknown" ] ]?noinfo) [pbx_config]
  1400.                     6. Playback(privacy-to-blacklist-last-caller&telephone-number) [pbx_config]
  1401.                     7. SayDigits(${lastcaller})                   [pbx_config]
  1402.                     8. Set(TIMEOUT(digit)=3)                      [pbx_config]
  1403.                     9. Set(TIMEOUT(response)=7)                   [pbx_config]
  1404.                     10. GosubIf($[${DIALPLAN_EXISTS(app-blacklist-last,${CHANNEL(language)})}]?app-blacklist-last,${CHANNEL(language)},1():app-blacklist-last,en,1()) [pbx_config]
  1405.                     11. Goto(end)                                 [pbx_config]
  1406.      [noinfo]       12. Playback(unidentified-no-callback)        [pbx_config]
  1407.                     13. Hangup()                                  [pbx_config]
  1408.                     14. Noop(Waiting for input)                   [pbx_config]
  1409.      [end]          15. WaitExten(60,)                            [pbx_config]
  1410.                     16. Playback(sorry-youre-having-problems&goodbye) [pbx_config]
  1411.   Include =>        'app-blacklist-last-custom'                   [pbx_config]
  1412.  
  1413. [ Context 'app-blacklist-remove' created by 'pbx_config' ]
  1414.   '1' =>            1. Noop(Deleting: blacklist/${blacknr} ${DB_DELETE(blacklist/${blacknr})}) [pbx_config]
  1415.                     2. Playback(num-was-successfully&removed)     [pbx_config]
  1416.                     3. Wait(1)                                    [pbx_config]
  1417.                     4. Hangup()                                   [pbx_config]
  1418.   'en' =>           1. Playback(if-correct-press&digits/1)        [pbx_config]
  1419.                     2. Return()                                   [pbx_config]
  1420.   'ja' =>           1. Playback(if-correct-press&digits/1&pleasepress) [pbx_config]
  1421.                     2. Return()                                   [pbx_config]
  1422.   's' =>            1. Answer()                                   [pbx_config]
  1423.                     2. Macro(user-callerid,)                      [pbx_config]
  1424.                     3. Wait(1)                                    [pbx_config]
  1425.                     4. Playback(entr-num-rmv-blklist)             [pbx_config]
  1426.                     5. Set(TIMEOUT(digit)=5)                      [pbx_config]
  1427.                     6. Set(TIMEOUT(response)=60)                  [pbx_config]
  1428.                     7. Read(blacknr,vm-then-pound,,,,)            [pbx_config]
  1429.                     8. SayDigits(${blacknr})                      [pbx_config]
  1430.                     9. GosubIf($[${DIALPLAN_EXISTS(app-blacklist-remove,${CHANNEL(language)})}]?app-blacklist-remove,${CHANNEL(language)},1():app-blacklist-remove,en,1()) [pbx_config]
  1431.                     10. Noop(Waiting for input)                   [pbx_config]
  1432.      [end]          11. WaitExten(60,)                            [pbx_config]
  1433.                     12. Playback(sorry-youre-having-problems&goodbye) [pbx_config]
  1434.   Include =>        'app-blacklist-remove-custom'                 [pbx_config]
  1435.  
  1436. [ Context 'app-blacklist-add-invalid' created by 'pbx_config' ]
  1437.   's' =>            1. Set(NumLoops=$[${NumLoops} + 1])           [pbx_config]
  1438.                     2. Playback(pm-invalid-option)                [pbx_config]
  1439.                     3. GotoIf($[${NumLoops} < 3]?app-blacklist-add,s,start) [pbx_config]
  1440.                     4. Playback(goodbye)                          [pbx_config]
  1441.                     5. Hangup()                                   [pbx_config]
  1442.   Include =>        'app-blacklist-add-invalid-custom'            [pbx_config]
  1443.  
  1444. [ Context 'app-blacklist-add' created by 'pbx_config' ]
  1445.   '1' =>            1. GotoIf($[ "${blacknr}" != ""]?:app-blacklist-add-invalid,s,1) [pbx_config]
  1446.                     2. Set(DB(blacklist/${blacknr})=1)            [pbx_config]
  1447.                     3. Playback(num-was-successfully&added)       [pbx_config]
  1448.                     4. Wait(1)                                    [pbx_config]
  1449.                     5. Hangup()                                   [pbx_config]
  1450.   'en' =>           1. Playback(if-correct-press&digits/1)        [pbx_config]
  1451.                     2. Return()                                   [pbx_config]
  1452.   'ja' =>           1. Playback(if-correct-press&digits/1&pleasepress) [pbx_config]
  1453.                     2. Return()                                   [pbx_config]
  1454.   's' =>            1. Answer()                                   [pbx_config]
  1455.                     2. Macro(user-callerid,)                      [pbx_config]
  1456.                     3. Wait(1)                                    [pbx_config]
  1457.                     4. Set(NumLoops=0)                            [pbx_config]
  1458.      [start]        5. Playback(enter-num-blacklist)              [pbx_config]
  1459.                     6. Set(TIMEOUT(digit)=5)                      [pbx_config]
  1460.                     7. Set(TIMEOUT(response)=60)                  [pbx_config]
  1461.                     8. Read(blacknr,vm-then-pound,,,,)            [pbx_config]
  1462.                     9. SayDigits(${blacknr})                      [pbx_config]
  1463.                     10. GosubIf($[${DIALPLAN_EXISTS(app-blacklist-add,${CHANNEL(language)})}]?app-blacklist-add,${CHANNEL(language)},1():app-blacklist-add,en,1()) [pbx_config]
  1464.                     11. Noop(Waiting for input)                   [pbx_config]
  1465.      [end]          12. WaitExten(10,)                            [pbx_config]
  1466.                     13. Playback(sorry-youre-having-problems&goodbye) [pbx_config]
  1467.                     14. Wait(1)                                   [pbx_config]
  1468.                     15. Hangup()                                  [pbx_config]
  1469.   Include =>        'app-blacklist-add-custom'                    [pbx_config]
  1470.  
  1471. [ Context 'app-blacklist-check' created by 'pbx_config' ]
  1472.   's' =>            1. GotoIf($["${BLACKLIST()}"="1"]?blacklisted) [pbx_config]
  1473.                     2. Set(CALLED_BLACKLIST=1)                    [pbx_config]
  1474.                     3. Return()                                   [pbx_config]
  1475.      [blacklisted]  4. Answer()                                   [pbx_config]
  1476.                     5. Set(BLDEST=${DB(blacklist/dest)})          [pbx_config]
  1477.                     6. GotoIf(${LEN(${BLDEST})}?${BLDEST}:app-blackhole,zapateller,1) [pbx_config]
  1478.   Include =>        'app-blacklist-check-custom'                  [pbx_config]
  1479.  
  1480. [ Context 'app-blacklist' created by 'pbx_config' ]
  1481.   '*30' =>          1. Goto(app-blacklist-add,s,1)                [pbx_config]
  1482.   '*31' =>          1. Goto(app-blacklist-remove,s,1)             [pbx_config]
  1483.   '*32' =>          1. Goto(app-blacklist-last,s,1)               [pbx_config]
  1484.   's' =>            1. Macro(user-callerid,)                      [pbx_config]
  1485.   Include =>        'app-blacklist-custom'                        [pbx_config]
  1486.  
  1487. [ Context 'app-vmmain' created by 'pbx_config' ]
  1488.   '*97' =>          1. Macro(user-callerid,)                      [pbx_config]
  1489.                     2. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1490.                     3. Set(CONNECTEDLINE(name,i)=My Voicemail)    [pbx_config]
  1491.                     4. Set(CONNECTEDLINE(num,i)=${AMPUSER})       [pbx_config]
  1492.                     5. Answer()                                   [pbx_config]
  1493.                     6. Wait(1)                                    [pbx_config]
  1494.                     7. Macro(get-vmcontext,${AMPUSER})            [pbx_config]
  1495.      [check]        8. Set(VMBOXEXISTSSTATUS=${IF(${VM_INFO(${AMPUSER}@${VMCONTEXT},exists)}?SUCCESS:FAILED)}) [pbx_config]
  1496.                     9. GotoIf($["${VMBOXEXISTSSTATUS}" = "SUCCESS"]?mbexist) [pbx_config]
  1497.                     10. VoiceMailMain()                           [pbx_config]
  1498.                     11. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?playret) [pbx_config]
  1499.                     12. Macro(hangupcall,)                        [pbx_config]
  1500.      [mbexist]      109. GotoIf($["${DB(AMPUSER/${AMPUSER}/novmpw)}"!=""]?novmpw:vmpw) [pbx_config]
  1501.      [novmpw]       110. Noop(Verifying channel ${CHANNEL} is actually ${AMPUSER}) [pbx_config]
  1502.                     111. Set(DEVICES=${DB(AMPUSER/${AMPUSER}/device)}) [pbx_config]
  1503.                     112. ExecIf($["${DEVICES}" = ""]?Set(DEVICES=${AMPUSER})) [pbx_config]
  1504.                     113. ExecIf($["${DEVICES:0:1}" = "&"]?Set(DEVICES=${DEVICES:1})) [pbx_config]
  1505.                     114. While($["${SET(DEV=${SHIFT(DEVICES,&)})}" != ""]) [pbx_config]
  1506.                     115. GotoIf($["${DB(DEVICE/${DEV}/dial)}" = "${CUT(CHANNEL,-,1)}"]?vmpwskip) [pbx_config]
  1507.                     116. EndWhile()                               [pbx_config]
  1508.                     117. Noop(Channel ${CHANNEL} is NOT ${AMPUSER} forcing VM Password) [pbx_config]
  1509.      [vmpw]         118. VoiceMailMain(${AMPUSER}@${VMCONTEXT})   [pbx_config]
  1510.                     119. Goto(vmend)                              [pbx_config]
  1511.      [vmpwskip]     120. VoiceMailMain(${AMPUSER}@${VMCONTEXT},s) [pbx_config]
  1512.      [vmend]        121. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?playret) [pbx_config]
  1513.                     122. Macro(hangupcall,)                       [pbx_config]
  1514.      [playret]      123. Playback(beep&you-will-be-transfered-menu&silence/1) [pbx_config]
  1515.                     124. Goto(${IVR_CONTEXT},return,1)            [pbx_config]
  1516.   Include =>        'app-vmmain-custom'                           [pbx_config]
  1517.  
  1518. [ Context 'from-did-direct-ivr' created by 'pbx_config' ]
  1519.   '*103' =>         1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1520.                     2. Set(CONNECTEDLINE(name,i)=103 Voicemail)   [pbx_config]
  1521.                     3. Set(CONNECTEDLINE(num,i)=103)              [pbx_config]
  1522.                     4. Macro(blkvm-clr,)                          [pbx_config]
  1523.                     5. Set(__NODEST=)                             [pbx_config]
  1524.                     6. Macro(vm,103,DIRECTDIAL,${IVR_RETVM})      [pbx_config]
  1525.                     7. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret) [pbx_config]
  1526.   '*150' =>         1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1527.                     2. Set(CONNECTEDLINE(name,i)=150 Voicemail)   [pbx_config]
  1528.                     3. Set(CONNECTEDLINE(num,i)=150)              [pbx_config]
  1529.                     4. Macro(blkvm-clr,)                          [pbx_config]
  1530.                     5. Set(__NODEST=)                             [pbx_config]
  1531.                     6. Macro(vm,150,DIRECTDIAL,${IVR_RETVM})      [pbx_config]
  1532.                     7. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret) [pbx_config]
  1533.   '*170' =>         1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1534.                     2. Set(CONNECTEDLINE(name,i)=170 Voicemail)   [pbx_config]
  1535.                     3. Set(CONNECTEDLINE(num,i)=170)              [pbx_config]
  1536.                     4. Macro(blkvm-clr,)                          [pbx_config]
  1537.                     5. Set(__NODEST=)                             [pbx_config]
  1538.                     6. Macro(vm,170,DIRECTDIAL,${IVR_RETVM})      [pbx_config]
  1539.                     7. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret) [pbx_config]
  1540.   '*200' =>         1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1541.                     2. Set(CONNECTEDLINE(name,i)=200 Voicemail)   [pbx_config]
  1542.                     3. Set(CONNECTEDLINE(num,i)=200)              [pbx_config]
  1543.                     4. Macro(blkvm-clr,)                          [pbx_config]
  1544.                     5. Set(__NODEST=)                             [pbx_config]
  1545.                     6. Macro(vm,200,DIRECTDIAL,${IVR_RETVM})      [pbx_config]
  1546.                     7. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret) [pbx_config]
  1547.   '*201' =>         1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1548.                     2. Set(CONNECTEDLINE(name,i)=201 Voicemail)   [pbx_config]
  1549.                     3. Set(CONNECTEDLINE(num,i)=201)              [pbx_config]
  1550.                     4. Macro(blkvm-clr,)                          [pbx_config]
  1551.                     5. Set(__NODEST=)                             [pbx_config]
  1552.                     6. Macro(vm,201,DIRECTDIAL,${IVR_RETVM})      [pbx_config]
  1553.                     7. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret) [pbx_config]
  1554.   '*202' =>         1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1555.                     2. Set(CONNECTEDLINE(name,i)=202 Voicemail)   [pbx_config]
  1556.                     3. Set(CONNECTEDLINE(num,i)=202)              [pbx_config]
  1557.                     4. Macro(blkvm-clr,)                          [pbx_config]
  1558.                     5. Set(__NODEST=)                             [pbx_config]
  1559.                     6. Macro(vm,202,DIRECTDIAL,${IVR_RETVM})      [pbx_config]
  1560.                     7. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret) [pbx_config]
  1561.   '*203' =>         1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1562.                     2. Set(CONNECTEDLINE(name,i)=203 Voicemail)   [pbx_config]
  1563.                     3. Set(CONNECTEDLINE(num,i)=203)              [pbx_config]
  1564.                     4. Macro(blkvm-clr,)                          [pbx_config]
  1565.                     5. Set(__NODEST=)                             [pbx_config]
  1566.                     6. Macro(vm,203,DIRECTDIAL,${IVR_RETVM})      [pbx_config]
  1567.                     7. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret) [pbx_config]
  1568.   '*204' =>         1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1569.                     2. Set(CONNECTEDLINE(name,i)=204 Voicemail)   [pbx_config]
  1570.                     3. Set(CONNECTEDLINE(num,i)=204)              [pbx_config]
  1571.                     4. Macro(blkvm-clr,)                          [pbx_config]
  1572.                     5. Set(__NODEST=)                             [pbx_config]
  1573.                     6. Macro(vm,204,DIRECTDIAL,${IVR_RETVM})      [pbx_config]
  1574.                     7. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret) [pbx_config]
  1575.   '*4000' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1576.                     2. Set(CONNECTEDLINE(name,i)=4000 Voicemail)  [pbx_config]
  1577.                     3. Set(CONNECTEDLINE(num,i)=4000)             [pbx_config]
  1578.                     4. Macro(blkvm-clr,)                          [pbx_config]
  1579.                     5. Set(__NODEST=)                             [pbx_config]
  1580.                     6. Macro(vm,4000,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1581.                     7. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret) [pbx_config]
  1582.   '*4001' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1583.                     2. Set(CONNECTEDLINE(name,i)=4001 Voicemail)  [pbx_config]
  1584.                     3. Set(CONNECTEDLINE(num,i)=4001)             [pbx_config]
  1585.                     4. Macro(blkvm-clr,)                          [pbx_config]
  1586.                     5. Set(__NODEST=)                             [pbx_config]
  1587.                     6. Macro(vm,4001,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1588.                     7. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret) [pbx_config]
  1589.   '*4002' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1590.                     2. Set(CONNECTEDLINE(name,i)=4002 Voicemail)  [pbx_config]
  1591.                     3. Set(CONNECTEDLINE(num,i)=4002)             [pbx_config]
  1592.                     4. Macro(blkvm-clr,)                          [pbx_config]
  1593.                     5. Set(__NODEST=)                             [pbx_config]
  1594.                     6. Macro(vm,4002,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1595.                     7. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret) [pbx_config]
  1596.   '*4003' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1597.                     2. Set(CONNECTEDLINE(name,i)=4003 Voicemail)  [pbx_config]
  1598.                     3. Set(CONNECTEDLINE(num,i)=4003)             [pbx_config]
  1599.                     4. Macro(blkvm-clr,)                          [pbx_config]
  1600.                     5. Set(__NODEST=)                             [pbx_config]
  1601.                     6. Macro(vm,4003,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1602.                     7. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret) [pbx_config]
  1603.   '*4004' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1604.                     2. Set(CONNECTEDLINE(name,i)=4004 Voicemail)  [pbx_config]
  1605.                     3. Set(CONNECTEDLINE(num,i)=4004)             [pbx_config]
  1606.                     4. Macro(blkvm-clr,)                          [pbx_config]
  1607.                     5. Set(__NODEST=)                             [pbx_config]
  1608.                     6. Macro(vm,4004,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1609.                     7. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret) [pbx_config]
  1610.   '*4005' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1611.                     2. Set(CONNECTEDLINE(name,i)=4005 Voicemail)  [pbx_config]
  1612.                     3. Set(CONNECTEDLINE(num,i)=4005)             [pbx_config]
  1613.                     4. Macro(blkvm-clr,)                          [pbx_config]
  1614.                     5. Set(__NODEST=)                             [pbx_config]
  1615.                     6. Macro(vm,4005,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1616.                     7. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret) [pbx_config]
  1617.   '*4006' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1618.                     2. Set(CONNECTEDLINE(name,i)=4006 Voicemail)  [pbx_config]
  1619.                     3. Set(CONNECTEDLINE(num,i)=4006)             [pbx_config]
  1620.                     4. Macro(blkvm-clr,)                          [pbx_config]
  1621.                     5. Set(__NODEST=)                             [pbx_config]
  1622.                     6. Macro(vm,4006,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1623.                     7. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret) [pbx_config]
  1624.   '*4007' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1625.                     2. Set(CONNECTEDLINE(name,i)=4007 Voicemail)  [pbx_config]
  1626.                     3. Set(CONNECTEDLINE(num,i)=4007)             [pbx_config]
  1627.                     4. Macro(blkvm-clr,)                          [pbx_config]
  1628.                     5. Set(__NODEST=)                             [pbx_config]
  1629.                     6. Macro(vm,4007,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1630.                     7. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret) [pbx_config]
  1631.   '*4008' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1632.                     2. Set(CONNECTEDLINE(name,i)=4008 Voicemail)  [pbx_config]
  1633.                     3. Set(CONNECTEDLINE(num,i)=4008)             [pbx_config]
  1634.                     4. Macro(blkvm-clr,)                          [pbx_config]
  1635.                     5. Set(__NODEST=)                             [pbx_config]
  1636.                     6. Macro(vm,4008,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1637.                     7. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret) [pbx_config]
  1638.   '*4009' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1639.                     2. Set(CONNECTEDLINE(name,i)=4009 Voicemail)  [pbx_config]
  1640.                     3. Set(CONNECTEDLINE(num,i)=4009)             [pbx_config]
  1641.                     4. Macro(blkvm-clr,)                          [pbx_config]
  1642.                     5. Set(__NODEST=)                             [pbx_config]
  1643.                     6. Macro(vm,4009,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1644.                     7. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret) [pbx_config]
  1645.   '*4010' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1646.                     2. Set(CONNECTEDLINE(name,i)=4010 Voicemail)  [pbx_config]
  1647.                     3. Set(CONNECTEDLINE(num,i)=4010)             [pbx_config]
  1648.                     4. Macro(blkvm-clr,)                          [pbx_config]
  1649.                     5. Set(__NODEST=)                             [pbx_config]
  1650.                     6. Macro(vm,4010,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1651.                     7. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret) [pbx_config]
  1652.   '*4070' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1653.                     2. Set(CONNECTEDLINE(name,i)=4070 Voicemail)  [pbx_config]
  1654.                     3. Set(CONNECTEDLINE(num,i)=4070)             [pbx_config]
  1655.                     4. Macro(blkvm-clr,)                          [pbx_config]
  1656.                     5. Set(__NODEST=)                             [pbx_config]
  1657.                     6. Macro(vm,4070,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1658.                     7. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret) [pbx_config]
  1659.   '*9000' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1660.                     2. Set(CONNECTEDLINE(name,i)=9000 Voicemail)  [pbx_config]
  1661.                     3. Set(CONNECTEDLINE(num,i)=9000)             [pbx_config]
  1662.                     4. Macro(blkvm-clr,)                          [pbx_config]
  1663.                     5. Set(__NODEST=)                             [pbx_config]
  1664.                     6. Macro(vm,9000,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1665.                     7. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?ext-local,vmret,playret) [pbx_config]
  1666.   '_X.' =>          1. GotoIf($[${DIALPLAN_EXISTS(from-did-direct,${EXTEN},1)} = 0]?i,1) [pbx_config]
  1667.                     2. Macro(blkvm-clr,)                          [pbx_config]
  1668.                     3. Set(__NODEST=)                             [pbx_config]
  1669.                     4. Goto(from-did-direct,${EXTEN},1)           [pbx_config]
  1670.   Include =>        'from-did-direct-ivr-custom'                  [pbx_config]
  1671.  
  1672. [ Context 'ext-local' created by 'pbx_config' ]
  1673.   '*103' =>         1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1674.                     2. Set(CONNECTEDLINE(name,i)=103 Voicemail)   [pbx_config]
  1675.                     3. Set(CONNECTEDLINE(num,i)=103)              [pbx_config]
  1676.                     4. Macro(vm,103,DIRECTDIAL,${IVR_RETVM})      [pbx_config]
  1677.                     5. Goto(vmret,1)                              [pbx_config]
  1678.   '*150' =>         1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1679.                     2. Set(CONNECTEDLINE(name,i)=150 Voicemail)   [pbx_config]
  1680.                     3. Set(CONNECTEDLINE(num,i)=150)              [pbx_config]
  1681.                     4. Macro(vm,150,DIRECTDIAL,${IVR_RETVM})      [pbx_config]
  1682.                     5. Goto(vmret,1)                              [pbx_config]
  1683.   '*170' =>         1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1684.                     2. Set(CONNECTEDLINE(name,i)=170 Voicemail)   [pbx_config]
  1685.                     3. Set(CONNECTEDLINE(num,i)=170)              [pbx_config]
  1686.                     4. Macro(vm,170,DIRECTDIAL,${IVR_RETVM})      [pbx_config]
  1687.                     5. Goto(vmret,1)                              [pbx_config]
  1688.   '*200' =>         1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1689.                     2. Set(CONNECTEDLINE(name,i)=200 Voicemail)   [pbx_config]
  1690.                     3. Set(CONNECTEDLINE(num,i)=200)              [pbx_config]
  1691.                     4. Macro(vm,200,DIRECTDIAL,${IVR_RETVM})      [pbx_config]
  1692.                     5. Goto(vmret,1)                              [pbx_config]
  1693.   '*201' =>         1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1694.                     2. Set(CONNECTEDLINE(name,i)=201 Voicemail)   [pbx_config]
  1695.                     3. Set(CONNECTEDLINE(num,i)=201)              [pbx_config]
  1696.                     4. Macro(vm,201,DIRECTDIAL,${IVR_RETVM})      [pbx_config]
  1697.                     5. Goto(vmret,1)                              [pbx_config]
  1698.   '*202' =>         1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1699.                     2. Set(CONNECTEDLINE(name,i)=202 Voicemail)   [pbx_config]
  1700.                     3. Set(CONNECTEDLINE(num,i)=202)              [pbx_config]
  1701.                     4. Macro(vm,202,DIRECTDIAL,${IVR_RETVM})      [pbx_config]
  1702.                     5. Goto(vmret,1)                              [pbx_config]
  1703.   '*203' =>         1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1704.                     2. Set(CONNECTEDLINE(name,i)=203 Voicemail)   [pbx_config]
  1705.                     3. Set(CONNECTEDLINE(num,i)=203)              [pbx_config]
  1706.                     4. Macro(vm,203,DIRECTDIAL,${IVR_RETVM})      [pbx_config]
  1707.                     5. Goto(vmret,1)                              [pbx_config]
  1708.   '*204' =>         1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1709.                     2. Set(CONNECTEDLINE(name,i)=204 Voicemail)   [pbx_config]
  1710.                     3. Set(CONNECTEDLINE(num,i)=204)              [pbx_config]
  1711.                     4. Macro(vm,204,DIRECTDIAL,${IVR_RETVM})      [pbx_config]
  1712.                     5. Goto(vmret,1)                              [pbx_config]
  1713.   '*4000' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1714.                     2. Set(CONNECTEDLINE(name,i)=4000 Voicemail)  [pbx_config]
  1715.                     3. Set(CONNECTEDLINE(num,i)=4000)             [pbx_config]
  1716.                     4. Macro(vm,4000,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1717.                     5. Goto(vmret,1)                              [pbx_config]
  1718.   '*4001' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1719.                     2. Set(CONNECTEDLINE(name,i)=4001 Voicemail)  [pbx_config]
  1720.                     3. Set(CONNECTEDLINE(num,i)=4001)             [pbx_config]
  1721.                     4. Macro(vm,4001,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1722.                     5. Goto(vmret,1)                              [pbx_config]
  1723.   '*4002' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1724.                     2. Set(CONNECTEDLINE(name,i)=4002 Voicemail)  [pbx_config]
  1725.                     3. Set(CONNECTEDLINE(num,i)=4002)             [pbx_config]
  1726.                     4. Macro(vm,4002,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1727.                     5. Goto(vmret,1)                              [pbx_config]
  1728.   '*4003' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1729.                     2. Set(CONNECTEDLINE(name,i)=4003 Voicemail)  [pbx_config]
  1730.                     3. Set(CONNECTEDLINE(num,i)=4003)             [pbx_config]
  1731.                     4. Macro(vm,4003,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1732.                     5. Goto(vmret,1)                              [pbx_config]
  1733.   '*4004' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1734.                     2. Set(CONNECTEDLINE(name,i)=4004 Voicemail)  [pbx_config]
  1735.                     3. Set(CONNECTEDLINE(num,i)=4004)             [pbx_config]
  1736.                     4. Macro(vm,4004,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1737.                     5. Goto(vmret,1)                              [pbx_config]
  1738.   '*4005' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1739.                     2. Set(CONNECTEDLINE(name,i)=4005 Voicemail)  [pbx_config]
  1740.                     3. Set(CONNECTEDLINE(num,i)=4005)             [pbx_config]
  1741.                     4. Macro(vm,4005,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1742.                     5. Goto(vmret,1)                              [pbx_config]
  1743.   '*4006' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1744.                     2. Set(CONNECTEDLINE(name,i)=4006 Voicemail)  [pbx_config]
  1745.                     3. Set(CONNECTEDLINE(num,i)=4006)             [pbx_config]
  1746.                     4. Macro(vm,4006,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1747.                     5. Goto(vmret,1)                              [pbx_config]
  1748.   '*4007' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1749.                     2. Set(CONNECTEDLINE(name,i)=4007 Voicemail)  [pbx_config]
  1750.                     3. Set(CONNECTEDLINE(num,i)=4007)             [pbx_config]
  1751.                     4. Macro(vm,4007,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1752.                     5. Goto(vmret,1)                              [pbx_config]
  1753.   '*4008' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1754.                     2. Set(CONNECTEDLINE(name,i)=4008 Voicemail)  [pbx_config]
  1755.                     3. Set(CONNECTEDLINE(num,i)=4008)             [pbx_config]
  1756.                     4. Macro(vm,4008,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1757.                     5. Goto(vmret,1)                              [pbx_config]
  1758.   '*4009' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1759.                     2. Set(CONNECTEDLINE(name,i)=4009 Voicemail)  [pbx_config]
  1760.                     3. Set(CONNECTEDLINE(num,i)=4009)             [pbx_config]
  1761.                     4. Macro(vm,4009,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1762.                     5. Goto(vmret,1)                              [pbx_config]
  1763.   '*4010' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1764.                     2. Set(CONNECTEDLINE(name,i)=4010 Voicemail)  [pbx_config]
  1765.                     3. Set(CONNECTEDLINE(num,i)=4010)             [pbx_config]
  1766.                     4. Macro(vm,4010,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1767.                     5. Goto(vmret,1)                              [pbx_config]
  1768.   '*4070' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1769.                     2. Set(CONNECTEDLINE(name,i)=4070 Voicemail)  [pbx_config]
  1770.                     3. Set(CONNECTEDLINE(num,i)=4070)             [pbx_config]
  1771.                     4. Macro(vm,4070,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1772.                     5. Goto(vmret,1)                              [pbx_config]
  1773.   '*9000' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  1774.                     2. Set(CONNECTEDLINE(name,i)=9000 Voicemail)  [pbx_config]
  1775.                     3. Set(CONNECTEDLINE(num,i)=9000)             [pbx_config]
  1776.                     4. Macro(vm,9000,DIRECTDIAL,${IVR_RETVM})     [pbx_config]
  1777.                     5. Goto(vmret,1)                              [pbx_config]
  1778.   '100' =>          hint: SIP/100&Custom:DND100,CustomPresence:100 [pbx_config]
  1779.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/100/ringtimer)}" > "0"]?${DB(AMPUSER/100/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1780.                     2. Macro(exten-vm,novm,100,0,0,0)             [pbx_config]
  1781.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1782.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1783.   '10000' =>        hint: &Custom:DND10000,CustomPresence:10000   [pbx_config]
  1784.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/10000/ringtimer)}" > "0"]?${DB(AMPUSER/10000/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1785.                     2. Macro(exten-vm,novm,10000,0,0,0)           [pbx_config]
  1786.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1787.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1788.   '101' =>          hint: SIP/101&Custom:DND101,CustomPresence:101 [pbx_config]
  1789.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/101/ringtimer)}" > "0"]?${DB(AMPUSER/101/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1790.                     2. Macro(exten-vm,novm,101,0,0,0)             [pbx_config]
  1791.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1792.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1793.   '102' =>          hint: SIP/102&Custom:DND102,CustomPresence:102 [pbx_config]
  1794.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/102/ringtimer)}" > "0"]?${DB(AMPUSER/102/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1795.                     2. Macro(exten-vm,novm,102,0,0,0)             [pbx_config]
  1796.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1797.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1798.   '103' =>          hint: SIP/103&Custom:DND103,CustomPresence:103 [pbx_config]
  1799.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/103/ringtimer)}" > "0"]?${DB(AMPUSER/103/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1800.                     2. Macro(exten-vm,103,103,0,0,0)              [pbx_config]
  1801.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1802.                     4. Macro(vm,103,${DIALSTATUS},${IVR_RETVM})   [pbx_config]
  1803.                     5. Goto(vmret,1)                              [pbx_config]
  1804.   '104' =>          hint: SIP/104&Custom:DND104,CustomPresence:104 [pbx_config]
  1805.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/104/ringtimer)}" > "0"]?${DB(AMPUSER/104/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1806.                     2. Macro(exten-vm,novm,104,1,1,1)             [pbx_config]
  1807.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1808.                     4. GotoIf($["${DIALSTATUS}"="NOANSWER"]?ext-local,vmu201,1) [pbx_config]
  1809.                     5. GotoIf($["${DIALSTATUS}"="BUSY"]?ext-local,vmu201,1) [pbx_config]
  1810.                     6. GotoIf($["${DIALSTATUS}"="CHANUNAVAIL"]?ext-local,vmu201,1) [pbx_config]
  1811.                     7. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1812.   '105' =>          hint: SIP/105&Custom:DND105,CustomPresence:105 [pbx_config]
  1813.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/105/ringtimer)}" > "0"]?${DB(AMPUSER/105/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1814.                     2. Macro(exten-vm,novm,105,0,0,0)             [pbx_config]
  1815.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1816.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1817.   '106' =>          hint: SIP/106&Custom:DND106,CustomPresence:106 [pbx_config]
  1818.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/106/ringtimer)}" > "0"]?${DB(AMPUSER/106/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1819.                     2. Macro(exten-vm,novm,106,0,0,0)             [pbx_config]
  1820.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1821.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1822.   '107' =>          hint: SIP/107&Custom:DND107,CustomPresence:107 [pbx_config]
  1823.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/107/ringtimer)}" > "0"]?${DB(AMPUSER/107/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1824.                     2. Macro(exten-vm,novm,107,0,0,0)             [pbx_config]
  1825.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1826.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1827.   '108' =>          hint: SIP/108&Custom:DND108,CustomPresence:108 [pbx_config]
  1828.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/108/ringtimer)}" > "0"]?${DB(AMPUSER/108/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1829.                     2. Macro(exten-vm,novm,108,0,0,0)             [pbx_config]
  1830.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1831.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1832.   '109' =>          hint: SIP/109&Custom:DND109,CustomPresence:109 [pbx_config]
  1833.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/109/ringtimer)}" > "0"]?${DB(AMPUSER/109/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1834.                     2. Macro(exten-vm,novm,109,0,0,0)             [pbx_config]
  1835.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1836.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1837.   '110' =>          hint: SIP/110&Custom:DND110,CustomPresence:110 [pbx_config]
  1838.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/110/ringtimer)}" > "0"]?${DB(AMPUSER/110/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1839.                     2. Macro(exten-vm,novm,110,0,0,0)             [pbx_config]
  1840.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1841.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1842.   '111' =>          hint: SIP/111&Custom:DND111,CustomPresence:111 [pbx_config]
  1843.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/111/ringtimer)}" > "0"]?${DB(AMPUSER/111/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1844.                     2. Macro(exten-vm,novm,111,0,0,0)             [pbx_config]
  1845.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1846.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1847.   '112' =>          hint: SIP/112&Custom:DND112,CustomPresence:112 [pbx_config]
  1848.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/112/ringtimer)}" > "0"]?${DB(AMPUSER/112/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1849.                     2. Macro(exten-vm,novm,112,0,0,0)             [pbx_config]
  1850.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1851.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1852.   '120' =>          hint: SIP/120&Custom:DND120,CustomPresence:120 [pbx_config]
  1853.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/120/ringtimer)}" > "0"]?${DB(AMPUSER/120/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1854.                     2. Macro(exten-vm,novm,120,0,0,0)             [pbx_config]
  1855.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1856.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1857.   '121' =>          hint: SIP/121&Custom:DND121,CustomPresence:121 [pbx_config]
  1858.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/121/ringtimer)}" > "0"]?${DB(AMPUSER/121/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1859.                     2. Macro(exten-vm,novm,121,0,0,0)             [pbx_config]
  1860.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1861.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1862.   '124' =>          hint: SIP/124&Custom:DND124,CustomPresence:124 [pbx_config]
  1863.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/124/ringtimer)}" > "0"]?${DB(AMPUSER/124/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1864.                     2. Macro(exten-vm,novm,124,0,0,0)             [pbx_config]
  1865.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1866.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1867.   '129' =>          hint: SIP/129&Custom:DND129,CustomPresence:129 [pbx_config]
  1868.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/129/ringtimer)}" > "0"]?${DB(AMPUSER/129/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1869.                     2. Macro(exten-vm,novm,129,0,0,0)             [pbx_config]
  1870.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1871.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1872.   '150' =>          hint: SIP/150&Custom:DND150,CustomPresence:150 [pbx_config]
  1873.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/150/ringtimer)}" > "0"]?${DB(AMPUSER/150/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1874.                     2. Macro(exten-vm,150,150,1,1,1)              [pbx_config]
  1875.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1876.                     4. GotoIf($["${DIALSTATUS}"="NOANSWER"]?ext-findmefollow,FM150,1) [pbx_config]
  1877.                     5. GotoIf($["${DIALSTATUS}"="BUSY"]?ext-findmefollow,FM150,1) [pbx_config]
  1878.                     6. GotoIf($["${DIALSTATUS}"="CHANUNAVAIL"]?ext-findmefollow,FM150,1) [pbx_config]
  1879.                     7. Macro(vm,150,${DIALSTATUS},${IVR_RETVM})   [pbx_config]
  1880.                     8. Goto(vmret,1)                              [pbx_config]
  1881.   '160' =>          hint: SIP/160&Custom:DND160,CustomPresence:160 [pbx_config]
  1882.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/160/ringtimer)}" > "0"]?${DB(AMPUSER/160/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1883.                     2. Macro(exten-vm,novm,160,0,0,0)             [pbx_config]
  1884.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1885.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1886.   '170' =>          hint: SIP/170&Custom:DND170,CustomPresence:170 [pbx_config]
  1887.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/170/ringtimer)}" > "0"]?${DB(AMPUSER/170/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1888.                     2. Macro(exten-vm,170,170,1,1,1)              [pbx_config]
  1889.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1890.                     4. GotoIf($["${DIALSTATUS}"="NOANSWER"]?ext-local,vmb201,1) [pbx_config]
  1891.                     5. GotoIf($["${DIALSTATUS}"="BUSY"]?ext-local,vmu201,1) [pbx_config]
  1892.                     6. GotoIf($["${DIALSTATUS}"="CHANUNAVAIL"]?ext-local,vmu201,1) [pbx_config]
  1893.                     7. Macro(vm,170,${DIALSTATUS},${IVR_RETVM})   [pbx_config]
  1894.                     8. Goto(vmret,1)                              [pbx_config]
  1895.   '200' =>          hint: SIP/200&Custom:DND200,CustomPresence:200 [pbx_config]
  1896.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/200/ringtimer)}" > "0"]?${DB(AMPUSER/200/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1897.                     2. Macro(exten-vm,200,200,0,0,0)              [pbx_config]
  1898.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1899.                     4. Macro(vm,200,${DIALSTATUS},${IVR_RETVM})   [pbx_config]
  1900.                     5. Goto(vmret,1)                              [pbx_config]
  1901.   '2001' =>         hint: SIP/2001&Custom:DND2001,CustomPresence:2001 [pbx_config]
  1902.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/2001/ringtimer)}" > "0"]?${DB(AMPUSER/2001/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1903.                     2. Macro(exten-vm,novm,2001,0,0,0)            [pbx_config]
  1904.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1905.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1906.   '2002' =>         hint: SIP/2002&Custom:DND2002,CustomPresence:2002 [pbx_config]
  1907.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/2002/ringtimer)}" > "0"]?${DB(AMPUSER/2002/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1908.                     2. Macro(exten-vm,novm,2002,0,0,0)            [pbx_config]
  1909.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1910.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1911.   '2003' =>         hint: SIP/2003&Custom:DND2003,CustomPresence:2003 [pbx_config]
  1912.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/2003/ringtimer)}" > "0"]?${DB(AMPUSER/2003/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1913.                     2. Macro(exten-vm,novm,2003,0,0,0)            [pbx_config]
  1914.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1915.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1916.   '201' =>          hint: SIP/201&Custom:DND201,CustomPresence:201 [pbx_config]
  1917.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/201/ringtimer)}" > "0"]?${DB(AMPUSER/201/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1918.                     2. Macro(exten-vm,201,201,0,0,0)              [pbx_config]
  1919.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1920.                     4. Macro(vm,201,${DIALSTATUS},${IVR_RETVM})   [pbx_config]
  1921.                     5. Goto(vmret,1)                              [pbx_config]
  1922.   '202' =>          hint: SIP/202&Custom:DND202,CustomPresence:202 [pbx_config]
  1923.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/202/ringtimer)}" > "0"]?${DB(AMPUSER/202/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1924.                     2. Macro(exten-vm,202,202,0,0,0)              [pbx_config]
  1925.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1926.                     4. Macro(vm,202,${DIALSTATUS},${IVR_RETVM})   [pbx_config]
  1927.                     5. Goto(vmret,1)                              [pbx_config]
  1928.   '203' =>          hint: SIP/203&Custom:DND203,CustomPresence:203 [pbx_config]
  1929.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/203/ringtimer)}" > "0"]?${DB(AMPUSER/203/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1930.                     2. Macro(exten-vm,203,203,0,0,0)              [pbx_config]
  1931.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1932.                     4. Macro(vm,203,${DIALSTATUS},${IVR_RETVM})   [pbx_config]
  1933.                     5. Goto(vmret,1)                              [pbx_config]
  1934.   '204' =>          hint: SIP/204&Custom:DND204,CustomPresence:204 [pbx_config]
  1935.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/204/ringtimer)}" > "0"]?${DB(AMPUSER/204/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1936.                     2. Macro(exten-vm,204,204,0,0,0)              [pbx_config]
  1937.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1938.                     4. Macro(vm,204,${DIALSTATUS},${IVR_RETVM})   [pbx_config]
  1939.                     5. Goto(vmret,1)                              [pbx_config]
  1940.   '300' =>          hint: SIP/300&Custom:DND300,CustomPresence:300 [pbx_config]
  1941.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/300/ringtimer)}" > "0"]?${DB(AMPUSER/300/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1942.                     2. Macro(exten-vm,novm,300,0,0,0)             [pbx_config]
  1943.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1944.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1945.   '301' =>          hint: SIP/301&Custom:DND301,CustomPresence:301 [pbx_config]
  1946.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/301/ringtimer)}" > "0"]?${DB(AMPUSER/301/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1947.                     2. Macro(exten-vm,novm,301,0,0,0)             [pbx_config]
  1948.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1949.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1950.   '302' =>          hint: SIP/302&Custom:DND302,CustomPresence:302 [pbx_config]
  1951.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/302/ringtimer)}" > "0"]?${DB(AMPUSER/302/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1952.                     2. Macro(exten-vm,novm,302,0,0,0)             [pbx_config]
  1953.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1954.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1955.   '303' =>          hint: SIP/303&Custom:DND303,CustomPresence:303 [pbx_config]
  1956.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/303/ringtimer)}" > "0"]?${DB(AMPUSER/303/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1957.                     2. Macro(exten-vm,novm,303,0,0,0)             [pbx_config]
  1958.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1959.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1960.   '304' =>          hint: SIP/304&Custom:DND304,CustomPresence:304 [pbx_config]
  1961.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/304/ringtimer)}" > "0"]?${DB(AMPUSER/304/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1962.                     2. Macro(exten-vm,novm,304,0,0,0)             [pbx_config]
  1963.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1964.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1965.   '305' =>          hint: SIP/305&Custom:DND305,CustomPresence:305 [pbx_config]
  1966.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/305/ringtimer)}" > "0"]?${DB(AMPUSER/305/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1967.                     2. Macro(exten-vm,novm,305,0,0,0)             [pbx_config]
  1968.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1969.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1970.   '307' =>          hint: SIP/307&Custom:DND307,CustomPresence:307 [pbx_config]
  1971.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/307/ringtimer)}" > "0"]?${DB(AMPUSER/307/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1972.                     2. Macro(exten-vm,novm,307,0,0,0)             [pbx_config]
  1973.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1974.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1975.   '308' =>          hint: SIP/308&Custom:DND308,CustomPresence:308 [pbx_config]
  1976.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/308/ringtimer)}" > "0"]?${DB(AMPUSER/308/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1977.                     2. Macro(exten-vm,novm,308,0,0,0)             [pbx_config]
  1978.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1979.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1980.   '320' =>          hint: SIP/320&Custom:DND320,CustomPresence:320 [pbx_config]
  1981.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/320/ringtimer)}" > "0"]?${DB(AMPUSER/320/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1982.                     2. Macro(exten-vm,novm,320,0,0,0)             [pbx_config]
  1983.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1984.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1985.   '321' =>          hint: SIP/321&Custom:DND321,CustomPresence:321 [pbx_config]
  1986.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/321/ringtimer)}" > "0"]?${DB(AMPUSER/321/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1987.                     2. Macro(exten-vm,novm,321,0,0,0)             [pbx_config]
  1988.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1989.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  1990.   '4000' =>         hint: SIP/4000&Custom:DND4000,CustomPresence:4000 [pbx_config]
  1991.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/4000/ringtimer)}" > "0"]?${DB(AMPUSER/4000/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1992.                     2. Macro(exten-vm,4000,4000,0,0,0)            [pbx_config]
  1993.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  1994.                     4. Macro(vm,4000,${DIALSTATUS},${IVR_RETVM})  [pbx_config]
  1995.                     5. Goto(vmret,1)                              [pbx_config]
  1996.   '4001' =>         hint: SIP/4001&Custom:DND4001,CustomPresence:4001 [pbx_config]
  1997.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/4001/ringtimer)}" > "0"]?${DB(AMPUSER/4001/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  1998.                     2. Macro(exten-vm,4001,4001,0,0,0)            [pbx_config]
  1999.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  2000.                     4. Macro(vm,4001,${DIALSTATUS},${IVR_RETVM})  [pbx_config]
  2001.                     5. Goto(vmret,1)                              [pbx_config]
  2002.   '4002' =>         hint: SIP/4002&Custom:DND4002,CustomPresence:4002 [pbx_config]
  2003.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/4002/ringtimer)}" > "0"]?${DB(AMPUSER/4002/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  2004.                     2. Macro(exten-vm,4002,4002,0,0,0)            [pbx_config]
  2005.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  2006.                     4. Macro(vm,4002,${DIALSTATUS},${IVR_RETVM})  [pbx_config]
  2007.                     5. Goto(vmret,1)                              [pbx_config]
  2008.   '4003' =>         hint: SIP/4003&Custom:DND4003,CustomPresence:4003 [pbx_config]
  2009.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/4003/ringtimer)}" > "0"]?${DB(AMPUSER/4003/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  2010.                     2. Macro(exten-vm,4003,4003,0,0,0)            [pbx_config]
  2011.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  2012.                     4. Macro(vm,4003,${DIALSTATUS},${IVR_RETVM})  [pbx_config]
  2013.                     5. Goto(vmret,1)                              [pbx_config]
  2014.   '4004' =>         hint: SIP/4004&Custom:DND4004,CustomPresence:4004 [pbx_config]
  2015.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/4004/ringtimer)}" > "0"]?${DB(AMPUSER/4004/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  2016.                     2. Macro(exten-vm,4004,4004,0,0,0)            [pbx_config]
  2017.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  2018.                     4. Macro(vm,4004,${DIALSTATUS},${IVR_RETVM})  [pbx_config]
  2019.                     5. Goto(vmret,1)                              [pbx_config]
  2020.   '4005' =>         hint: SIP/4005&Custom:DND4005,CustomPresence:4005 [pbx_config]
  2021.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/4005/ringtimer)}" > "0"]?${DB(AMPUSER/4005/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  2022.                     2. Macro(exten-vm,4005,4005,0,0,0)            [pbx_config]
  2023.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  2024.                     4. Macro(vm,4005,${DIALSTATUS},${IVR_RETVM})  [pbx_config]
  2025.                     5. Goto(vmret,1)                              [pbx_config]
  2026.   '4006' =>         hint: SIP/4006&Custom:DND4006,CustomPresence:4006 [pbx_config]
  2027.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/4006/ringtimer)}" > "0"]?${DB(AMPUSER/4006/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  2028.                     2. Macro(exten-vm,4006,4006,0,0,0)            [pbx_config]
  2029.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  2030.                     4. Macro(vm,4006,${DIALSTATUS},${IVR_RETVM})  [pbx_config]
  2031.                     5. Goto(vmret,1)                              [pbx_config]
  2032.   '4007' =>         hint: SIP/4007&Custom:DND4007,CustomPresence:4007 [pbx_config]
  2033.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/4007/ringtimer)}" > "0"]?${DB(AMPUSER/4007/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  2034.                     2. Macro(exten-vm,4007,4007,0,0,0)            [pbx_config]
  2035.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  2036.                     4. Macro(vm,4007,${DIALSTATUS},${IVR_RETVM})  [pbx_config]
  2037.                     5. Goto(vmret,1)                              [pbx_config]
  2038.   '4008' =>         hint: SIP/4008&Custom:DND4008,CustomPresence:4008 [pbx_config]
  2039.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/4008/ringtimer)}" > "0"]?${DB(AMPUSER/4008/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  2040.                     2. Macro(exten-vm,4008,4008,0,0,0)            [pbx_config]
  2041.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  2042.                     4. Macro(vm,4008,${DIALSTATUS},${IVR_RETVM})  [pbx_config]
  2043.                     5. Goto(vmret,1)                              [pbx_config]
  2044.   '4009' =>         hint: SIP/4009&Custom:DND4009,CustomPresence:4009 [pbx_config]
  2045.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/4009/ringtimer)}" > "0"]?${DB(AMPUSER/4009/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  2046.                     2. Macro(exten-vm,4009,4009,0,0,0)            [pbx_config]
  2047.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  2048.                     4. Macro(vm,4009,${DIALSTATUS},${IVR_RETVM})  [pbx_config]
  2049.                     5. Goto(vmret,1)                              [pbx_config]
  2050.   '4010' =>         hint: SIP/4010&Custom:DND4010,CustomPresence:4010 [pbx_config]
  2051.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/4010/ringtimer)}" > "0"]?${DB(AMPUSER/4010/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  2052.                     2. Macro(exten-vm,4010,4010,0,0,0)            [pbx_config]
  2053.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  2054.                     4. Macro(vm,4010,${DIALSTATUS},${IVR_RETVM})  [pbx_config]
  2055.                     5. Goto(vmret,1)                              [pbx_config]
  2056.   '4070' =>         hint: SIP/4070&Custom:DND4070,CustomPresence:4070 [pbx_config]
  2057.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/4070/ringtimer)}" > "0"]?${DB(AMPUSER/4070/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  2058.                     2. Macro(exten-vm,4070,4070,1,1,1)            [pbx_config]
  2059.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  2060.                     4. GotoIf($["${DIALSTATUS}"="NOANSWER"]?ext-local,vmb203,1) [pbx_config]
  2061.                     5. GotoIf($["${DIALSTATUS}"="BUSY"]?ext-local,vmu203,1) [pbx_config]
  2062.                     6. GotoIf($["${DIALSTATUS}"="CHANUNAVAIL"]?ext-local,vmu203,1) [pbx_config]
  2063.                     7. Macro(vm,4070,${DIALSTATUS},${IVR_RETVM})  [pbx_config]
  2064.                     8. Goto(vmret,1)                              [pbx_config]
  2065.   '4100' =>         hint: SIP/4100&Custom:DND4100,CustomPresence:4100 [pbx_config]
  2066.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/4100/ringtimer)}" > "0"]?${DB(AMPUSER/4100/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  2067.                     2. Macro(exten-vm,novm,4100,0,0,0)            [pbx_config]
  2068.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  2069.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  2070.   '9000' =>         hint: &Custom:DND9000,CustomPresence:9000     [pbx_config]
  2071.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/9000/ringtimer)}" > "0"]?${DB(AMPUSER/9000/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  2072.                     2. Macro(exten-vm,9000,9000,0,0,0)            [pbx_config]
  2073.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  2074.                     4. Macro(vm,9000,${DIALSTATUS},${IVR_RETVM})  [pbx_config]
  2075.                     5. Goto(vmret,1)                              [pbx_config]
  2076.                     6. Goto(from-internal,9000,1)                 [pbx_config]
  2077.   '999' =>          hint: &Custom:DND999,CustomPresence:999       [pbx_config]
  2078.                     1. Set(__RINGTIMER=${IF($["${DB(AMPUSER/999/ringtimer)}" > "0"]?${DB(AMPUSER/999/ringtimer)}:${RINGTIMER_DEFAULT})}) [pbx_config]
  2079.                     2. Macro(exten-vm,novm,999,0,0,0)             [pbx_config]
  2080.      [dest]         3. Set(__PICKUPMARK=)                         [pbx_config]
  2081.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  2082.   'h' =>            1. Macro(hangupcall,)                         [pbx_config]
  2083.   'vmb103' =>       1. Macro(vm,103,BUSY,${IVR_RETVM})            [pbx_config]
  2084.                     2. Goto(vmret,1)                              [pbx_config]
  2085.   'vmb150' =>       1. Macro(vm,150,BUSY,${IVR_RETVM})            [pbx_config]
  2086.                     2. Goto(vmret,1)                              [pbx_config]
  2087.   'vmb170' =>       1. Macro(vm,170,BUSY,${IVR_RETVM})            [pbx_config]
  2088.                     2. Goto(vmret,1)                              [pbx_config]
  2089.   'vmb200' =>       1. Macro(vm,200,BUSY,${IVR_RETVM})            [pbx_config]
  2090.                     2. Goto(vmret,1)                              [pbx_config]
  2091.   'vmb201' =>       1. Macro(vm,201,BUSY,${IVR_RETVM})            [pbx_config]
  2092.                     2. Goto(vmret,1)                              [pbx_config]
  2093.   'vmb202' =>       1. Macro(vm,202,BUSY,${IVR_RETVM})            [pbx_config]
  2094.                     2. Goto(vmret,1)                              [pbx_config]
  2095.   'vmb203' =>       1. Macro(vm,203,BUSY,${IVR_RETVM})            [pbx_config]
  2096.                     2. Goto(vmret,1)                              [pbx_config]
  2097.   'vmb204' =>       1. Macro(vm,204,BUSY,${IVR_RETVM})            [pbx_config]
  2098.                     2. Goto(vmret,1)                              [pbx_config]
  2099.   'vmb4000' =>      1. Macro(vm,4000,BUSY,${IVR_RETVM})           [pbx_config]
  2100.                     2. Goto(vmret,1)                              [pbx_config]
  2101.   'vmb4001' =>      1. Macro(vm,4001,BUSY,${IVR_RETVM})           [pbx_config]
  2102.                     2. Goto(vmret,1)                              [pbx_config]
  2103.   'vmb4002' =>      1. Macro(vm,4002,BUSY,${IVR_RETVM})           [pbx_config]
  2104.                     2. Goto(vmret,1)                              [pbx_config]
  2105.   'vmb4003' =>      1. Macro(vm,4003,BUSY,${IVR_RETVM})           [pbx_config]
  2106.                     2. Goto(vmret,1)                              [pbx_config]
  2107.   'vmb4004' =>      1. Macro(vm,4004,BUSY,${IVR_RETVM})           [pbx_config]
  2108.                     2. Goto(vmret,1)                              [pbx_config]
  2109.   'vmb4005' =>      1. Macro(vm,4005,BUSY,${IVR_RETVM})           [pbx_config]
  2110.                     2. Goto(vmret,1)                              [pbx_config]
  2111.   'vmb4006' =>      1. Macro(vm,4006,BUSY,${IVR_RETVM})           [pbx_config]
  2112.                     2. Goto(vmret,1)                              [pbx_config]
  2113.   'vmb4007' =>      1. Macro(vm,4007,BUSY,${IVR_RETVM})           [pbx_config]
  2114.                     2. Goto(vmret,1)                              [pbx_config]
  2115.   'vmb4008' =>      1. Macro(vm,4008,BUSY,${IVR_RETVM})           [pbx_config]
  2116.                     2. Goto(vmret,1)                              [pbx_config]
  2117.   'vmb4009' =>      1. Macro(vm,4009,BUSY,${IVR_RETVM})           [pbx_config]
  2118.                     2. Goto(vmret,1)                              [pbx_config]
  2119.   'vmb4010' =>      1. Macro(vm,4010,BUSY,${IVR_RETVM})           [pbx_config]
  2120.                     2. Goto(vmret,1)                              [pbx_config]
  2121.   'vmb4070' =>      1. Macro(vm,4070,BUSY,${IVR_RETVM})           [pbx_config]
  2122.                     2. Goto(vmret,1)                              [pbx_config]
  2123.   'vmb9000' =>      1. Macro(vm,9000,BUSY,${IVR_RETVM})           [pbx_config]
  2124.                     2. Goto(vmret,1)                              [pbx_config]
  2125.   'vmi103' =>       1. Macro(vm,103,INSTRUCT,${IVR_RETVM})        [pbx_config]
  2126.                     2. Goto(vmret,1)                              [pbx_config]
  2127.   'vmi150' =>       1. Macro(vm,150,INSTRUCT,${IVR_RETVM})        [pbx_config]
  2128.                     2. Goto(vmret,1)                              [pbx_config]
  2129.   'vmi170' =>       1. Macro(vm,170,INSTRUCT,${IVR_RETVM})        [pbx_config]
  2130.                     2. Goto(vmret,1)                              [pbx_config]
  2131.   'vmi200' =>       1. Macro(vm,200,INSTRUCT,${IVR_RETVM})        [pbx_config]
  2132.                     2. Goto(vmret,1)                              [pbx_config]
  2133.   'vmi201' =>       1. Macro(vm,201,INSTRUCT,${IVR_RETVM})        [pbx_config]
  2134.                     2. Goto(vmret,1)                              [pbx_config]
  2135.   'vmi202' =>       1. Macro(vm,202,INSTRUCT,${IVR_RETVM})        [pbx_config]
  2136.                     2. Goto(vmret,1)                              [pbx_config]
  2137.   'vmi203' =>       1. Macro(vm,203,INSTRUCT,${IVR_RETVM})        [pbx_config]
  2138.                     2. Goto(vmret,1)                              [pbx_config]
  2139.   'vmi204' =>       1. Macro(vm,204,INSTRUCT,${IVR_RETVM})        [pbx_config]
  2140.                     2. Goto(vmret,1)                              [pbx_config]
  2141.   'vmi4000' =>      1. Macro(vm,4000,INSTRUCT,${IVR_RETVM})       [pbx_config]
  2142.                     2. Goto(vmret,1)                              [pbx_config]
  2143.   'vmi4001' =>      1. Macro(vm,4001,INSTRUCT,${IVR_RETVM})       [pbx_config]
  2144.                     2. Goto(vmret,1)                              [pbx_config]
  2145.   'vmi4002' =>      1. Macro(vm,4002,INSTRUCT,${IVR_RETVM})       [pbx_config]
  2146.                     2. Goto(vmret,1)                              [pbx_config]
  2147.   'vmi4003' =>      1. Macro(vm,4003,INSTRUCT,${IVR_RETVM})       [pbx_config]
  2148.                     2. Goto(vmret,1)                              [pbx_config]
  2149.   'vmi4004' =>      1. Macro(vm,4004,INSTRUCT,${IVR_RETVM})       [pbx_config]
  2150.                     2. Goto(vmret,1)                              [pbx_config]
  2151.   'vmi4005' =>      1. Macro(vm,4005,INSTRUCT,${IVR_RETVM})       [pbx_config]
  2152.                     2. Goto(vmret,1)                              [pbx_config]
  2153.   'vmi4006' =>      1. Macro(vm,4006,INSTRUCT,${IVR_RETVM})       [pbx_config]
  2154.                     2. Goto(vmret,1)                              [pbx_config]
  2155.   'vmi4007' =>      1. Macro(vm,4007,INSTRUCT,${IVR_RETVM})       [pbx_config]
  2156.                     2. Goto(vmret,1)                              [pbx_config]
  2157.   'vmi4008' =>      1. Macro(vm,4008,INSTRUCT,${IVR_RETVM})       [pbx_config]
  2158.                     2. Goto(vmret,1)                              [pbx_config]
  2159.   'vmi4009' =>      1. Macro(vm,4009,INSTRUCT,${IVR_RETVM})       [pbx_config]
  2160.                     2. Goto(vmret,1)                              [pbx_config]
  2161.   'vmi4010' =>      1. Macro(vm,4010,INSTRUCT,${IVR_RETVM})       [pbx_config]
  2162.                     2. Goto(vmret,1)                              [pbx_config]
  2163.   'vmi4070' =>      1. Macro(vm,4070,INSTRUCT,${IVR_RETVM})       [pbx_config]
  2164.                     2. Goto(vmret,1)                              [pbx_config]
  2165.   'vmi9000' =>      1. Macro(vm,9000,INSTRUCT,${IVR_RETVM})       [pbx_config]
  2166.                     2. Goto(vmret,1)                              [pbx_config]
  2167.   'vmret' =>        1. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?playret) [pbx_config]
  2168.                     2. Hangup()                                   [pbx_config]
  2169.      [playret]      3. Playback(exited-vm-will-be-transfered&silence/1) [pbx_config]
  2170.                     4. Goto(${IVR_CONTEXT},return,1)              [pbx_config]
  2171.   'vms103' =>       1. Macro(vm,103,NOMESSAGE,${IVR_RETVM})       [pbx_config]
  2172.                     2. Goto(vmret,1)                              [pbx_config]
  2173.   'vms150' =>       1. Macro(vm,150,NOMESSAGE,${IVR_RETVM})       [pbx_config]
  2174.                     2. Goto(vmret,1)                              [pbx_config]
  2175.   'vms170' =>       1. Macro(vm,170,NOMESSAGE,${IVR_RETVM})       [pbx_config]
  2176.                     2. Goto(vmret,1)                              [pbx_config]
  2177.   'vms200' =>       1. Macro(vm,200,NOMESSAGE,${IVR_RETVM})       [pbx_config]
  2178.                     2. Goto(vmret,1)                              [pbx_config]
  2179.   'vms201' =>       1. Macro(vm,201,NOMESSAGE,${IVR_RETVM})       [pbx_config]
  2180.                     2. Goto(vmret,1)                              [pbx_config]
  2181.   'vms202' =>       1. Macro(vm,202,NOMESSAGE,${IVR_RETVM})       [pbx_config]
  2182.                     2. Goto(vmret,1)                              [pbx_config]
  2183.   'vms203' =>       1. Macro(vm,203,NOMESSAGE,${IVR_RETVM})       [pbx_config]
  2184.                     2. Goto(vmret,1)                              [pbx_config]
  2185.   'vms204' =>       1. Macro(vm,204,NOMESSAGE,${IVR_RETVM})       [pbx_config]
  2186.                     2. Goto(vmret,1)                              [pbx_config]
  2187.   'vms4000' =>      1. Macro(vm,4000,NOMESSAGE,${IVR_RETVM})      [pbx_config]
  2188.                     2. Goto(vmret,1)                              [pbx_config]
  2189.   'vms4001' =>      1. Macro(vm,4001,NOMESSAGE,${IVR_RETVM})      [pbx_config]
  2190.                     2. Goto(vmret,1)                              [pbx_config]
  2191.   'vms4002' =>      1. Macro(vm,4002,NOMESSAGE,${IVR_RETVM})      [pbx_config]
  2192.                     2. Goto(vmret,1)                              [pbx_config]
  2193.   'vms4003' =>      1. Macro(vm,4003,NOMESSAGE,${IVR_RETVM})      [pbx_config]
  2194.                     2. Goto(vmret,1)                              [pbx_config]
  2195.   'vms4004' =>      1. Macro(vm,4004,NOMESSAGE,${IVR_RETVM})      [pbx_config]
  2196.                     2. Goto(vmret,1)                              [pbx_config]
  2197.   'vms4005' =>      1. Macro(vm,4005,NOMESSAGE,${IVR_RETVM})      [pbx_config]
  2198.                     2. Goto(vmret,1)                              [pbx_config]
  2199.   'vms4006' =>      1. Macro(vm,4006,NOMESSAGE,${IVR_RETVM})      [pbx_config]
  2200.                     2. Goto(vmret,1)                              [pbx_config]
  2201.   'vms4007' =>      1. Macro(vm,4007,NOMESSAGE,${IVR_RETVM})      [pbx_config]
  2202.                     2. Goto(vmret,1)                              [pbx_config]
  2203.   'vms4008' =>      1. Macro(vm,4008,NOMESSAGE,${IVR_RETVM})      [pbx_config]
  2204.                     2. Goto(vmret,1)                              [pbx_config]
  2205.   'vms4009' =>      1. Macro(vm,4009,NOMESSAGE,${IVR_RETVM})      [pbx_config]
  2206.                     2. Goto(vmret,1)                              [pbx_config]
  2207.   'vms4010' =>      1. Macro(vm,4010,NOMESSAGE,${IVR_RETVM})      [pbx_config]
  2208.                     2. Goto(vmret,1)                              [pbx_config]
  2209.   'vms4070' =>      1. Macro(vm,4070,NOMESSAGE,${IVR_RETVM})      [pbx_config]
  2210.                     2. Goto(vmret,1)                              [pbx_config]
  2211.   'vms9000' =>      1. Macro(vm,9000,NOMESSAGE,${IVR_RETVM})      [pbx_config]
  2212.                     2. Goto(vmret,1)                              [pbx_config]
  2213.   'vmu103' =>       1. Macro(vm,103,NOANSWER,${IVR_RETVM})        [pbx_config]
  2214.                     2. Goto(vmret,1)                              [pbx_config]
  2215.   'vmu150' =>       1. Macro(vm,150,NOANSWER,${IVR_RETVM})        [pbx_config]
  2216.                     2. Goto(vmret,1)                              [pbx_config]
  2217.   'vmu170' =>       1. Macro(vm,170,NOANSWER,${IVR_RETVM})        [pbx_config]
  2218.                     2. Goto(vmret,1)                              [pbx_config]
  2219.   'vmu200' =>       1. Macro(vm,200,NOANSWER,${IVR_RETVM})        [pbx_config]
  2220.                     2. Goto(vmret,1)                              [pbx_config]
  2221.   'vmu201' =>       1. Macro(vm,201,NOANSWER,${IVR_RETVM})        [pbx_config]
  2222.                     2. Goto(vmret,1)                              [pbx_config]
  2223.   'vmu202' =>       1. Macro(vm,202,NOANSWER,${IVR_RETVM})        [pbx_config]
  2224.                     2. Goto(vmret,1)                              [pbx_config]
  2225.   'vmu203' =>       1. Macro(vm,203,NOANSWER,${IVR_RETVM})        [pbx_config]
  2226.                     2. Goto(vmret,1)                              [pbx_config]
  2227.   'vmu204' =>       1. Macro(vm,204,NOANSWER,${IVR_RETVM})        [pbx_config]
  2228.                     2. Goto(vmret,1)                              [pbx_config]
  2229.   'vmu4000' =>      1. Macro(vm,4000,NOANSWER,${IVR_RETVM})       [pbx_config]
  2230.                     2. Goto(vmret,1)                              [pbx_config]
  2231.   'vmu4001' =>      1. Macro(vm,4001,NOANSWER,${IVR_RETVM})       [pbx_config]
  2232.                     2. Goto(vmret,1)                              [pbx_config]
  2233.   'vmu4002' =>      1. Macro(vm,4002,NOANSWER,${IVR_RETVM})       [pbx_config]
  2234.                     2. Goto(vmret,1)                              [pbx_config]
  2235.   'vmu4003' =>      1. Macro(vm,4003,NOANSWER,${IVR_RETVM})       [pbx_config]
  2236.                     2. Goto(vmret,1)                              [pbx_config]
  2237.   'vmu4004' =>      1. Macro(vm,4004,NOANSWER,${IVR_RETVM})       [pbx_config]
  2238.                     2. Goto(vmret,1)                              [pbx_config]
  2239.   'vmu4005' =>      1. Macro(vm,4005,NOANSWER,${IVR_RETVM})       [pbx_config]
  2240.                     2. Goto(vmret,1)                              [pbx_config]
  2241.   'vmu4006' =>      1. Macro(vm,4006,NOANSWER,${IVR_RETVM})       [pbx_config]
  2242.                     2. Goto(vmret,1)                              [pbx_config]
  2243.   'vmu4007' =>      1. Macro(vm,4007,NOANSWER,${IVR_RETVM})       [pbx_config]
  2244.                     2. Goto(vmret,1)                              [pbx_config]
  2245.   'vmu4008' =>      1. Macro(vm,4008,NOANSWER,${IVR_RETVM})       [pbx_config]
  2246.                     2. Goto(vmret,1)                              [pbx_config]
  2247.   'vmu4009' =>      1. Macro(vm,4009,NOANSWER,${IVR_RETVM})       [pbx_config]
  2248.                     2. Goto(vmret,1)                              [pbx_config]
  2249.   'vmu4010' =>      1. Macro(vm,4010,NOANSWER,${IVR_RETVM})       [pbx_config]
  2250.                     2. Goto(vmret,1)                              [pbx_config]
  2251.   'vmu4070' =>      1. Macro(vm,4070,NOANSWER,${IVR_RETVM})       [pbx_config]
  2252.                     2. Goto(vmret,1)                              [pbx_config]
  2253.   'vmu9000' =>      1. Macro(vm,9000,NOANSWER,${IVR_RETVM})       [pbx_config]
  2254.                     2. Goto(vmret,1)                              [pbx_config]
  2255.   '_*80X.' =>       hint: ${DB(AMPUSER/${EXTEN:3}/hint)}          [pbx_config]
  2256.   Include =>        'ext-local-custom'                            [pbx_config]
  2257.  
  2258. [ Context 'app-dialvm' created by 'pbx_config' ]
  2259.   '*98' =>          1. Macro(user-callerid,)                      [pbx_config]
  2260.                     2. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  2261.                     3. Set(CONNECTEDLINE(name,i)=Dial Voicemail)  [pbx_config]
  2262.                     4. Set(CONNECTEDLINE(num,i)=${EXTEN})         [pbx_config]
  2263.                     5. Answer()                                   [pbx_config]
  2264.      [start]        6. Wait(1)                                    [pbx_config]
  2265.                     7. Noop(app-dialvm: Asking for mailbox)       [pbx_config]
  2266.                     8. Read(MAILBOX,vm-login,,,3,2)               [pbx_config]
  2267.      [check]        9. GotoIf($["${MAILBOX}" = ""]?hangup)        [pbx_config]
  2268.                     10. Noop(app-dialvm: Got Mailbox ${MAILBOX})  [pbx_config]
  2269.                     11. Macro(get-vmcontext,${MAILBOX})           [pbx_config]
  2270.                     12. Set(VMBOXEXISTSSTATUS=${IF(${VM_INFO(${MAILBOX}@${VMCONTEXT},exists)}?SUCCESS:FAILED)}) [pbx_config]
  2271.                     13. GotoIf($["${VMBOXEXISTSSTATUS}" = "SUCCESS"]?good:bad) [pbx_config]
  2272.                     14. Macro(hangupcall,)                        [pbx_config]
  2273.      [good]         15. Noop(app-dialvm: Good mailbox ${MAILBOX}@${VMCONTEXT}) [pbx_config]
  2274.                     16. VoiceMailMain(${MAILBOX}@${VMCONTEXT})    [pbx_config]
  2275.                     17. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?playret) [pbx_config]
  2276.                     18. Macro(hangupcall,)                        [pbx_config]
  2277.      [bad]          19. Noop(app-dialvm: BAD mailbox ${MAILBOX}@${VMCONTEXT}) [pbx_config]
  2278.                     20. Wait(1)                                   [pbx_config]
  2279.                     21. Noop(app-dialvm: Asking for password so people can't probe for existence of a mailbox) [pbx_config]
  2280.                     22. Read(FAKEPW,vm-password,,,3,2)            [pbx_config]
  2281.                     23. Noop(app-dialvm: Asking for mailbox again) [pbx_config]
  2282.                     24. Read(MAILBOX,vm-incorrect-mailbox,,,3,2)  [pbx_config]
  2283.                     25. Goto(check)                               [pbx_config]
  2284.                     26. Macro(hangupcall,)                        [pbx_config]
  2285.      [hangup]       27. Playback(vm-incorrect&vm-goodbye)         [pbx_config]
  2286.                     28. Macro(hangupcall,)                        [pbx_config]
  2287.      [playret]      29. Playback(beep&you-will-be-transfered-menu&silence/1) [pbx_config]
  2288.                     30. Goto(${IVR_CONTEXT},return,1)             [pbx_config]
  2289.   '_*98.' =>        1. Set(CONNECTEDLINE(name-charset,i)=utf8)    [pbx_config]
  2290.                     2. Set(CONNECTEDLINE(name,i)=Dial Voicemail)  [pbx_config]
  2291.                     3. Set(CONNECTEDLINE(num,i)=${EXTEN:3})       [pbx_config]
  2292.                     4. Answer()                                   [pbx_config]
  2293.                     5. Wait(1)                                    [pbx_config]
  2294.                     6. Macro(get-vmcontext,${EXTEN:3})            [pbx_config]
  2295.                     7. VoiceMailMain(${EXTEN:3}@${VMCONTEXT})     [pbx_config]
  2296.                     8. GotoIf($["${IVR_RETVM}" = "RETURN" & "${IVR_CONTEXT}" != ""]?${IVR_CONTEXT},return,1) [pbx_config]
  2297.                     9. Macro(hangupcall,)                         [pbx_config]
  2298.   Include =>        'app-dialvm-custom'                           [pbx_config]
  2299.  
  2300. [ Context 'vm-callme' created by 'pbx_config' ]
  2301.   '#' =>            1. Playback(vm-goodbye)                       [pbx_config]
  2302.                     2. Hangup()                                   [pbx_config]
  2303.   '*' =>            1. Macro(get-vmcontext,${MBOX})               [pbx_config]
  2304.                     2. VoiceMailMain(${MBOX}@${VMCONTEXT},s)      [pbx_config]
  2305.   '5' =>            1. Goto(s,repeat)                             [pbx_config]
  2306.   'h' =>            1. Hangup()                                   [pbx_config]
  2307.   'i' =>            1. Playback(pm-invalid-option)                [pbx_config]
  2308.                     2. Goto(s,repeat)                             [pbx_config]
  2309.   's' =>            1. Answer()                                   [pbx_config]
  2310.                     2. Wait(1)                                    [pbx_config]
  2311.      [repeat]       3. Background(${MSG}&silence/2&vm-repeat&vm-starmain) [pbx_config]
  2312.                     4. WaitExten(15,)                             [pbx_config]
  2313.   't' =>            1. Playback(vm-goodbye)                       [pbx_config]
  2314.                     2. Hangup()                                   [pbx_config]
  2315.   Include =>        'vm-callme-custom'                            [pbx_config]
  2316.  
  2317. [ Context 'ext-tts' created by 'pbx_config' ]
  2318.   '2' =>            1. Noop(TTS: ttsflite)                        [pbx_config]
  2319.                     2. Noop(Using: flite)                         [pbx_config]
  2320.                     3. Answer()                                   [pbx_config]
  2321.                     4. AGI(propolys-tts.agi,"suck my balls",flite,/usr/bin/flite) [pbx_config]
  2322.                     5. Goto(from-did-direct,103,1)                [pbx_config]
  2323.   '3' =>            1. Noop(TTS: TTSTest1)                        [pbx_config]
  2324.                     2. Noop(Using: flite)                         [pbx_config]
  2325.                     3. Answer()                                   [pbx_config]
  2326.                     4. AGI(propolys-tts.agi,"",flite,/usr/bin/flite) [pbx_config]
  2327.                     5. Goto(ext-queues,501,1)                     [pbx_config]
  2328.   Include =>        'ext-tts-custom'                              [pbx_config]
  2329.  
  2330. [ Context 'macro-toggle-tc' created by 'pbx_config' ]
  2331.   'en' =>           1. Playback(beep&silence/1&time&${IF($["${TCSTATE}" = "true"]?de-activated:activated)}) [pbx_config]
  2332.   'ja' =>           1. Playback(beep&silence/1&time-change&${IF($["${TCSTATE}" = "true"]?de-activated:activated)}) [pbx_config]
  2333.   'lang-playback' => 1. GosubIf($[${DIALPLAN_EXISTS(macro-toggle-tc,${CHANNEL(language)})}]?macro-toggle-tc,${CHANNEL(language)},${ARG1}():macro-toggle-tc,en,${ARG1}()) [pbx_config]
  2334.                     2. Return()                                   [pbx_config]
  2335.   's' =>            1. GotoIf($[${ARG2} > 0]?hasauth:toggle)      [pbx_config]
  2336.      [hasauth]      2. Authenticate(${ARG2},)                     [pbx_config]
  2337.      [toggle]       3. Set(INDEXES=${ARG1})                       [pbx_config]
  2338.                     4. Set(TCRETURN=RETURN)                       [pbx_config]
  2339.                     5. Set(TCSTATE=false)                         [pbx_config]
  2340.                     6. Set(TCINUSE=${DB(TC/${ARG1}/INUSESTATE)})  [pbx_config]
  2341.                     7. Set(TCNOTINUSE=${DB(TC/${ARG1}/NOT_INUSESTATE)}) [pbx_config]
  2342.                     8. Set(LOOPCNT=${FIELDQTY(INDEXES,&)})        [pbx_config]
  2343.                     9. Set(ITER=1)                                [pbx_config]
  2344.      [begin1]       10. Set(INDEX=${CUT(INDEXES,&,${ITER})})      [pbx_config]
  2345.                     11. Gosub(timeconditions,${INDEX},1())        [pbx_config]
  2346.                     12. Set(TCSTATE_${INDEX}=${TCSTATE})          [pbx_config]
  2347.                     13. ExecIf($["${TCOVERRIDE}" = "true"]?Set(OVERRIDE=true)) [pbx_config]
  2348.      [end1]         14. Set(ITER=$[${ITER} + 1])                  [pbx_config]
  2349.                     15. GotoIf($[${ITER} <= ${LOOPCNT}]?begin1)   [pbx_config]
  2350.                     16. Set(LOOPCNT=${FIELDQTY(INDEXES,&)})       [pbx_config]
  2351.                     17. Set(ITER=1)                               [pbx_config]
  2352.      [begin2]       18. Set(INDEX=${CUT(INDEXES,&,${ITER})})      [pbx_config]
  2353.                     19. Set(DB(TC/${INDEX})=${IF($["${OVERRIDE}" = "true"]?:${IF($["${TCSTATE_${INDEX}}" == "true"]?false:true)})}) [pbx_config]
  2354.                     20. Gosub(timeconditions,${INDEX},1())        [pbx_config]
  2355.      [end2]         21. Set(ITER=$[${ITER} + 1])                  [pbx_config]
  2356.                     22. GotoIf($[${ITER} <= ${LOOPCNT}]?begin2)   [pbx_config]
  2357.      [playback]     23. Gosub(macro-toggle-tc,lang-playback,1(hook_0)) [pbx_config]
  2358.   Include =>        'macro-toggle-tc-custom'                      [pbx_config]
  2359.  
  2360. [ Context 'timeconditions-toggles' created by 'pbx_config' ]
  2361.   '*271' =>         hint: Custom:TC1                              [pbx_config]
  2362.                     1. Macro(user-callerid,)                      [pbx_config]
  2363.                     2. Macro(toggle-tc,1)                         [pbx_config]
  2364.                     3. Hangup()                                   [pbx_config]
  2365.   '*272' =>         hint: Custom:TC2                              [pbx_config]
  2366.                     1. Macro(user-callerid,)                      [pbx_config]
  2367.                     2. Macro(toggle-tc,2)                         [pbx_config]
  2368.                     3. Hangup()                                   [pbx_config]
  2369.   '*273' =>         hint: Custom:TC3                              [pbx_config]
  2370.                     1. Macro(user-callerid,)                      [pbx_config]
  2371.                     2. Macro(toggle-tc,3)                         [pbx_config]
  2372.                     3. Hangup()                                   [pbx_config]
  2373.   '*274' =>         hint: Custom:TC4                              [pbx_config]
  2374.                     1. Macro(user-callerid,)                      [pbx_config]
  2375.                     2. Macro(toggle-tc,4)                         [pbx_config]
  2376.                     3. Hangup()                                   [pbx_config]
  2377.   '*275' =>         hint: Custom:TC5                              [pbx_config]
  2378.                     1. Macro(user-callerid,)                      [pbx_config]
  2379.                     2. Macro(toggle-tc,5)                         [pbx_config]
  2380.                     3. Hangup()                                   [pbx_config]
  2381.   'h' =>            1. Hangup()                                   [pbx_config]
  2382.   Include =>        'timeconditions-toggles-custom'               [pbx_config]
  2383.  
  2384. [ Context 'timeconditions' created by 'pbx_config' ]
  2385.   '1' =>            1. Set(DB(TC/1/INUSESTATE)=INUSE)             [pbx_config]
  2386.                     2. Set(DB(TC/1/NOT_INUSESTATE)=NOT_INUSE)     [pbx_config]
  2387.                     3. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2388.                     4. Set(TIMEMATCHED=${IFTIME(08:30-16:30,*,4,jul?TRUE:FALSE)}) [pbx_config]
  2389.                     5. GotoIfTime(08:30-16:30,*,4,jul?truestate)  [pbx_config]
  2390.                     6. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2391.                     7. Set(TIMEMATCHED=${IFTIME(16:31-00:00,mon-fri,1-31,jan-dec?TRUE:FALSE)}) [pbx_config]
  2392.                     8. GotoIfTime(16:31-00:00,mon-fri,1-31,jan-dec?truestate) [pbx_config]
  2393.                     9. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2394.                     10. Set(TIMEMATCHED=${IFTIME(14:00-16:30,*,14,apr?TRUE:FALSE)}) [pbx_config]
  2395.                     11. GotoIfTime(14:00-16:30,*,14,apr?truestate) [pbx_config]
  2396.                     12. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2397.                     13. Set(TIMEMATCHED=${IFTIME(13:00-16:30,*,23,dec?TRUE:FALSE)}) [pbx_config]
  2398.                     14. GotoIfTime(13:00-16:30,*,23,dec?truestate) [pbx_config]
  2399.                     15. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2400.                     16. Set(TIMEMATCHED=${IFTIME(13:00-16:30,*,11,nov?TRUE:FALSE)}) [pbx_config]
  2401.                     17. GotoIfTime(13:00-16:30,*,11,nov?truestate) [pbx_config]
  2402.                     18. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2403.                     19. Set(TIMEMATCHED=${IFTIME(08:30-16:30,*,6,jan?TRUE:FALSE)}) [pbx_config]
  2404.                     20. GotoIfTime(08:30-16:30,*,6,jan?truestate) [pbx_config]
  2405.                     21. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2406.                     22. Set(TIMEMATCHED=${IFTIME(08:30-16:30,*,4,jul?TRUE:FALSE)}) [pbx_config]
  2407.                     23. GotoIfTime(08:30-16:30,*,4,jul?truestate) [pbx_config]
  2408.                     24. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2409.                     25. Set(TIMEMATCHED=${IFTIME(08:30-16:30,*,2,jan?TRUE:FALSE)}) [pbx_config]
  2410.                     26. GotoIfTime(08:30-16:30,*,2,jan?truestate) [pbx_config]
  2411.                     27. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2412.                     28. Set(TIMEMATCHED=${IFTIME(08:30-16:30,*,29,may?TRUE:FALSE)}) [pbx_config]
  2413.                     29. GotoIfTime(08:30-16:30,*,29,may?truestate) [pbx_config]
  2414.                     30. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2415.                     31. Set(TIMEMATCHED=${IFTIME(08:30-16:30,*,26,dec?TRUE:FALSE)}) [pbx_config]
  2416.                     32. GotoIfTime(08:30-16:30,*,26,dec?truestate) [pbx_config]
  2417.                     33. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2418.                     34. Set(TIMEMATCHED=${IFTIME(08:30-16:30,*,20,feb?TRUE:FALSE)}) [pbx_config]
  2419.                     35. GotoIfTime(08:30-16:30,*,20,feb?truestate) [pbx_config]
  2420.                     36. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2421.                     37. Set(TIMEMATCHED=${IFTIME(08:30-16:30,*,1,jan?TRUE:FALSE)}) [pbx_config]
  2422.                     38. GotoIfTime(08:30-16:30,*,1,jan?truestate) [pbx_config]
  2423.                     39. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2424.                     40. Set(TIMEMATCHED=${IFTIME(08:30-16:30,*,10,oct?TRUE:FALSE)}) [pbx_config]
  2425.                     41. GotoIfTime(08:30-16:30,*,10,oct?truestate) [pbx_config]
  2426.                     42. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2427.                     43. Set(TIMEMATCHED=${IFTIME(08:30-16:30,*,16,jan?TRUE:FALSE)}) [pbx_config]
  2428.                     44. GotoIfTime(08:30-16:30,*,16,jan?truestate) [pbx_config]
  2429.                     45. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2430.                     46. Set(TIMEMATCHED=${IFTIME(00:00-23:59,sat-sun,1-31,jan-dec?TRUE:FALSE)}) [pbx_config]
  2431.                     47. GotoIfTime(00:00-23:59,sat-sun,1-31,jan-dec?truestate) [pbx_config]
  2432.                     48. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2433.                     49. Set(TIMEMATCHED=${IFTIME(00:00-08:29,mon-fri,1-31,jan-dec?TRUE:FALSE)}) [pbx_config]
  2434.                     50. GotoIfTime(00:00-08:29,mon-fri,1-31,jan-dec?truestate) [pbx_config]
  2435.                     51. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2436.                     52. Set(TIMEMATCHED=${IFTIME(00:00-23:59,*,24-25,nov?TRUE:FALSE)}) [pbx_config]
  2437.                     53. GotoIfTime(00:00-23:59,*,24-25,nov?truestate) [pbx_config]
  2438.      [falsestate]   54. GotoIf($["${DB(TC/1):0:4}" = "true"]?truegoto) [pbx_config]
  2439.                     55. ExecIf($["${DB(TC/1)}" = "false"]?Set(DB(TC/1)=)) [pbx_config]
  2440.      [falsegoto]    56. Set(DEVICE_STATE(Custom:TC1)=INUSE)       [pbx_config]
  2441.                     57. ExecIf($["${DB(TC/1)}" = "false_sticky"]?Set(DEVICE_STATE(Custom:TCSTICKY${ARG1})=INUSE)) [pbx_config]
  2442.                     58. GotoIf($["${TCRETURN}"!="RETURN"]?ivr-1,s,1) [pbx_config]
  2443.                     59. Set(TCSTATE=false)                        [pbx_config]
  2444.                     60. Set(TCOVERRIDE=${IF($["${DB(TC/1):0:5}" = "false"]?true:false)}) [pbx_config]
  2445.                     61. Return()                                  [pbx_config]
  2446.      [truestate]    62. GotoIf($["${DB(TC/1):0:5}" = "false"]?falsegoto) [pbx_config]
  2447.                     63. ExecIf($["${DB(TC/1)}" = "true"]?Set(DB(TC/1)=)) [pbx_config]
  2448.      [truegoto]     64. Set(DEVICE_STATE(Custom:TC1)=NOT_INUSE)   [pbx_config]
  2449.                     65. ExecIf($["${DB(TC/1)}" = "true_sticky"]?Set(DEVICE_STATE(Custom:TCSTICKY${ARG1})=INUSE)) [pbx_config]
  2450.                     66. GotoIf($["${TCRETURN}"!="RETURN"]?ivr-4,s,1) [pbx_config]
  2451.                     67. Set(TCSTATE=true)                         [pbx_config]
  2452.                     68. Set(TCOVERRIDE=${IF($["${DB(TC/1):0:4}" = "true"]?true:false)}) [pbx_config]
  2453.                     69. Return()                                  [pbx_config]
  2454.   '2' =>            1. Set(DB(TC/2/INUSESTATE)=INUSE)             [pbx_config]
  2455.                     2. Set(DB(TC/2/NOT_INUSESTATE)=NOT_INUSE)     [pbx_config]
  2456.      [falsestate]   3. GotoIf($["${DB(TC/2):0:4}" = "true"]?truegoto) [pbx_config]
  2457.                     4. ExecIf($["${DB(TC/2)}" = "false"]?Set(DB(TC/2)=)) [pbx_config]
  2458.      [falsegoto]    5. Set(DEVICE_STATE(Custom:TC2)=INUSE)        [pbx_config]
  2459.                     6. ExecIf($["${DB(TC/2)}" = "false_sticky"]?Set(DEVICE_STATE(Custom:TCSTICKY${ARG1})=INUSE)) [pbx_config]
  2460.                     7. GotoIf($["${TCRETURN}"!="RETURN"]?ivr-15,s,1) [pbx_config]
  2461.                     8. Set(TCSTATE=false)                         [pbx_config]
  2462.                     9. Set(TCOVERRIDE=${IF($["${DB(TC/2):0:5}" = "false"]?true:false)}) [pbx_config]
  2463.                     10. Return()                                  [pbx_config]
  2464.      [truestate]    11. GotoIf($["${DB(TC/2):0:5}" = "false"]?falsegoto) [pbx_config]
  2465.                     12. ExecIf($["${DB(TC/2)}" = "true"]?Set(DB(TC/2)=)) [pbx_config]
  2466.      [truegoto]     13. Set(DEVICE_STATE(Custom:TC2)=NOT_INUSE)   [pbx_config]
  2467.                     14. ExecIf($["${DB(TC/2)}" = "true_sticky"]?Set(DEVICE_STATE(Custom:TCSTICKY${ARG1})=INUSE)) [pbx_config]
  2468.                     15. GotoIf($["${TCRETURN}"!="RETURN"]?ivr-6,s,1) [pbx_config]
  2469.                     16. Set(TCSTATE=true)                         [pbx_config]
  2470.                     17. Set(TCOVERRIDE=${IF($["${DB(TC/2):0:4}" = "true"]?true:false)}) [pbx_config]
  2471.                     18. Return()                                  [pbx_config]
  2472.   '3' =>            1. Set(DB(TC/3/INUSESTATE)=INUSE)             [pbx_config]
  2473.                     2. Set(DB(TC/3/NOT_INUSESTATE)=NOT_INUSE)     [pbx_config]
  2474.                     3. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2475.                     4. Set(TIMEMATCHED=${IFTIME(07:00-17:30,*,4,jul?TRUE:FALSE)}) [pbx_config]
  2476.                     5. GotoIfTime(07:00-17:30,*,4,jul?truestate)  [pbx_config]
  2477.                     6. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2478.                     7. Set(TIMEMATCHED=${IFTIME(07:00-17:30,*,29,may?TRUE:FALSE)}) [pbx_config]
  2479.                     8. GotoIfTime(07:00-17:30,*,29,may?truestate) [pbx_config]
  2480.                     9. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2481.                     10. Set(TIMEMATCHED=${IFTIME(17:30-00:00,mon-fri,1-31,jan-dec?TRUE:FALSE)}) [pbx_config]
  2482.                     11. GotoIfTime(17:30-00:00,mon-fri,1-31,jan-dec?truestate) [pbx_config]
  2483.                     12. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2484.                     13. Set(TIMEMATCHED=${IFTIME(00:00-23:59,sat-sun,1-31,jan-dec?TRUE:FALSE)}) [pbx_config]
  2485.                     14. GotoIfTime(00:00-23:59,sat-sun,1-31,jan-dec?truestate) [pbx_config]
  2486.                     15. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2487.                     16. Set(TIMEMATCHED=${IFTIME(00:00-07:00,mon-fri,1-31,jan-dec?TRUE:FALSE)}) [pbx_config]
  2488.                     17. GotoIfTime(00:00-07:00,mon-fri,1-31,jan-dec?truestate) [pbx_config]
  2489.      [falsestate]   18. GotoIf($["${DB(TC/3):0:4}" = "true"]?truegoto) [pbx_config]
  2490.                     19. ExecIf($["${DB(TC/3)}" = "false"]?Set(DB(TC/3)=)) [pbx_config]
  2491.      [falsegoto]    20. Set(DEVICE_STATE(Custom:TC3)=INUSE)       [pbx_config]
  2492.                     21. ExecIf($["${DB(TC/3)}" = "false_sticky"]?Set(DEVICE_STATE(Custom:TCSTICKY${ARG1})=INUSE)) [pbx_config]
  2493.                     22. GotoIf($["${TCRETURN}"!="RETURN"]?ext-queues,503,1) [pbx_config]
  2494.                     23. Set(TCSTATE=false)                        [pbx_config]
  2495.                     24. Set(TCOVERRIDE=${IF($["${DB(TC/3):0:5}" = "false"]?true:false)}) [pbx_config]
  2496.                     25. Return()                                  [pbx_config]
  2497.      [truestate]    26. GotoIf($["${DB(TC/3):0:5}" = "false"]?falsegoto) [pbx_config]
  2498.                     27. ExecIf($["${DB(TC/3)}" = "true"]?Set(DB(TC/3)=)) [pbx_config]
  2499.      [truegoto]     28. Set(DEVICE_STATE(Custom:TC3)=NOT_INUSE)   [pbx_config]
  2500.                     29. ExecIf($["${DB(TC/3)}" = "true_sticky"]?Set(DEVICE_STATE(Custom:TCSTICKY${ARG1})=INUSE)) [pbx_config]
  2501.                     30. GotoIf($["${TCRETURN}"!="RETURN"]?ivr-14,s,1) [pbx_config]
  2502.                     31. Set(TCSTATE=true)                         [pbx_config]
  2503.                     32. Set(TCOVERRIDE=${IF($["${DB(TC/3):0:4}" = "true"]?true:false)}) [pbx_config]
  2504.                     33. Return()                                  [pbx_config]
  2505.   '4' =>            1. Set(DB(TC/4/INUSESTATE)=INUSE)             [pbx_config]
  2506.                     2. Set(DB(TC/4/NOT_INUSESTATE)=NOT_INUSE)     [pbx_config]
  2507.                     3. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2508.                     4. Set(TIMEMATCHED=${IFTIME(08:30-16:30,*,4,jul?TRUE:FALSE)}) [pbx_config]
  2509.                     5. GotoIfTime(08:30-16:30,*,4,jul?truestate)  [pbx_config]
  2510.                     6. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2511.                     7. Set(TIMEMATCHED=${IFTIME(16:31-00:00,mon-fri,1-31,jan-dec?TRUE:FALSE)}) [pbx_config]
  2512.                     8. GotoIfTime(16:31-00:00,mon-fri,1-31,jan-dec?truestate) [pbx_config]
  2513.                     9. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2514.                     10. Set(TIMEMATCHED=${IFTIME(14:00-16:30,*,14,apr?TRUE:FALSE)}) [pbx_config]
  2515.                     11. GotoIfTime(14:00-16:30,*,14,apr?truestate) [pbx_config]
  2516.                     12. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2517.                     13. Set(TIMEMATCHED=${IFTIME(13:00-16:30,*,23,dec?TRUE:FALSE)}) [pbx_config]
  2518.                     14. GotoIfTime(13:00-16:30,*,23,dec?truestate) [pbx_config]
  2519.                     15. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2520.                     16. Set(TIMEMATCHED=${IFTIME(13:00-16:30,*,11,nov?TRUE:FALSE)}) [pbx_config]
  2521.                     17. GotoIfTime(13:00-16:30,*,11,nov?truestate) [pbx_config]
  2522.                     18. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2523.                     19. Set(TIMEMATCHED=${IFTIME(08:30-16:30,*,6,jan?TRUE:FALSE)}) [pbx_config]
  2524.                     20. GotoIfTime(08:30-16:30,*,6,jan?truestate) [pbx_config]
  2525.                     21. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2526.                     22. Set(TIMEMATCHED=${IFTIME(08:30-16:30,*,4,jul?TRUE:FALSE)}) [pbx_config]
  2527.                     23. GotoIfTime(08:30-16:30,*,4,jul?truestate) [pbx_config]
  2528.                     24. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2529.                     25. Set(TIMEMATCHED=${IFTIME(08:30-16:30,*,2,jan?TRUE:FALSE)}) [pbx_config]
  2530.                     26. GotoIfTime(08:30-16:30,*,2,jan?truestate) [pbx_config]
  2531.                     27. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2532.                     28. Set(TIMEMATCHED=${IFTIME(08:30-16:30,*,29,may?TRUE:FALSE)}) [pbx_config]
  2533.                     29. GotoIfTime(08:30-16:30,*,29,may?truestate) [pbx_config]
  2534.                     30. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2535.                     31. Set(TIMEMATCHED=${IFTIME(08:30-16:30,*,26,dec?TRUE:FALSE)}) [pbx_config]
  2536.                     32. GotoIfTime(08:30-16:30,*,26,dec?truestate) [pbx_config]
  2537.                     33. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2538.                     34. Set(TIMEMATCHED=${IFTIME(08:30-16:30,*,20,feb?TRUE:FALSE)}) [pbx_config]
  2539.                     35. GotoIfTime(08:30-16:30,*,20,feb?truestate) [pbx_config]
  2540.                     36. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2541.                     37. Set(TIMEMATCHED=${IFTIME(08:30-16:30,*,1,jan?TRUE:FALSE)}) [pbx_config]
  2542.                     38. GotoIfTime(08:30-16:30,*,1,jan?truestate) [pbx_config]
  2543.                     39. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2544.                     40. Set(TIMEMATCHED=${IFTIME(08:30-16:30,*,10,oct?TRUE:FALSE)}) [pbx_config]
  2545.                     41. GotoIfTime(08:30-16:30,*,10,oct?truestate) [pbx_config]
  2546.                     42. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2547.                     43. Set(TIMEMATCHED=${IFTIME(08:30-16:30,*,16,jan?TRUE:FALSE)}) [pbx_config]
  2548.                     44. GotoIfTime(08:30-16:30,*,16,jan?truestate) [pbx_config]
  2549.                     45. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2550.                     46. Set(TIMEMATCHED=${IFTIME(00:00-23:59,sat-sun,1-31,jan-dec?TRUE:FALSE)}) [pbx_config]
  2551.                     47. GotoIfTime(00:00-23:59,sat-sun,1-31,jan-dec?truestate) [pbx_config]
  2552.                     48. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2553.                     49. Set(TIMEMATCHED=${IFTIME(00:00-08:29,mon-fri,1-31,jan-dec?TRUE:FALSE)}) [pbx_config]
  2554.                     50. GotoIfTime(00:00-08:29,mon-fri,1-31,jan-dec?truestate) [pbx_config]
  2555.                     51. Set(TIMENOW=${STRFTIME(${EPOCH},,%H:%M,%a,%e,%b)}) [pbx_config]
  2556.                     52. Set(TIMEMATCHED=${IFTIME(00:00-23:59,*,24-25,nov?TRUE:FALSE)}) [pbx_config]
  2557.                     53. GotoIfTime(00:00-23:59,*,24-25,nov?truestate) [pbx_config]
  2558.      [falsestate]   54. GotoIf($["${DB(TC/4):0:4}" = "true"]?truegoto) [pbx_config]
  2559.                     55. ExecIf($["${DB(TC/4)}" = "false"]?Set(DB(TC/4)=)) [pbx_config]
  2560.      [falsegoto]    56. Set(DEVICE_STATE(Custom:TC4)=INUSE)       [pbx_config]
  2561.                     57. ExecIf($["${DB(TC/4)}" = "false_sticky"]?Set(DEVICE_STATE(Custom:TCSTICKY${ARG1})=INUSE)) [pbx_config]
  2562.                     58. GotoIf($["${TCRETURN}"!="RETURN"]?ext-queues,502,1) [pbx_config]
  2563.                     59. Set(TCSTATE=false)                        [pbx_config]
  2564.                     60. Set(TCOVERRIDE=${IF($["${DB(TC/4):0:5}" = "false"]?true:false)}) [pbx_config]
  2565.                     61. Return()                                  [pbx_config]
  2566.      [truestate]    62. GotoIf($["${DB(TC/4):0:5}" = "false"]?falsegoto) [pbx_config]
  2567.                     63. ExecIf($["${DB(TC/4)}" = "true"]?Set(DB(TC/4)=)) [pbx_config]
  2568.      [truegoto]     64. Set(DEVICE_STATE(Custom:TC4)=NOT_INUSE)   [pbx_config]
  2569.                     65. ExecIf($["${DB(TC/4)}" = "true_sticky"]?Set(DEVICE_STATE(Custom:TCSTICKY${ARG1})=INUSE)) [pbx_config]
  2570.                     66. GotoIf($["${TCRETURN}"!="RETURN"]?ext-local,vmu202,1) [pbx_config]
  2571.                     67. Set(TCSTATE=true)                         [pbx_config]
  2572.                     68. Set(TCOVERRIDE=${IF($["${DB(TC/4):0:4}" = "true"]?true:false)}) [pbx_config]
  2573.                     69. Return()                                  [pbx_config]
  2574.   '5' =>            1. Set(DB(TC/5/INUSESTATE)=INUSE)             [pbx_config]
  2575.                     2. Set(DB(TC/5/NOT_INUSESTATE)=NOT_INUSE)     [pbx_config]
  2576.      [falsestate]   3. GotoIf($["${DB(TC/5):0:4}" = "true"]?truegoto) [pbx_config]
  2577.                     4. ExecIf($["${DB(TC/5)}" = "false"]?Set(DB(TC/5)=)) [pbx_config]
  2578.      [falsegoto]    5. Set(DEVICE_STATE(Custom:TC5)=INUSE)        [pbx_config]
  2579.                     6. ExecIf($["${DB(TC/5)}" = "false_sticky"]?Set(DEVICE_STATE(Custom:TCSTICKY${ARG1})=INUSE)) [pbx_config]
  2580.                     7. GotoIf($["${TCRETURN}"!="RETURN"]?ext-queues,504,1) [pbx_config]
  2581.                     8. Set(TCSTATE=false)                         [pbx_config]
  2582.                     9. Set(TCOVERRIDE=${IF($["${DB(TC/5):0:5}" = "false"]?true:false)}) [pbx_config]
  2583.                     10. Return()                                  [pbx_config]
  2584.      [truestate]    11. GotoIf($["${DB(TC/5):0:5}" = "false"]?falsegoto) [pbx_config]
  2585.                     12. ExecIf($["${DB(TC/5)}" = "true"]?Set(DB(TC/5)=)) [pbx_config]
  2586.      [truegoto]     13. Set(DEVICE_STATE(Custom:TC5)=NOT_INUSE)   [pbx_config]
  2587.                     14. ExecIf($["${DB(TC/5)}" = "true_sticky"]?Set(DEVICE_STATE(Custom:TCSTICKY${ARG1})=INUSE)) [pbx_config]
  2588.                     15. GotoIf($["${TCRETURN}"!="RETURN"]?from-did-direct,204,1) [pbx_config]
  2589.                     16. Set(TCSTATE=true)                         [pbx_config]
  2590.                     17. Set(TCOVERRIDE=${IF($["${DB(TC/5):0:4}" = "true"]?true:false)}) [pbx_config]
  2591.                     18. Return()                                  [pbx_config]
  2592.   Include =>        'timeconditions-custom'                       [pbx_config]
  2593.  
  2594. [ Context 'app-speeddial-set' created by 'pbx_config' ]
  2595.   '1' =>            1. Gosub(app-speeddial-set,lang-playback,1(hook_2)) [pbx_config]
  2596.                     2. Goto(s,conflicts)                          [pbx_config]
  2597.   '2' =>            1. Goto(s,setloc)                             [pbx_config]
  2598.   '3' =>            1. Goto(s,setnum)                             [pbx_config]
  2599.   'en' =>           1. Playback(speed-dial)                       [pbx_config]
  2600.                     2. SayDigits(${newlocation})                  [pbx_config]
  2601.                     3. Playback(is-set-to)                        [pbx_config]
  2602.                     4. SayDigits(${newnum})                       [pbx_config]
  2603.                     5. Return()                                   [pbx_config]
  2604.      [hook_1]       6. Playback(speed-dial)                       [pbx_config]
  2605.                     7. SayDigits(${newlocation})                  [pbx_config]
  2606.                     8. Playback(is-in-use)                        [pbx_config]
  2607.                     9. Background(press-1&to-listen-to-it&press-2&to-enter-a-diff&location&press-3&to-change&telephone-number) [pbx_config]
  2608.                     10. Return()                                  [pbx_config]
  2609.      [hook_2]       11. Playback(speed-dial)                      [pbx_config]
  2610.                     12. SayDigits(${newlocation})                 [pbx_config]
  2611.                     13. Playback(is-set-to)                       [pbx_config]
  2612.                     14. SayDigits(${SPEEDDIALNUMBER})             [pbx_config]
  2613.                     15. Return()                                  [pbx_config]
  2614.   'ja' =>           1. Playback(speed-dial)                       [pbx_config]
  2615.                     2. SayDigits(${newlocation})                  [pbx_config]
  2616.                     3. Playback(jp-wo)                            [pbx_config]
  2617.                     4. SayDigits(${newnum})                       [pbx_config]
  2618.                     5. Playback(is-set-to)                        [pbx_config]
  2619.                     6. Return()                                   [pbx_config]
  2620.      [hook_1]       7. Playback(speed-dial)                       [pbx_config]
  2621.                     8. SayDigits(${newlocation})                  [pbx_config]
  2622.                     9. Playback(jp-wa&is-in-use)                  [pbx_config]
  2623.                     10. Background(list&press-1&to-enter-a-diff&location&jp-wo&to-enter&press-2&telephone-number&jp-wo&to-change&press-3) [pbx_config]
  2624.                     11. Return()                                  [pbx_config]
  2625.      [hook_2]       12. Playback(speed-dial)                      [pbx_config]
  2626.                     13. SayDigits(${newlocation})                 [pbx_config]
  2627.                     14. Playback(jp-wa)                           [pbx_config]
  2628.                     15. SayDigits(${SPEEDDIALNUMBER})             [pbx_config]
  2629.                     16. Playback(is-set-to-2)                     [pbx_config]
  2630.                     17. Return()                                  [pbx_config]
  2631.   'lang-playback' => 1. GosubIf($[${DIALPLAN_EXISTS(app-speeddial-set,${CHANNEL(language)})}]?app-speeddial-set,${CHANNEL(language)},${ARG1}():app-speeddial-set,en,${ARG1}()) [pbx_config]
  2632.                     2. Return()                                   [pbx_config]
  2633.   's' =>            1. Macro(user-callerid,)                      [pbx_config]
  2634.      [setloc]       2. Read(newlocation,speed-enterlocation,,,,)  [pbx_config]
  2635.      [lookup]       3. Macro(speeddial-lookup,${newlocation},${AMPUSER}) [pbx_config]
  2636.                     4. GotoIf($["${SPEEDDIALNUMBER}"!=""]?conflicts) [pbx_config]
  2637.      [setnum]       5. Read(newnum,speed-enternumber,,,,)         [pbx_config]
  2638.      [success]      6. Set(DB(AMPUSER/${AMPUSER}/speeddials/${newlocation})=${newnum}) [pbx_config]
  2639.                     7. Gosub(app-speeddial-set,lang-playback,1(hook_0)) [pbx_config]
  2640.                     8. Hangup()                                   [pbx_config]
  2641.      [conflicts]    9. Gosub(app-speeddial-set,lang-playback,1(hook_1)) [pbx_config]
  2642.                     10. WaitExten(60,)                            [pbx_config]
  2643.   't' =>            1. Congestion()                               [pbx_config]
  2644.   Include =>        'app-speeddial-set-custom'                    [pbx_config]
  2645.  
  2646. [ Context 'app-speeddial' created by 'pbx_config' ]
  2647.   '*75' =>          1. Goto(app-speeddial-set,s,1)                [pbx_config]
  2648.   '_*0.' =>         1. Macro(user-callerid,)                      [pbx_config]
  2649.                     2. Set(SPEEDDIALLOCATION=${EXTEN:2})          [pbx_config]
  2650.      [lookup]       3. Macro(speeddial-lookup,${SPEEDDIALLOCATION},${AMPUSER}) [pbx_config]
  2651.                     4. GotoIf($["${SPEEDDIALNUMBER}"=""]?failed)  [pbx_config]
  2652.                     5. Goto(from-internal,${SPEEDDIALNUMBER},1)   [pbx_config]
  2653.      [failed]       104. Playback(speed-dial-empty)               [pbx_config]
  2654.                     105. Congestion()                             [pbx_config]
  2655.   Include =>        'app-speeddial-custom'                        [pbx_config]
  2656.  
  2657. [ Context 'macro-speeddial-lookup' created by 'pbx_config' ]
  2658.   's' =>            1. GotoIf($["${ARG2}"=""]]?lookupsys)         [pbx_config]
  2659.                     2. Set(SPEEDDIALNUMBER=)                      [pbx_config]
  2660.      [lookupuser]   3. Set(SPEEDDIALNUMBER=${DB(AMPUSER/${ARG2}/speeddials/${ARG1})}) [pbx_config]
  2661.                     4. GotoIf($["${SPEEDDIALNUMBER}"=""]?lookupsys) [pbx_config]
  2662.                     5. Noop(Found speeddial ${ARG1} for user ${ARG2}: ${SPEEDDIALNUMBER}) [pbx_config]
  2663.                     6. Goto(end)                                  [pbx_config]
  2664.      [lookupsys]    104. Set(SPEEDDIALNUMBER=${DB(sysspeeddials/${ARG1})}) [pbx_config]
  2665.                     105. GotoIf($["${SPEEDDIALNUMBER}"=""]?failed) [pbx_config]
  2666.                     106. Noop(Found system speeddial ${ARG1}: ${SPEEDDIALNUMBER}) [pbx_config]
  2667.                     107. Goto(end)                                [pbx_config]
  2668.      [failed]       205. Noop(No system or user speeddial found)  [pbx_config]
  2669.      [end]          206. Noop(End of Speeddial-lookup)            [pbx_config]
  2670.   Include =>        'macro-speeddial-lookup-custom'               [pbx_config]
  2671.  
  2672. [ Context 'sub-rgsetcid' created by 'pbx_config' ]
  2673.   's' =>            1. Goto(s-${DB(RINGGROUP/${NODEST}/changecid)},1) [pbx_config]
  2674.   's-did' =>        1. ExecIf($["${REGEX("^[\+]?[0-9]+$" ${FROM_DID})}" = "1"]?Set(__REALCALLERIDNUM=${FROM_DID})) [pbx_config]
  2675.                     2. Return()                                   [pbx_config]
  2676.   's-extern' =>     1. ExecIf($["${REGEX("^[\+]?[0-9]+$" ${DB(RINGGROUP/${NODEST}/fixedcid)})}" == "1" & "${FROM_DID}" != ""]?Set(__TRUNKCIDOVERRIDE=${DB(RINGGROUP/${NODEST}/fixedcid)})) [pbx_config]
  2677.                     2. Return()                                   [pbx_config]
  2678.   's-fixed' =>      1. ExecIf($["${REGEX("^[\+]?[0-9]+$" ${DB(RINGGROUP/${NODEST}/fixedcid)})}" = "1"]?Set(__TRUNKCIDOVERRIDE=${DB(RINGGROUP/${NODEST}/fixedcid)})) [pbx_config]
  2679.                     2. Return()                                   [pbx_config]
  2680.   's-forcedid' =>   1. ExecIf($["${REGEX("^[\+]?[0-9]+$" ${FROM_DID})}" = "1"]?Set(__TRUNKCIDOVERRIDE=${FROM_DID})) [pbx_config]
  2681.                     2. Return()                                   [pbx_config]
  2682.   '_s-.' =>         1. Noop(Unknown value for RINGGROUP/${NODEST}/changecid of ${DB(RINGGROUP/${NODEST}/changecid)} set to "default") [pbx_config]
  2683.                     2. Set(DB(RINGGROUP/${NODEST}/changecid)=default) [pbx_config]
  2684.                     3. Return()                                   [pbx_config]
  2685.   Include =>        'sub-rgsetcid-custom'                         [pbx_config]
  2686.  
  2687. [ Context 'ext-group' created by 'pbx_config' ]
  2688.   '400' =>          1. GotoIf($["${__RINGINGSENT}" = "TRUE"]?cid) [pbx_config]
  2689.                     2. Progress()                                 [pbx_config]
  2690.      [cid]          3. Macro(user-callerid,)                      [pbx_config]
  2691.                     4. Macro(blkvm-setifempty,)                   [pbx_config]
  2692.                     5. GotoIf($["${GOSUB_RETVAL}" = "TRUE"]?skipov) [pbx_config]
  2693.                     6. Macro(blkvm-set,reset)                     [pbx_config]
  2694.                     7. Set(__NODEST=)                             [pbx_config]
  2695.      [skipov]       8. Set(RRNODEST=${NODEST})                    [pbx_config]
  2696.      [skipvmblk]    9. Set(__NODEST=${EXTEN})                     [pbx_config]
  2697.                     10. GosubIf($[${DB_EXISTS(RINGGROUP/400/changecid)} = 1 & "${DB(RINGGROUP/400/changecid)}" != "default" & "${DB(RINGGROUP/400/changecid)}" != ""]?sub-rgsetcid,s,1()) [pbx_config]
  2698.                     11. Macro(prepend-cid,CAP: )                  [pbx_config]
  2699.                     12. Gosub(sub-record-check,s,1(rg,400,dontcare)) [pbx_config]
  2700.                     13. Set(RingGroupMethod=ringall)              [pbx_config]
  2701.      [DIALGRP]      14. Macro(dial,7,m(Opus)${REPLACE(DIAL_OPTIONS,r)},100) [pbx_config]
  2702.                     15. Gosub(sub-record-cancel,s,1())            [pbx_config]
  2703.                     16. Set(RingGroupMethod=)                     [pbx_config]
  2704.                     17. GotoIf($["foo${RRNODEST}" != "foo"]?nodest) [pbx_config]
  2705.                     18. Set(__NODEST=)                            [pbx_config]
  2706.                     19. Macro(blkvm-clr,)                         [pbx_config]
  2707.                     20. Goto(ext-queues,500,1)                    [pbx_config]
  2708.      [nodest]       21. Noop(SKIPPING DEST, CALL CAME FROM Q/RG: ${RRNODEST}) [pbx_config]
  2709.   'h' =>            1. Macro(hangupcall,)                         [pbx_config]
  2710.   Include =>        'ext-group-custom'                            [pbx_config]
  2711.  
  2712. [ Context 'macro-systemrecording' created by 'pbx_config' ]
  2713.   '*' =>            1. Goto(dorecord,1)                           [pbx_config]
  2714.   '1' =>            1. Goto(${LISTEN},dc_start)                   [pbx_config]
  2715.   '2' =>            1. Goto(doaccept,1)                           [pbx_config]
  2716.   '3' =>            1. Goto(switchlang,1)                         [pbx_config]
  2717.   'confmenu' =>     1. Background(to-listen-to-it&press-1&to-accept-recording&press-2&to-rerecord-it&press-star&language&press-3,m,${CHANNEL(language)},macro-systemrecording) [pbx_config]
  2718.                     2. Read(RECRESULT,,1,,,4)                     [pbx_config]
  2719.                     3. GotoIf($["x${RECRESULT}"="x*"]?dorecord,1) [pbx_config]
  2720.                     4. GotoIf($["x${RECRESULT}"="x1"]?${LISTEN},2) [pbx_config]
  2721.                     5. GotoIf($["x${RECRESULT}"="x2"]?doaccept,1) [pbx_config]
  2722.                     6. GotoIf($["x${RECRESULT}"="x3"]?switchlang,1) [pbx_config]
  2723.                     7. Goto(1)                                    [pbx_config]
  2724.   'doaccept' =>     1. Set(EXISTS=${STAT(e,${ASTVARLIBDIR}/sounds/${TMPRECFILE}.${CHANNEL(audioreadformat)})}) [pbx_config]
  2725.                     2. Noop(${EXISTS})                            [pbx_config]
  2726.                     3. GotoIf($["${EXISTS}" != "1"]?exit)         [pbx_config]
  2727.                     4. System(touch ${ASTVARLIBDIR}/sounds/${RECFILE}.finished) [pbx_config]
  2728.                     5. GotoIf($["x${TMPRECFILE}"="x"]?exit)       [pbx_config]
  2729.                     6. System(mv ${ASTVARLIBDIR}/sounds/${TMPRECFILE}.${CHANNEL(audioreadformat)} ${ASTVARLIBDIR}/sounds/${RECFILE}.${CHANNEL(audioreadformat)}) [pbx_config]
  2730.                     7. Playback(wait-moment)                      [pbx_config]
  2731.                     8. AGI(recordings.agi)                        [pbx_config]
  2732.                     9. Set(TMPRECFILE=${RECFILE})                 [pbx_config]
  2733.      [exit]         10. Playback(auth-thankyou)                   [pbx_config]
  2734.                     11. Goto(confmenu,1)                          [pbx_config]
  2735.   'docheck' =>      1. Playback(beep)                             [pbx_config]
  2736.      [dc_start]     2. Background(${RECFILE},m,${CHANNEL(language)},macro-systemrecording) [pbx_config]
  2737.                     3. Wait(1)                                    [pbx_config]
  2738.                     4. Goto(confmenu,1)                           [pbx_config]
  2739.   'dochecknolanguage' => 1. Playback(beep)                             [pbx_config]
  2740.      [dc_start]     2. Background(${TMPRECFILE},m,,macro-systemrecording) [pbx_config]
  2741.                     3. Wait(1)                                    [pbx_config]
  2742.                     4. Goto(confmenu,1)                           [pbx_config]
  2743.   'dorecord' =>     1. Set(TMPRECFILE=${RECFILE}-TMP)             [pbx_config]
  2744.                     2. Background(say-temp-msg-prs-pound,,${CHANNEL(language)}) [pbx_config]
  2745.                     3. Record(${TMPRECFILE}.${CHANNEL(audioreadformat)},,,k) [pbx_config]
  2746.                     4. Set(LISTEN=dochecknolanguage)              [pbx_config]
  2747.                     5. Goto(confmenu,1)                           [pbx_config]
  2748.   'h' =>            1. System(touch ${ASTVARLIBDIR}/sounds/${RECFILE}.finished) [pbx_config]
  2749.                     2. GotoIf($["x${TMPRECFILE}"="x"]?exit)       [pbx_config]
  2750.                     3. System(mv ${ASTVARLIBDIR}/sounds/${TMPRECFILE}.${CHANNEL(audioreadformat)} ${ASTVARLIBDIR}/sounds/${CHANNEL(language)}/${RECFILE}.${CHANNEL(audioreadformat)}) [pbx_config]
  2751.      [exit]         4. Hangup()                                   [pbx_config]
  2752.   'i' =>            1. Playback(pm-invalid-option)                [pbx_config]
  2753.                     2. Goto(confmenu,1)                           [pbx_config]
  2754.   'invalid' =>      1. Playback(pm-invalid-option)                [pbx_config]
  2755.                     2. Hangup()                                   [pbx_config]
  2756.   's' =>            1. GotoIf($["${ARG2}" = ""]?invalid)          [pbx_config]
  2757.                     2. Set(TMPLANG=${CHANNEL(language)})          [pbx_config]
  2758.                     3. Set(RECFILE=${TMPLANG}/${ARG2})            [pbx_config]
  2759.                     4. Set(LISTEN=docheck)                        [pbx_config]
  2760.                     5. ExecIf($["${ARG3}" != ""]?Authenticate(${ARG3})) [pbx_config]
  2761.                     6. Goto(${ARG1},1)                            [pbx_config]
  2762.   'switchlang' =>   1. Playback(language&is-set-to)               [pbx_config]
  2763.                     2. SayAlpha(${TMPLANG})                       [pbx_config]
  2764.                     3. Playback(after-the-tone)                   [pbx_config]
  2765.                     4. Background(press-1)                        [pbx_config]
  2766.                     5. SayAlpha(en)                               [pbx_config]
  2767.                     6. Playback(beep)                             [pbx_config]
  2768.                     7. Read(LANGRESULT,,1,,,4)                    [pbx_config]
  2769.                     8. ExecIf($["x${LANGRESULT}"="x1"]?Set(TMPLANG=en)) [pbx_config]
  2770.                     9. Set(RECFILE=${TMPLANG}/${ARG2})            [pbx_config]
  2771.                     10. Playback(language&is-set-to)              [pbx_config]
  2772.                     11. SayAlpha(${TMPLANG})                      [pbx_config]
  2773.                     12. Goto(confmenu,1)                          [pbx_config]
  2774.   't' =>            1. Playback(goodbye)                          [pbx_config]
  2775.                     2. Hangup()                                   [pbx_config]
  2776.   Include =>        'macro-systemrecording-custom'                [pbx_config]
  2777.  
  2778. [ Context 'systemrecording-gui' created by 'pbx_config' ]
  2779.   'dorecord' =>     1. Record(${RECFILE}.wav,,,k)                 [pbx_config]
  2780.   'h' =>            1. System(touch ${RECFILE}.finished)          [pbx_config]
  2781.      [exit]         2. Hangup()                                   [pbx_config]
  2782.   Include =>        'systemrecording-gui-custom'                  [pbx_config]
  2783.  
  2784. [ Context 'app-recordings' created by 'pbx_config' ]
  2785.   '*2916' =>        1. Macro(user-callerid,)                      [pbx_config]
  2786.                     2. Wait(2)                                    [pbx_config]
  2787.                     3. Macro(systemrecording,docheck,custom/CombinedClosings) [pbx_config]
  2788.   '*2932' =>        1. Macro(user-callerid,)                      [pbx_config]
  2789.                     2. Wait(2)                                    [pbx_config]
  2790.                     3. Macro(systemrecording,docheck,custom/CISIVRBreakoutUPLD) [pbx_config]
  2791.   '*2933' =>        1. Macro(user-callerid,)                      [pbx_config]
  2792.                     2. Wait(2)                                    [pbx_config]
  2793.                     3. Macro(systemrecording,docheck,custom/CCSpecAnnoun) [pbx_config]
  2794.   '*2934' =>        1. Macro(user-callerid,)                      [pbx_config]
  2795.                     2. Wait(2)                                    [pbx_config]
  2796.                     3. Macro(systemrecording,docheck,custom/CAPSpecAnnoun) [pbx_config]
  2797.   '*2935' =>        1. Macro(user-callerid,)                      [pbx_config]
  2798.                     2. Wait(2)                                    [pbx_config]
  2799.                     3. Macro(systemrecording,docheck,custom/CISSpecAnnoun) [pbx_config]
  2800.   '*2936' =>        1. Macro(user-callerid,)                      [pbx_config]
  2801.                     2. Wait(2)                                    [pbx_config]
  2802.                     3. Macro(systemrecording,docheck,custom/CCGreetingUPLD) [pbx_config]
  2803.   '*294' =>         1. Macro(user-callerid,)                      [pbx_config]
  2804.                     2. Wait(2)                                    [pbx_config]
  2805.                     3. Macro(systemrecording,docheck,custom/DailyColorRecoring) [pbx_config]
  2806.   '*2950' =>        1. Macro(user-callerid,)                      [pbx_config]
  2807.                     2. Wait(2)                                    [pbx_config]
  2808.                     3. Macro(systemrecording,docheck,custom/CAPOpenIVRUPLD) [pbx_config]
  2809.   '*2953' =>        1. Macro(user-callerid,)                      [pbx_config]
  2810.                     2. Wait(2)                                    [pbx_config]
  2811.                     3. Macro(systemrecording,docheck,custom/CISClosedIVRUPLDnew) [pbx_config]
  2812.   '*2954' =>        1. Macro(user-callerid,)                      [pbx_config]
  2813.                     2. Wait(2)                                    [pbx_config]
  2814.                     3. Macro(systemrecording,docheck,custom/CAPClosedIVRUPLD) [pbx_config]
  2815.   '*2955' =>        1. Macro(user-callerid,)                      [pbx_config]
  2816.                     2. Wait(2)                                    [pbx_config]
  2817.                     3. Macro(systemrecording,docheck,custom/CCIVRUPLD) [pbx_config]
  2818.   '*2958' =>        1. Macro(user-callerid,)                      [pbx_config]
  2819.                     2. Wait(2)                                    [pbx_config]
  2820.                     3. Macro(systemrecording,docheck,custom/OPSIntro) [pbx_config]
  2821.   '*2959' =>        1. Macro(user-callerid,)                      [pbx_config]
  2822.                     2. Wait(2)                                    [pbx_config]
  2823.                     3. Macro(systemrecording,docheck,custom/OPSSpecAnnounUPLD) [pbx_config]
  2824.   '*2960' =>        1. Macro(user-callerid,)                      [pbx_config]
  2825.                     2. Wait(2)                                    [pbx_config]
  2826.                     3. Macro(systemrecording,docheck,custom/OPSQueueIVRBreakout) [pbx_config]
  2827.   '*2961' =>        1. Macro(user-callerid,)                      [pbx_config]
  2828.                     2. Wait(2)                                    [pbx_config]
  2829.                     3. Macro(systemrecording,docheck,custom/OPSClosedIVR) [pbx_config]
  2830.   '*2962' =>        1. Macro(user-callerid,)                      [pbx_config]
  2831.                     2. Wait(2)                                    [pbx_config]
  2832.                     3. Macro(systemrecording,docheck,custom/OPSQueueIntro) [pbx_config]
  2833.   Include =>        'app-recordings-custom'                       [pbx_config]
  2834.  
  2835. [ Context 'play-system-recording' created by 'pbx_config' ]
  2836.   '16' =>           1. Answer()                                   [pbx_config]
  2837.                     2. Playback(custom/CombinedClosings)          [pbx_config]
  2838.                     3. Hangup()                                   [pbx_config]
  2839.   '29' =>           1. Answer()                                   [pbx_config]
  2840.                     2. Playback(custom/CAPIVRBreakoutUPLD)        [pbx_config]
  2841.                     3. Hangup()                                   [pbx_config]
  2842.   '31' =>           1. Answer()                                   [pbx_config]
  2843.                     2. Playback(custom/CAPIVRBreakoutUPLD)        [pbx_config]
  2844.                     3. Hangup()                                   [pbx_config]
  2845.   '32' =>           1. Answer()                                   [pbx_config]
  2846.                     2. Playback(custom/CISIVRBreakoutUPLD)        [pbx_config]
  2847.                     3. Hangup()                                   [pbx_config]
  2848.   '33' =>           1. Answer()                                   [pbx_config]
  2849.                     2. Playback(custom/CCSpecAnnoun)              [pbx_config]
  2850.                     3. Hangup()                                   [pbx_config]
  2851.   '34' =>           1. Answer()                                   [pbx_config]
  2852.                     2. Playback(custom/CAPSpecAnnoun)             [pbx_config]
  2853.                     3. Hangup()                                   [pbx_config]
  2854.   '35' =>           1. Answer()                                   [pbx_config]
  2855.                     2. Playback(custom/CISSpecAnnoun)             [pbx_config]
  2856.                     3. Hangup()                                   [pbx_config]
  2857.   '36' =>           1. Answer()                                   [pbx_config]
  2858.                     2. Playback(custom/CCGreetingUPLD)            [pbx_config]
  2859.                     3. Hangup()                                   [pbx_config]
  2860.   '38' =>           1. Answer()                                   [pbx_config]
  2861.                     2. Playback(custom/CAPGreetingUPLD)           [pbx_config]
  2862.                     3. Hangup()                                   [pbx_config]
  2863.   '4' =>            1. Answer()                                   [pbx_config]
  2864.                     2. Playback(custom/DailyColorRecoring)        [pbx_config]
  2865.                     3. Hangup()                                   [pbx_config]
  2866.   '42' =>           1. Answer()                                   [pbx_config]
  2867.                     2. Playback(custom/CISGreetingUPLD)           [pbx_config]
  2868.                     3. Hangup()                                   [pbx_config]
  2869.   '48' =>           1. Answer()                                   [pbx_config]
  2870.                     2. Playback(custom/CISOpenIVRUPLD)            [pbx_config]
  2871.                     3. Hangup()                                   [pbx_config]
  2872.   '50' =>           1. Answer()                                   [pbx_config]
  2873.                     2. Playback(custom/CAPOpenIVRUPLD)            [pbx_config]
  2874.                     3. Hangup()                                   [pbx_config]
  2875.   '52' =>           1. Answer()                                   [pbx_config]
  2876.                     2. Playback(custom/CISOpenIVRUPLD)            [pbx_config]
  2877.                     3. Hangup()                                   [pbx_config]
  2878.   '53' =>           1. Answer()                                   [pbx_config]
  2879.                     2. Playback(custom/CISClosedIVRUPLDnew)       [pbx_config]
  2880.                     3. Hangup()                                   [pbx_config]
  2881.   '54' =>           1. Answer()                                   [pbx_config]
  2882.                     2. Playback(custom/CAPClosedIVRUPLD)          [pbx_config]
  2883.                     3. Hangup()                                   [pbx_config]
  2884.   '55' =>           1. Answer()                                   [pbx_config]
  2885.                     2. Playback(custom/CCIVRUPLD)                 [pbx_config]
  2886.                     3. Hangup()                                   [pbx_config]
  2887.   '58' =>           1. Answer()                                   [pbx_config]
  2888.                     2. Playback(custom/OPSIntro)                  [pbx_config]
  2889.                     3. Hangup()                                   [pbx_config]
  2890.   '59' =>           1. Answer()                                   [pbx_config]
  2891.                     2. Playback(custom/OPSSpecAnnounUPLD)         [pbx_config]
  2892.                     3. Hangup()                                   [pbx_config]
  2893.   '60' =>           1. Answer()                                   [pbx_config]
  2894.                     2. Playback(custom/OPSQueueIVRBreakout)       [pbx_config]
  2895.                     3. Hangup()                                   [pbx_config]
  2896.   '61' =>           1. Answer()                                   [pbx_config]
  2897.                     2. Playback(custom/OPSClosedIVR)              [pbx_config]
  2898.                     3. Hangup()                                   [pbx_config]
  2899.   '62' =>           1. Answer()                                   [pbx_config]
  2900.                     2. Playback(custom/OPSQueueIntro)             [pbx_config]
  2901.                     3. Hangup()                                   [pbx_config]
  2902.   '63' =>           1. Answer()                                   [pbx_config]
  2903.                     2. Playback(custom/RDLIntroUPLD)              [pbx_config]
  2904.                     3. Hangup()                                   [pbx_config]
  2905.   '64' =>           1. Answer()                                   [pbx_config]
  2906.                     2. Playback(custom/RDLClosedIVR)              [pbx_config]
  2907.                     3. Hangup()                                   [pbx_config]
  2908.   '65' =>           1. Answer()                                   [pbx_config]
  2909.                     2. Playback(custom/RDLQueueIntro)             [pbx_config]
  2910.                     3. Hangup()                                   [pbx_config]
  2911.   '66' =>           1. Answer()                                   [pbx_config]
  2912.                     2. Playback(custom/CAPClosedAnnounUPLD)       [pbx_config]
  2913.                     3. Hangup()                                   [pbx_config]
  2914.   '67' =>           1. Answer()                                   [pbx_config]
  2915.                     2. Playback(custom/CapClosedAnnoun)           [pbx_config]
  2916.                     3. Hangup()                                   [pbx_config]
  2917.   '68' =>           1. Answer()                                   [pbx_config]
  2918.                     2. Playback(custom/CapGreeting)               [pbx_config]
  2919.                     3. Hangup()                                   [pbx_config]
  2920.   '69' =>           1. Answer()                                   [pbx_config]
  2921.                     2. Playback(custom/CAPIVRBreakout)            [pbx_config]
  2922.                     3. Hangup()                                   [pbx_config]
  2923.   '70' =>           1. Answer()                                   [pbx_config]
  2924.                     2. Playback(custom/CapOpenAnnoun)             [pbx_config]
  2925.                     3. Hangup()                                   [pbx_config]
  2926.   '71' =>           1. Answer()                                   [pbx_config]
  2927.                     2. Playback(custom/CapOpenIVR)                [pbx_config]
  2928.                     3. Hangup()                                   [pbx_config]
  2929.   '72' =>           1. Answer()                                   [pbx_config]
  2930.                     2. Playback(custom/CCGreeting)                [pbx_config]
  2931.                     3. Hangup()                                   [pbx_config]
  2932.   '73' =>           1. Answer()                                   [pbx_config]
  2933.                     2. Playback(custom/CCIVRUNew)                 [pbx_config]
  2934.                     3. Hangup()                                   [pbx_config]
  2935.   '74' =>           1. Answer()                                   [pbx_config]
  2936.                     2. Playback(custom/CISClosedIVRUPLD)          [pbx_config]
  2937.                     3. Hangup()                                   [pbx_config]
  2938.   '75' =>           1. Answer()                                   [pbx_config]
  2939.                     2. Playback(custom/CISClosedIVR)              [pbx_config]
  2940.                     3. Hangup()                                   [pbx_config]
  2941.   '76' =>           1. Answer()                                   [pbx_config]
  2942.                     2. Playback(custom/CISGreeting)               [pbx_config]
  2943.                     3. Hangup()                                   [pbx_config]
  2944.   '77' =>           1. Answer()                                   [pbx_config]
  2945.                     2. Playback(custom/CISIVRBreakout)            [pbx_config]
  2946.                     3. Hangup()                                   [pbx_config]
  2947.   '78' =>           1. Answer()                                   [pbx_config]
  2948.                     2. Playback(custom/CISOpenIVR)                [pbx_config]
  2949.                     3. Hangup()                                   [pbx_config]
  2950.   '79' =>           1. Answer()                                   [pbx_config]
  2951.                     2. Playback(custom/ColorCodeIVRrec)           [pbx_config]
  2952.                     3. Hangup()                                   [pbx_config]
  2953.   '80' =>           1. Answer()                                   [pbx_config]
  2954.                     2. Playback(custom/test1)                     [pbx_config]
  2955.                     3. Hangup()                                   [pbx_config]
  2956.   '81' =>           1. Answer()                                   [pbx_config]
  2957.                     2. Playback(custom/test2)                     [pbx_config]
  2958.                     3. Hangup()                                   [pbx_config]
  2959.   '82' =>           1. Answer()                                   [pbx_config]
  2960.                     2. Playback(custom/test3)                     [pbx_config]
  2961.                     3. Hangup()                                   [pbx_config]
  2962.   '83' =>           1. Answer()                                   [pbx_config]
  2963.                     2. Playback(custom/test4)                     [pbx_config]
  2964.                     3. Hangup()                                   [pbx_config]
  2965.   '84' =>           1. Answer()                                   [pbx_config]
  2966.                     2. Playback(custom/test5)                     [pbx_config]
  2967.                     3. Hangup()                                   [pbx_config]
  2968.   '85' =>           1. Answer()                                   [pbx_config]
  2969.                     2. Playback(custom/testops)                   [pbx_config]
  2970.                     3. Hangup()                                   [pbx_config]
  2971.   Include =>        'play-system-recording-custom'                [pbx_config]
  2972.  
  2973. [ Context 'macro-agent-del' created by 'pbx_config' ]
  2974.   's' =>            1. Wait(1)                                    [pbx_config]
  2975.                     2. Set(QUEUENO=${ARG1})                       [pbx_config]
  2976.                     3. Macro(user-callerid,SKIPTTL)               [pbx_config]
  2977.      [a3]           4. Read(CALLBACKNUM,agent-logoff,,,,)         [pbx_config]
  2978.                     5. GotoIf($[${LEN(${CALLBACKNUM})}=0]?a5:a7)  [pbx_config]
  2979.      [a5]           6. Set(CALLBACKNUM=${IF($[${LEN(${AMPUSER})}=0]?${CALLERID(number)}:${AMPUSER})}) [pbx_config]
  2980.                     7. GotoIf($["${CALLBACKNUM}" = ""]?a3)        [pbx_config]
  2981.                     8. Set(STATE=NOT_INUSE)                       [pbx_config]
  2982.                     9. Gosub(app-queue-toggle,sstate,1())         [pbx_config]
  2983.      [a7]           10. RemoveQueueMember(${QUEUENO},Local/${CALLBACKNUM}@from-queue/n) [pbx_config]
  2984.                     11. RemoveQueueMember(${QUEUENO},Local/${CALLBACKNUM}@from-internal/n) [pbx_config]
  2985.                     12. UserEvent(RefreshQueue)                   [pbx_config]
  2986.                     13. Wait(1)                                   [pbx_config]
  2987.                     14. Playback(agent-loggedoff)                 [pbx_config]
  2988.                     15. Hangup()                                  [pbx_config]
  2989.   Include =>        'macro-agent-del-custom'                      [pbx_config]
  2990.  
  2991. [ Context 'macro-agent-add' created by 'pbx_config' ]
  2992.   'en' =>           1. Playback(agent-loginok&with&extension)     [pbx_config]
  2993.                     2. SayDigits(${CALLBACKNUM})                  [pbx_config]
  2994.                     3. Return()                                   [pbx_config]
  2995.   'ja' =>           1. Playback(extension)                        [pbx_config]
  2996.                     2. SayDigits(${CALLBACKNUM})                  [pbx_config]
  2997.                     3. Playback(jp-kara&agent-loginok)            [pbx_config]
  2998.                     4. Return()                                   [pbx_config]
  2999.   'lang-playback' => 1. GosubIf($[${DIALPLAN_EXISTS(macro-agent-add,${CHANNEL(language)})}]?macro-agent-add,${CHANNEL(language)},${ARG1}():macro-agent-add,en,${ARG1}()) [pbx_config]
  3000.                     2. Return()                                   [pbx_config]
  3001.   's' =>            1. Wait(1)                                    [pbx_config]
  3002.                     2. Set(QUEUENO=${ARG1})                       [pbx_config]
  3003.                     3. Macro(user-callerid,SKIPTTL)               [pbx_config]
  3004.      [a3]           4. Read(CALLBACKNUM,agent-login,,,,)          [pbx_config]
  3005.                     5. GotoIf($[${LEN(${CALLBACKNUM})}=0]?a5:a7)  [pbx_config]
  3006.      [a5]           6. Set(CALLBACKNUM=${IF($[${LEN(${AMPUSER})}=0]?${CALLERID(number)}:${AMPUSER})}) [pbx_config]
  3007.                     7. Set(THISDEVICE=${DB(DEVICE/${REALCALLERIDNUM}/dial)}) [pbx_config]
  3008.                     8. GotoIf($["${CALLBACKNUM}" = ""]?a3)        [pbx_config]
  3009.      [a7]           9. GotoIf($["${CALLBACKNUM}" = "${QUEUENO}"]?invalid) [pbx_config]
  3010.                     10. GotoIf($["${ARG3}" = "EXTEN" & ${DB_EXISTS(AMPUSER/${CALLBACKNUM}/cidname)} = 0]?invalid) [pbx_config]
  3011.                     11. GotoIf($["${DB(QPENALTY/${QUEUENO}/dynmemberonly)}" = "yes" & ${DB_EXISTS(QPENALTY/${QUEUENO}/agents/${CALLBACKNUM})} != 1]?invalid) [pbx_config]
  3012.                     12. ExecIf($["${QREGEX}" != ""]?GotoIf($["${REGEX("${QREGEX}" ${CALLBACKNUM})}" = "0"]?invalid)) [pbx_config]
  3013.                     13. ExecIf($["${ARG2}" != ""]?Authenticate(${ARG2})) [pbx_config]
  3014.                     14. Set(STATE=INUSE)                          [pbx_config]
  3015.                     15. Gosub(app-queue-toggle,sstate,1())        [pbx_config]
  3016.                     16. ExecIf($[${DB_EXISTS(AMPUSER/${CALLBACKNUM}/cidname)} = 1 & "${DB(AMPUSER/${CALLBACKNUM}/queues/qnostate)}" != "ignorestate"]?AddQueueMember(${QUEUENO},Local/${CALLBACKNUM}@from-queue/n,${DB(QPENALTY/${QUEUENO}/agents/${CALLBACKNUM})},,${DB(AMPUSER/${ [pbx_config]
  3017.                     17. ExecIf($[${DB_EXISTS(AMPUSER/${CALLBACKNUM}/cidname)} = 1 & "${DB(AMPUSER/${CALLBACKNUM}/queues/qnostate)}" = "ignorestate"]?AddQueueMember(${QUEUENO},Local/${CALLBACKNUM}@from-queue/n,${DB(QPENALTY/${QUEUENO}/agents/${CALLBACKNUM})},,${DB(AMPUSER/${C [pbx_config]
  3018.                     18. ExecIf($[${DB_EXISTS(AMPUSER/${CALLBACKNUM}/cidname)} = 0]?AddQueueMember(${QUEUENO},Local/${CALLBACKNUM}@from-queue/n,${DB(QPENALTY/${QUEUENO}/agents/${CALLBACKNUM})})) [pbx_config]
  3019.                     19. UserEvent(Agentlogin,Agent: ${CALLBACKNUM}) [pbx_config]
  3020.                     20. Wait(1)                                   [pbx_config]
  3021.                     21. Gosub(macro-agent-add,lang-playback,1(hook_0)) [pbx_config]
  3022.                     22. Hangup()                                  [pbx_config]
  3023.                     23. MacroExit()                               [pbx_config]
  3024.      [invalid]      24. Playback(pbx-invalid)                     [pbx_config]
  3025.                     25. Goto(a3)                                  [pbx_config]
  3026.   Include =>        'macro-agent-add-custom'                      [pbx_config]
  3027.  
  3028. [ Context 'from-queue-exten-only' created by 'pbx_config' ]
  3029.   'h' =>            1. Macro(hangupcall,)                         [pbx_config]
  3030.   '_XXXXX' =>       1. GotoIf($[${DB_EXISTS(AMPUSER/${EXTEN}/cidnum)} = 0]?from-queue-exten-only-x,${EXTEN},1) [pbx_config]
  3031.                     2. Set(RingGroupMethod=none)                  [pbx_config]
  3032.                     3. Set(QDOPTS=${IF($["${CALLER_DEST}"!=""]?g)}${IF($["${AGENT_DEST}"!=""]?F(${AGENT_DEST}))}) [pbx_config]
  3033.      [checkrecord]  4. Set(CALLTYPE_OVERRIDE=external)            [pbx_config]
  3034.                     5. ExecIf($[!${LEN(${FROMEXTEN})}]?Set(FROMEXTEN=${IF(${LEN(${NODEST})}?${NODEST}:external)})) [pbx_config]
  3035.                     6. Gosub(sub-record-check,s,1(exten,${EXTEN},)) [pbx_config]
  3036.                     7. Macro(dial-one,,${DIAL_OPTIONS}${QDOPTS},${EXTEN}) [pbx_config]
  3037.                     8. GotoIf($["${CALLER_DEST}"!=""&&"${DIALSTATUS}"="ANSWER"]?${CUT(CALLER_DEST,^,1)},${CUT(CALLER_DEST,^,2)},${CUT(CALLER_DEST,^,3)}) [pbx_config]
  3038.                     9. Hangup()                                   [pbx_config]
  3039.   '_XXXX' =>        1. GotoIf($[${DB_EXISTS(AMPUSER/${EXTEN}/cidnum)} = 0]?from-queue-exten-only-x,${EXTEN},1) [pbx_config]
  3040.                     2. Set(RingGroupMethod=none)                  [pbx_config]
  3041.                     3. Set(QDOPTS=${IF($["${CALLER_DEST}"!=""]?g)}${IF($["${AGENT_DEST}"!=""]?F(${AGENT_DEST}))}) [pbx_config]
  3042.      [checkrecord]  4. Set(CALLTYPE_OVERRIDE=external)            [pbx_config]
  3043.                     5. ExecIf($[!${LEN(${FROMEXTEN})}]?Set(FROMEXTEN=${IF(${LEN(${NODEST})}?${NODEST}:external)})) [pbx_config]
  3044.                     6. Gosub(sub-record-check,s,1(exten,${EXTEN},)) [pbx_config]
  3045.                     7. Macro(dial-one,,${DIAL_OPTIONS}${QDOPTS},${EXTEN}) [pbx_config]
  3046.                     8. GotoIf($["${CALLER_DEST}"!=""&&"${DIALSTATUS}"="ANSWER"]?${CUT(CALLER_DEST,^,1)},${CUT(CALLER_DEST,^,2)},${CUT(CALLER_DEST,^,3)}) [pbx_config]
  3047.                     9. Hangup()                                   [pbx_config]
  3048.   '_XXX' =>         1. GotoIf($[${DB_EXISTS(AMPUSER/${EXTEN}/cidnum)} = 0]?from-queue-exten-only-x,${EXTEN},1) [pbx_config]
  3049.                     2. Set(RingGroupMethod=none)                  [pbx_config]
  3050.                     3. Set(QDOPTS=${IF($["${CALLER_DEST}"!=""]?g)}${IF($["${AGENT_DEST}"!=""]?F(${AGENT_DEST}))}) [pbx_config]
  3051.      [checkrecord]  4. Set(CALLTYPE_OVERRIDE=external)            [pbx_config]
  3052.                     5. ExecIf($[!${LEN(${FROMEXTEN})}]?Set(FROMEXTEN=${IF(${LEN(${NODEST})}?${NODEST}:external)})) [pbx_config]
  3053.                     6. Gosub(sub-record-check,s,1(exten,${EXTEN},)) [pbx_config]
  3054.                     7. Macro(dial-one,,${DIAL_OPTIONS}${QDOPTS},${EXTEN}) [pbx_config]
  3055.                     8. GotoIf($["${CALLER_DEST}"!=""&&"${DIALSTATUS}"="ANSWER"]?${CUT(CALLER_DEST,^,1)},${CUT(CALLER_DEST,^,2)},${CUT(CALLER_DEST,^,3)}) [pbx_config]
  3056.                     9. Hangup()                                   [pbx_config]
  3057.   Include =>        'from-queue-exten-only-custom'                [pbx_config]
  3058.  
  3059. [ Context 'from-queue-exten-internal' created by 'pbx_config' ]
  3060.   'foo' =>          1. Noop(bar)                                  [pbx_config]
  3061.   Include =>        'from-queue-exten-internal-custom'            [pbx_config]
  3062.   Include =>        'from-queue-exten-only'                       [pbx_config]
  3063.   Include =>        'from-queue-exten-only-x'                     [pbx_config]
  3064.   Include =>        'from-internal'                               [pbx_config]
  3065.  
  3066. [ Context 'from-queue-exten-only-x' created by 'pbx_config' ]
  3067.   'foo' =>          1. Noop(bar)                                  [pbx_config]
  3068.   Include =>        'from-queue-exten-only-x-custom'              [pbx_config]
  3069.   Include =>        'from-internal'                               [pbx_config]
  3070.  
  3071. [ Context 'app-queue-caller-count' created by 'pbx_config' ]
  3072.   's' =>            1. Answer()                                   [pbx_config]
  3073.                     2. Wait(1)                                    [pbx_config]
  3074.                     3. Set(QUEUES=${ARG1})                        [pbx_config]
  3075.                     4. Set(COUNT=0)                               [pbx_config]
  3076.                     5. Set(LOOPCNT=${FIELDQTY(QUEUES,&)})         [pbx_config]
  3077.                     6. Set(ITER=1)                                [pbx_config]
  3078.      [begin1]       7. Set(QUEUE=${CUT(QUEUES,&,${ITER})})        [pbx_config]
  3079.                     8. Set(COUNT=$[${COUNT} + ${QUEUE_WAITING_COUNT(${QUEUE})}]) [pbx_config]
  3080.      [end1]         9. Set(ITER=$[${ITER} + 1])                   [pbx_config]
  3081.                     10. GotoIf($[${ITER} <= ${LOOPCNT}]?begin1)   [pbx_config]
  3082.                     11. SayNumber(${COUNT},f)                     [pbx_config]
  3083.                     12. Playback(queue-quantity2)                 [pbx_config]
  3084.                     13. Return()                                  [pbx_config]
  3085.   Include =>        'app-queue-caller-count-custom'               [pbx_config]
  3086.  
  3087. [ Context 'from-queue' created by 'pbx_config' ]
  3088.   '10001' =>        1. Goto(from-internal,${QAGENT},1)            [pbx_config]
  3089.   '500' =>          1. Goto(from-queue-exten-only,${QAGENT},1)    [pbx_config]
  3090.   '501' =>          1. Goto(from-internal,${QAGENT},1)            [pbx_config]
  3091.   '502' =>          1. Goto(from-internal,${QAGENT},1)            [pbx_config]
  3092.   '503' =>          1. Goto(from-internal,${QAGENT},1)            [pbx_config]
  3093.   '504' =>          1. Goto(from-internal,${QAGENT},1)            [pbx_config]
  3094.   '_.' =>           1. Set(QAGENT=${EXTEN})                       [pbx_config]
  3095.                     2. Set(__FROMQ=true)                          [pbx_config]
  3096.                     3. Goto(${NODEST},1)                          [pbx_config]
  3097.   Include =>        'from-queue-custom'                           [pbx_config]
  3098.  
  3099. [ Context 'ext-queues' created by 'pbx_config' ]
  3100.   '*45' =>          1. Goto(app-all-queue-toggle,s,start)         [pbx_config]
  3101.   '*4510001' =>     1. Set(QUEUENO=10001)                         [pbx_config]
  3102.                     2. Goto(app-queue-toggle,s,start)             [pbx_config]
  3103.   '*45500' =>       1. Set(QUEUENO=500)                           [pbx_config]
  3104.                     2. Goto(app-queue-toggle,s,start)             [pbx_config]
  3105.   '*45501' =>       1. Set(QUEUENO=501)                           [pbx_config]
  3106.                     2. Goto(app-queue-toggle,s,start)             [pbx_config]
  3107.   '*45502' =>       1. Set(QUEUENO=502)                           [pbx_config]
  3108.                     2. Goto(app-queue-toggle,s,start)             [pbx_config]
  3109.   '*45503' =>       1. Set(QUEUENO=503)                           [pbx_config]
  3110.                     2. Goto(app-queue-toggle,s,start)