| | 1910 | |
|---|
| | 1911 | /* |
|---|
| | 1912 | * macro-vm |
|---|
| | 1913 | */ |
|---|
| | 1914 | |
|---|
| | 1915 | /* |
|---|
| | 1916 | ;------------------------------------------------------------------------ |
|---|
| | 1917 | ; [macro-vm] |
|---|
| | 1918 | ;------------------------------------------------------------------------ |
|---|
| | 1919 | ; CONTEXT: macro-vm |
|---|
| | 1920 | ; PURPOSE: call voicemail system and extend with personal ivr |
|---|
| | 1921 | ; |
|---|
| | 1922 | ; Under normal use, this macro will call the voicemail system with the extension and |
|---|
| | 1923 | ; desired greeting mode of busy, unavailable or as specified with direct voicemail |
|---|
| | 1924 | ; calls (usually unavailable) when entered from destinations. |
|---|
| | 1925 | ; |
|---|
| | 1926 | ; The voicemail system's two greetings have been 'hijacked' as follows to extend the |
|---|
| | 1927 | ; system by giving the option of a private 'ivr' for each voicemail user. The following |
|---|
| | 1928 | ; applies to both the busy and unavailable modes of voicemail and can be applied to one |
|---|
| | 1929 | ; or both, and differently. |
|---|
| | 1930 | ; |
|---|
| | 1931 | ; Global Defaults: |
|---|
| | 1932 | ; |
|---|
| | 1933 | ; The following are default values, used in both busy and unavail modes if no specific |
|---|
| | 1934 | ; values are specified. |
|---|
| | 1935 | ; |
|---|
| | 1936 | ; VMX_REPEAT |
|---|
| | 1937 | ; The number of times to repeat the users message if no option is pressed. |
|---|
| | 1938 | ; VMX_TIMEOUT |
|---|
| | 1939 | ; The timeout to wait after playing message before repeating or giving up. |
|---|
| | 1940 | ; VMX_LOOPS |
|---|
| | 1941 | ; The number of times it should replay the message and check for an option when |
|---|
| | 1942 | ; an invalid option is pressed. |
|---|
| | 1943 | ; |
|---|
| | 1944 | ; VMX_OPTS_DOVM |
|---|
| | 1945 | ; Default voicemail option to use if vm is chosen as an option. No options will |
|---|
| | 1946 | ; cause Allison's generic message, 's' will go straight to beep. |
|---|
| | 1947 | ; VMX_OPTS_TIMEOUT |
|---|
| | 1948 | ; Default voicemail option to use if it times out with no options. No options will |
|---|
| | 1949 | ; cause Allison's generic message, 's' will go straight to beep. |
|---|
| | 1950 | ; IF THE USER PRESSES # - it will look like a timeout as well since no option will |
|---|
| | 1951 | ; be presented. If the user wishes to enable a mode where a caller can press # |
|---|
| | 1952 | ; during their message and it goes straight to voicemail with only a 'beep' then |
|---|
| | 1953 | ; this should be set to 's'. |
|---|
| | 1954 | ; VMX_OPTS_LOOPS |
|---|
| | 1955 | ; Default voicemail option to use if to many wrong options occur. No options will |
|---|
| | 1956 | ; cause Allison's generic message, 's' will go straight to beep. |
|---|
| | 1957 | ; |
|---|
| | 1958 | ; VMX_CONTEXT |
|---|
| | 1959 | ; Default context for user destinations if not supplied in the user's settings |
|---|
| | 1960 | ; VMX_PRI |
|---|
| | 1961 | ; Default priority for user destinations if not supplied in the user's settings |
|---|
| | 1962 | ; |
|---|
| | 1963 | ; VMX_TIMEDEST_CONTEXT |
|---|
| | 1964 | ; Default context for timeout destination if not supplied in the user's settings |
|---|
| | 1965 | ; VMX_TIMEDEST_EXT |
|---|
| | 1966 | ; Default extension for timeout destination if not supplied in the user's settings |
|---|
| | 1967 | ; VMX_TIMEDEST_PRI |
|---|
| | 1968 | ; Default priority for timeout destination if not supplied in the user's settings |
|---|
| | 1969 | ; |
|---|
| | 1970 | ; VMX_LOOPDEST_CONTEXT |
|---|
| | 1971 | ; Default context for loops destination if not supplied in the user's settings |
|---|
| | 1972 | ; VMX_LOOPDEST_EXT |
|---|
| | 1973 | ; Default extension for loops destination if not supplied in the user's settings |
|---|
| | 1974 | ; VMX_LOOPDEST_PRI |
|---|
| | 1975 | ; Default priority for loops destination if not supplied in the user's settings |
|---|
| | 1976 | ; |
|---|
| | 1977 | ; |
|---|
| | 1978 | ; The AMPUSER database variable has been extended with a 'vmx' tree (vm-extension). A |
|---|
| | 1979 | ; duplicate set is included for both unavail and busy. You could choose for to have an |
|---|
| | 1980 | ; ivr when unavail is taken, but not with busy - or a different once with busy. |
|---|
| | 1981 | ; The full list is below, each specific entry is futher described: |
|---|
| | 1982 | ; |
|---|
| | 1983 | ; state: Whether teh current mode is enabled or disabled. Anything but 'enabled' is |
|---|
| | 1984 | ; treated as disabled. |
|---|
| | 1985 | ; repeat: This is the number of times that the users message should be played after the |
|---|
| | 1986 | ; timeout if the user has not entered anything. It is just a variable to the |
|---|
| | 1987 | ; Read() function which will do the repeating. |
|---|
| | 1988 | ; timeout: This is how long to wait after the message has been read for a response from |
|---|
| | 1989 | ; the user. A caller can enter a digit any time during the playback. |
|---|
| | 1990 | ; loops: This is the number of loops that the system will allow a caller to retry if |
|---|
| | 1991 | ; they enter a bad menu choice, before going to the loop failover destination |
|---|
| | 1992 | ; vmxopts: This is the vm options to send to the voicemail command used when a specific |
|---|
| | 1993 | ; voicemail destination is chosen (inidcated by 'dovm' in the ext field). This is |
|---|
| | 1994 | ; typically either set to 's' or left blank. When set to 's' there will be no |
|---|
| | 1995 | ; message played when entering the voicemail, just a beep. When blank, you will |
|---|
| | 1996 | ; have Allison's generic message played. It is not typical to play the greetings |
|---|
| | 1997 | ; since they have been 'hijacked' for these IVR's and from a caller's perspecitive |
|---|
| | 1998 | ; this system appears interconnected with the voicemail so instructions can be |
|---|
| | 1999 | ; left there. |
|---|
| | 2000 | ; timedest: The three variables: ext, context and pri are the goto destination if the caller |
|---|
| | 2001 | ; enters no options and it timesout. None have to be set and a system default |
|---|
| | 2002 | ; will be used. If just ext is set, then defaults will be used for context and |
|---|
| | 2003 | ; pri, etc. |
|---|
| | 2004 | ; loopdest: This is identical to timedest but used if the caller exceeds the maximum invalid |
|---|
| | 2005 | ; menu choices. |
|---|
| | 2006 | ; [0-9*]: The user can specify up to 11 ivr options, all as single digits from 0-9 or *. The |
|---|
| | 2007 | ; # key can not be used since it is used as a terminator key for the Read command |
|---|
| | 2008 | ; and will never be returned. A minimum of the ext must be specified for each valid |
|---|
| | 2009 | ; option and as above, the context and priority can also be specified if the default |
|---|
| | 2010 | ; is not to be used. |
|---|
| | 2011 | ; Option '0' takes on a special meaning. Since a user is able to break out of the |
|---|
| | 2012 | ; voicemail command once entering it with a 0, if specified, the 0 destination will |
|---|
| | 2013 | ; be used. |
|---|
| | 2014 | ; Option '*' can also be used to breakout. It is undecided at this point whether |
|---|
| | 2015 | ; providing that option will be used as well. (probably should). |
|---|
| | 2016 | ; |
|---|
| | 2017 | ; |
|---|
| | 2018 | ; /AMPUSER/<ext>/vmx/[busy|unavail]/state: enabled|disabled |
|---|
| | 2019 | ; /AMPUSER/<ext>/vmx/[busy|unavail]/repeat: n (times to repeat message) |
|---|
| | 2020 | ; /AMPUSER/<ext>/vmx/[busy|unavail]/timeout: n (timeout to wait for digit) |
|---|
| | 2021 | ; /AMPUSER/<ext>/vmx/[busy|unavail]/loops: n (loop returies for invalid entries) |
|---|
| | 2022 | ; /AMPUSER/<ext>/vmx/[busy|unavail]/vmxopts/dovm: vmoptions (if ext is dovm) |
|---|
| | 2023 | ; /AMPUSER/<ext>/vmx/[busy|unavail]/vmxopts/timeout: vmoptions (if timeout) |
|---|
| | 2024 | ; /AMPUSER/<ext>/vmx/[busy|unavail]/vmxopts/loops: vmoptions (if loops) |
|---|
| | 2025 | ; /AMPUSER/<ext>/vmx/[busy|unavail]/timedest/ext: extension (if timeout) |
|---|
| | 2026 | ; /AMPUSER/<ext>/vmx/[busy|unavail]/timedest/context: context (if timeout) |
|---|
| | 2027 | ; /AMPUSER/<ext>/vmx/[busy|unavail]/timedest/pri: priority (if timeout) |
|---|
| | 2028 | ; /AMPUSER/<ext>/vmx/[busy|unavail]/loopdest/ext: extension (if too many failures) |
|---|
| | 2029 | ; /AMPUSER/<ext>/vmx/[busy|unavail]/loopdest/context: context (if too many failures) |
|---|
| | 2030 | ; /AMPUSER/<ext>/vmx/[busy|unavail]/loopdest/pri: priority (if too many failures) |
|---|
| | 2031 | ; /AMPUSER/<ext>/vmx/[busy|unavail]/[0-9*]/ext: extension (dovm for vm access) |
|---|
| | 2032 | ; /AMPUSER/<ext>/vmx/[busy|unavail]/[0-9*]/context: context |
|---|
| | 2033 | ; /AMPUSER/<ext>/vmx/[busy|unavail]/[0-9*]/pri: priority |
|---|
| | 2034 | ;------------------------------------------------------------------------ |
|---|
| | 2035 | |
|---|
| | 2036 | */ |
|---|
| | 2037 | // ARG1 - extension |
|---|
| | 2038 | // ARG2 - DIRECTDIAL/BUSY |
|---|
| | 2039 | // ARG3 - RETURN makes macro return, otherwise hangup |
|---|
| | 2040 | //exten => s,1,Macro(user-callerid,SKIPTTL) |
|---|
| | 2041 | $ext->add('macro-vm', 's', '', new ext_macro('user-callerid', 'SKIPTTL')); |
|---|
| | 2042 | //exten => s,n,Set(VMGAIN=${IF($["foo${VM_GAIN}"!="foo"]?"g(${VM_GAIN})":"")}) |
|---|
| | 2043 | $ext->add('macro-vm','s', '', new ext_setvar("VMGAIN", '${IF($["foo${VM_GAIN}"!="foo"]?"g(${VM_GAIN})":"")}')); |
|---|
| | 2044 | // If BLKVM_OVERRIDE is set, then someone told us to block calls from going to |
|---|
| | 2045 | // voicemail. This variable is reset by the answering channel so subsequent |
|---|
| | 2046 | // transfers will properly function. |
|---|
| | 2047 | |
|---|
| | 2048 | //exten => s,n,GotoIf($["foo${DB(${BLKVM_OVERRIDE})}" != "fooTRUE"]?vmx,1) |
|---|
| | 2049 | $ext->add('macro-vm','s', '', new ext_gotoif('$["foo${DB(${BLKVM_OVERRIDE})}" != "fooTRUE"]','vmx,1')); |
|---|
| | 2050 | |
|---|
| | 2051 | // we didn't branch so block this from voicemail |
|---|
| | 2052 | |
|---|
| | 2053 | //exten => s,n,Noop(CAME FROM: ${NODEST} - Blocking VM cause of key: ${DB(BLKVM_OVERRIDE)}) |
|---|
| | 2054 | $ext->add('macro-vm','s', '', new ext_NoOp('CAME FROM: ${NODEST} - Blocking VM cause of key: ${DB(BLKVM_OVERRIDE)}')); |
|---|
| | 2055 | //exten => s,n,Hangup |
|---|
| | 2056 | $ext->add('macro-vm','s', '', new ext_hangup('')); |
|---|
| | 2057 | // If vmx not enabled for the current mode,then jump to normal voicemail behavior |
|---|
| | 2058 | // also - if not message (no-msg) is requested, straight to voicemail |
|---|
| | 2059 | |
|---|
| | 2060 | //exten => vmx,1,GotoIf($["${ARG2}"="NOMESSAGE"]?s-${ARG2},1) |
|---|
| | 2061 | $ext->add('macro-vm','vmx', '', new ext_gotoif('$["${ARG2}"="NOMESSAGE"]','s-${ARG2},1')); |
|---|
| | 2062 | //exten => vmx,n,Set(MODE=${IF($["${ARG2}"="BUSY"]?busy:unavail)}) |
|---|
| | 2063 | $ext->add('macro-vm','vmx', '', new ext_setvar("MODE", '${IF($["${ARG2}"="BUSY"]?busy:unavail)}')); |
|---|
| | 2064 | //exten => vmx,n,GotoIf($["${ARG2}" != "DIRECTDIAL"]?notdirect) |
|---|
| | 2065 | $ext->add('macro-vm','vmx', '', new ext_gotoif('$["${ARG2}" != "DIRECTDIAL"]','notdirect')); |
|---|
| | 2066 | //exten => vmx,n,Set(MODE=${IF($["${REGEX("[b]" ${VM_DDTYPE})}" = "1"]?busy:${MODE})}) |
|---|
| | 2067 | $ext->add('macro-vm','vmx', '', new ext_setvar("MODE", '${IF($["${REGEX("[b]" ${VM_DDTYPE})}" = "1"]?busy:${MODE})}')); |
|---|
| | 2068 | //exten => vmx,n(notdirect),Noop(Checking if ext ${ARG1} is enabled: ${DB(AMPUSER/${ARG1}/vmx/${MODE}/state)}) |
|---|
| | 2069 | $ext->add('macro-vm','vmx', 'notdirect', new ext_NoOp('Checking if ext ${ARG1} is enabled: ${DB(AMPUSER/${ARG1}/vmx/${MODE}/state)}')); |
|---|
| | 2070 | //exten => vmx,n,GotoIf($["${DB(AMPUSER/${ARG1}/vmx/${MODE}/state)}" != "enabled"]?s-${ARG2},1) |
|---|
| | 2071 | $ext->add('macro-vm','vmx', '', new ext_gotoif('$["${DB(AMPUSER/${ARG1}/vmx/${MODE}/state)}" != "enabled"]','s-${ARG2},1')); |
|---|
| | 2072 | // If the required voicemail file does not exist, then abort and go to normal voicemail behavior |
|---|
| | 2073 | // |
|---|
| | 2074 | // TODO: there have been errors using System() with jump to 101 where asterisk works fine at the begining and |
|---|
| | 2075 | // then starts to jump to 101 even on success. This new mode is being tried with the SYSTEM Status which |
|---|
| | 2076 | // returns SUCCESS when the command returned succcessfully with a 0 app return code. |
|---|
| | 2077 | // |
|---|
| | 2078 | //exten => vmx,n,Macro(get-vmcontext,${ARG1}) |
|---|
| | 2079 | $ext->add('macro-vm', 'vmx', '', new ext_macro('get-vmcontext', '${ARG1}')); |
|---|
| | 2080 | //;exten => vmx,n,TrySystem(/bin/ls ${ASTSPOOLDIR}/voicemail/${VMCONTEXT}/${ARG1}/${MODE}.[wW][aA][vV]) |
|---|
| | 2081 | //$ext->add('macro-vm', 'vmx', '', new ext_trysystem('/bin/ls ${ASTSPOOLDIR}/voicemail/${VMCONTEXT}/${ARG1}/${MODE}.[wW][aA][vV]')); |
|---|
| | 2082 | //exten => vmx,n,AGI(checksound.agi,${ASTSPOOLDIR}/voicemail/${VMCONTEXT}/${ARG1}/temp) |
|---|
| | 2083 | $ext->add('macro-vm', 'vmx', '',new ext_agi('checksound.agi,${ASTSPOOLDIR}/voicemail/${VMCONTEXT}/${ARG1}/temp')); |
|---|
| | 2084 | //exten => vmx,n,GotoIf($["${SYSTEMSTATUS}" = "SUCCESS"]?tmpgreet) |
|---|
| | 2085 | $ext->add('macro-vm','vmx', '', new ext_gotoif('$["${SYSTEMSTATUS}" = "SUCCESS"]','tmpgreet')); |
|---|
| | 2086 | //exten => vmx,n,AGI(checksound.agi,${ASTSPOOLDIR}/voicemail/${VMCONTEXT}/${ARG1}/${MODE}) |
|---|
| | 2087 | $ext->add('macro-vm', 'vmx', '',new ext_agi('checksound.agi,${ASTSPOOLDIR}/voicemail/${VMCONTEXT}/${ARG1}/${MODE}')); |
|---|
| | 2088 | //exten => vmx,n,GotoIf($["${SYSTEMSTATUS}" != "SUCCESS"]?nofile) |
|---|
| | 2089 | $ext->add('macro-vm','vmx', '', new ext_gotoif('$["${SYSTEMSTATUS}" != "SUCCESS"]','nofile')); |
|---|
| | 2090 | // Get the repeat, timeout and loop times to use if they are overriden form the global settings |
|---|
| | 2091 | |
|---|
| | 2092 | //exten => vmx,n,Set(LOOPCOUNT=0) |
|---|
| | 2093 | $ext->add('macro-vm','vmx', '', new ext_setvar("LOOPCOUNT", '0')); |
|---|
| | 2094 | //exten => vmx,n,GotoIf($["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/repeat)}" = "0"]?vmxtime) |
|---|
| | 2095 | $ext->add('macro-vm','vmx', '', new ext_gotoif('$["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/repeat)}" = "0"]','vmxtime')); |
|---|
| | 2096 | //exten => vmx,n,Set(VMX_REPEAT=${DB_RESULT}) |
|---|
| | 2097 | $ext->add('macro-vm','vmx', '', new ext_setvar("VMX_REPEAT", '${DB_RESULT}')); |
|---|
| | 2098 | //exten => vmx,n(vmxtime),GotoIf($["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/timeout)}" = "0"]?vmxloops) |
|---|
| | 2099 | $ext->add('macro-vm','vmx', 'vmxtime', new ext_gotoif('$["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/timeout)}" = "0"]','vmxloops')); |
|---|
| | 2100 | //exten => vmx,n,Set(VMX_TIMEOUT=${DB_RESULT}) |
|---|
| | 2101 | $ext->add('macro-vm','vmx', '', new ext_setvar("VMX_TIMEOUT", '${DB_RESULT}')); |
|---|
| | 2102 | //exten => vmx,n(vmxloops),GotoIf($["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/loops)}" = "0"]?vmxanswer) |
|---|
| | 2103 | $ext->add('macro-vm','vmx', 'vmxloops', new ext_gotoif('$["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/loops)}" = "0"]','vmxanswer')); |
|---|
| | 2104 | //exten => vmx,n,Set(VMX_LOOPS=${DB_RESULT}) |
|---|
| | 2105 | $ext->add('macro-vm','vmx', '', new ext_setvar("VMX_LOOPS", '${DB_RESULT}')); |
|---|
| | 2106 | //exten => vmx,n(vmxanswer),Answer() |
|---|
| | 2107 | $ext->add('macro-vm','vmx','vmxanswer',new ext_answer('')); |
|---|
| | 2108 | |
|---|
| | 2109 | // Now play the users voicemail recording as the basis for their ivr, the Read command will repeat as needed and if it timesout |
|---|
| | 2110 | // then we go to the timeout. Otherwise handle invalid options by looping until the limit until a valid option is played. |
|---|
| | 2111 | |
|---|
| | 2112 | //exten => vmx,n(loopstart),Read(ACTION,${ASTSPOOLDIR}/voicemail/${VMCONTEXT}/${ARG1}/${MODE},1,skip,${VMX_REPEAT},${VMX_TIMEOUT}) |
|---|
| | 2113 | $ext->add('macro-vm','vmx','loopstart',new ext_read('ACTION', '${ASTSPOOLDIR}/voicemail/${VMCONTEXT}/${ARG1}/${MODE}', 1, 'skip', '${VMX_REPEAT}', '${VMX_TIMEOUT}')); |
|---|
| | 2114 | //exten => vmx,n,GotoIf($["${EXISTS(${ACTION})}" = "1"]?checkopt) |
|---|
| | 2115 | $ext->add('macro-vm','vmx', '', new ext_gotoif('$["${EXISTS(${ACTION})}" = "1"]','checkopt')); |
|---|
| | 2116 | // If we are here we timed out, go to the required destination |
|---|
| | 2117 | |
|---|
| | 2118 | //exten => vmx,n(noopt),Noop(Timeout: going to timeout dest) |
|---|
| | 2119 | $ext->add('macro-vm','vmx', 'noopt', new ext_NoOp('Timeout: going to timeout dest')); |
|---|
| | 2120 | //exten => vmx,n,Set(VMX_OPTS=${VMX_OPTS_TIMEOUT}) |
|---|
| | 2121 | $ext->add('macro-vm','vmx', '', new ext_setvar("VMX_OPTS", '${VMX_OPTS_TIMEOUT}')); |
|---|
| | 2122 | //exten => vmx,n,GotoIf($["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/vmxopts/timeout)}" = "0"]?chktime) |
|---|
| | 2123 | $ext->add('macro-vm','vmx', '', new ext_gotoif('$["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/vmxopts/timeout)}" = "0"]','chktime')); |
|---|
| | 2124 | //exten => vmx,n,Set(VMX_OPTS=${DB_RESULT}) |
|---|
| | 2125 | $ext->add('macro-vm','vmx', '', new ext_setvar("VMX_OPTS", '${DB_RESULT}')); |
|---|
| | 2126 | //exten => vmx,n(chktime),GotoIf($["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/timedest/ext)}" = "0"]?dotime) |
|---|
| | 2127 | $ext->add('macro-vm','vmx', 'chktime', new ext_gotoif('$["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/timedest/ext)}" = "0"]','dotime')); |
|---|
| | 2128 | //exten => vmx,n,Set(VMX_TIMEDEST_EXT=${DB_RESULT}) |
|---|
| | 2129 | $ext->add('macro-vm','vmx', '', new ext_setvar("VMX_TIMEDEST_EXT",'${DB_RESULT}')); |
|---|
| | 2130 | //exten => vmx,n,GotoIf($["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/timedest/context)}" = "0"]?timepri) |
|---|
| | 2131 | $ext->add('macro-vm','vmx', '', new ext_gotoif('$["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/timedest/context)}" = "0"]','timepri')); |
|---|
| | 2132 | //exten => vmx,n,Set(VMX_TIMEDEST_CONTEXT=${DB_RESULT}) |
|---|
| | 2133 | $ext->add('macro-vm','vmx', '', new ext_setvar("VMX_TIMEDEST_CONTEXT",'${DB_RESULT}')); |
|---|
| | 2134 | //exten => vmx,n(timepri),GotoIf($["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/timedest/pri)}" = "0"]?dotime) |
|---|
| | 2135 | $ext->add('macro-vm','vmx', 'timepri', new ext_gotoif('$["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/timedest/pri)}" = "0"]','dotime')); |
|---|
| | 2136 | //exten => vmx,n,Set(VMX_TIMEDEST_PRI=${DB_RESULT}) |
|---|
| | 2137 | $ext->add('macro-vm','vmx', '', new ext_setvar("VMX_TIMEDEST_PRI",'${DB_RESULT}')); |
|---|
| | 2138 | //exten => vmx,n(dotime),Goto(${VMX_TIMEDEST_CONTEXT},${VMX_TIMEDEST_EXT},${VMX_TIMEDEST_PRI}) |
|---|
| | 2139 | $ext->add('macro-vm','vmx','dotime',new ext_goto('${VMX_TIMEDEST_PRI}', '${VMX_TIMEDEST_EXT}', '${VMX_TIMEDEST_CONTEXT}')); |
|---|
| | 2140 | // We got an option, check if the option is defined, or one of the system defaults |
|---|
| | 2141 | |
|---|
| | 2142 | //exten => vmx,n(checkopt),GotoIf($["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/${ACTION}/ext)}" = "1"]?doopt) |
|---|
| | 2143 | $ext->add('macro-vm','vmx', 'checkopt', new ext_gotoif('$["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/${ACTION}/ext)}" = "1"]','doopt')); |
|---|
| | 2144 | //exten => vmx,n,GotoIf($["${ACTION}" = "0"]?o,1) |
|---|
| | 2145 | $ext->add('macro-vm','vmx', '', new ext_gotoif('$["${ACTION}" = "0"]','o,1')); |
|---|
| | 2146 | //exten => vmx,n,GotoIf($["${ACTION}" = "*"]?adef,1) |
|---|
| | 2147 | $ext->add('macro-vm','vmx', '', new ext_gotoif('$["${ACTION}" = "*"]','adef,1')); |
|---|
| | 2148 | // Got invalid option loop until the max |
|---|
| | 2149 | |
|---|
| | 2150 | //exten => vmx,n,Set(LOOPCOUNT=$[${LOOPCOUNT} + 1]) |
|---|
| | 2151 | $ext->add('macro-vm','vmx', '', new ext_setvar("LOOPCOUNT",'$[${LOOPCOUNT} + 1]')); |
|---|
| | 2152 | //exten => vmx,n,GotoIf($[${LOOPCOUNT} > ${VMX_LOOPS}]?toomany) |
|---|
| | 2153 | $ext->add('macro-vm','vmx', '', new ext_gotoif('$[${LOOPCOUNT} > ${VMX_LOOPS}]','toomany')); |
|---|
| | 2154 | //exten => vmx,n,Playback(pm-invalid-option&please-try-again) |
|---|
| | 2155 | $ext->add('macro-vm','vmx','',new ext_playback('pm-invalid-option&please-try-again')); |
|---|
| | 2156 | //exten => vmx,n,Goto(loopstart) |
|---|
| | 2157 | $ext->add('macro-vm','vmx','',new ext_goto('loopstart')); |
|---|
| | 2158 | // tomany: to many invalid options, go to the specified destination |
|---|
| | 2159 | |
|---|
| | 2160 | //exten => vmx,n(toomany),Noop(Too Many invalid entries, got to invalid dest) |
|---|
| | 2161 | $ext->add('macro-vm','vmx', 'toomany', new ext_NoOp('Too Many invalid entries, got to invalid dest')); |
|---|
| | 2162 | //exten => vmx,n,Set(VMX_OPTS=${VMX_OPTS_LOOPS}) |
|---|
| | 2163 | $ext->add('macro-vm','vmx', '', new ext_setvar("VMX_OPTS",'${VMX_OPTS_LOOPS}')); |
|---|
| | 2164 | //exten => vmx,n,GotoIf($["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/vmxopts/loops)}" = "0"]?chkloop) |
|---|
| | 2165 | $ext->add('macro-vm','vmx', '', new ext_gotoif('$["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/vmxopts/loops)}" = "0"]','chkloop')); |
|---|
| | 2166 | //exten => vmx,n,Set(VMX_OPTS=${DB_RESULT}) |
|---|
| | 2167 | $ext->add('macro-vm','vmx', '', new ext_setvar("VMX_OPTS",'${DB_RESULT}')); |
|---|
| | 2168 | //exten => vmx,n(chkloop),GotoIf($["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/loopdest/ext)}" = "0"]?doloop) |
|---|
| | 2169 | $ext->add('macro-vm','vmx', 'chkloop', new ext_gotoif('$["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/loopdest/ext)}" = "0"]','doloop')); |
|---|
| | 2170 | //exten => vmx,n,Set(VMX_LOOPDEST_EXT=${DB_RESULT}) |
|---|
| | 2171 | $ext->add('macro-vm','vmx', '', new ext_setvar("VMX_LOOPDEST_EXT",'${DB_RESULT}')); |
|---|
| | 2172 | //exten => vmx,n,GotoIf($["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/loopdest/context)}" = "0"]?looppri) |
|---|
| | 2173 | $ext->add('macro-vm','vmx', '', new ext_gotoif('$["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/loopdest/context)}" = "0"]','looppri')); |
|---|
| | 2174 | //exten => vmx,n,Set(VMX_LOOPDEST_CONTEXT=${DB_RESULT}) ;TODO make configurable per above |
|---|
| | 2175 | $ext->add('macro-vm','vmx', '', new ext_setvar("VMX_LOOPDEST_CONTEXT",'${DB_RESULT}')); |
|---|
| | 2176 | //exten => vmx,n(looppri),GotoIf($["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/loopdest/pri)}" = "0"]?doloop) |
|---|
| | 2177 | $ext->add('macro-vm','vmx', 'looppri', new ext_gotoif('$["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/loopdest/pri)}" = "0"]','doloop')); |
|---|
| | 2178 | //exten => vmx,n,Set(VMX_LOOPDEST_PRI=${DB_RESULT}) ;TODO make configurable per above |
|---|
| | 2179 | $ext->add('macro-vm','vmx', '', new ext_setvar("VMX_LOOPDEST_PRI",'${DB_RESULT}')); |
|---|
| | 2180 | //exten => vmx,n(doloop),Goto(${VMX_LOOPDEST_CONTEXT},${VMX_LOOPDEST_EXT},${VMX_LOOPDEST_PRI}) |
|---|
| | 2181 | $ext->add('macro-vm','vmx','doloop',new ext_goto('${VMX_LOOPDEST_PRI}','${VMX_LOOPDEST_EXT}','${VMX_LOOPDEST_CONTEXT}')); |
|---|
| | 2182 | // doopt: execute the valid option that was chosen |
|---|
| | 2183 | |
|---|
| | 2184 | //exten => vmx,n(doopt),Noop(Got a valid option: ${DB_RESULT}) |
|---|
| | 2185 | $ext->add('macro-vm','vmx', 'doopt', new ext_NoOp('Got a valid option: ${DB_RESULT}')); |
|---|
| | 2186 | //exten => vmx,n,Set(VMX_EXT=${DB_RESULT}) |
|---|
| | 2187 | $ext->add('macro-vm','vmx', '', new ext_setvar("VMX_EXT",'${DB_RESULT}')); |
|---|
| | 2188 | |
|---|
| | 2189 | // Special case, if this option was to go to voicemail, set options and go |
|---|
| | 2190 | |
|---|
| | 2191 | //exten => vmx,n,GotoIf($["${VMX_EXT}" != "dovm"]?getdest) |
|---|
| | 2192 | $ext->add('macro-vm','vmx', '', new ext_gotoif('$["${VMX_EXT}" != "dovm"]','getdest')); |
|---|
| | 2193 | //exten => vmx,n(vmxopts),Set(VMX_OPTS=${VMX_OPTS_DOVM}) |
|---|
| | 2194 | $ext->add('macro-vm','vmx', 'vmxopts', new ext_setvar("VMX_OPTS",'${VMX_OPTS_DOVM}')); |
|---|
| | 2195 | //exten => vmx,n,GotoIf($["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/vmxopts/dovm)}" = "0"]?vmxdovm) |
|---|
| | 2196 | $ext->add('macro-vm','vmx', '', new ext_gotoif('$["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/vmxopts/dovm)}" = "0"]','vmxdovm')); |
|---|
| | 2197 | //exten => vmx,n(vmxopts),Set(VMX_OPTS=${DB_RESULT}) |
|---|
| | 2198 | $ext->add('macro-vm','vmx', 'vmxopts', new ext_setvar("VMX_OPTS",'${DB_RESULT}')); |
|---|
| | 2199 | //exten => vmx,n(vmxdovm),goto(dovm,1) |
|---|
| | 2200 | $ext->add('macro-vm','vmx','vmxdovm',new ext_goto('1','dovm')); |
|---|
| | 2201 | |
|---|
| | 2202 | // General case, setup the goto destination and go there (no error checking, its up to the GUI's to assure |
|---|
| | 2203 | // reasonable values |
|---|
| | 2204 | |
|---|
| | 2205 | //exten => vmx,n(getdest),GotoIf($["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/${ACTION}/context)}" = "0"]?vmxpri) |
|---|
| | 2206 | $ext->add('macro-vm','vmx', 'getdest', new ext_gotoif('$["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/${ACTION}/context)}" = "0"]','vmxpri')); |
|---|
| | 2207 | //exten => vmx,n,Set(VMX_CONTEXT=${DB_RESULT}) |
|---|
| | 2208 | $ext->add('macro-vm','vmx', '', new ext_setvar("VMX_CONTEXT",'${DB_RESULT}')); |
|---|
| | 2209 | //exten => vmx,n(vmxpri),GotoIf($["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/${ACTION}/pri)}" = "0"]?vmxgoto) |
|---|
| | 2210 | $ext->add('macro-vm','vmx', 'vmxpri', new ext_gotoif('$["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/${ACTION}/pri)}" = "0"]','vmxgoto')); |
|---|
| | 2211 | //exten => vmx,n,Set(VMX_PRI=${DB_RESULT}) |
|---|
| | 2212 | $ext->add('macro-vm','vmx', '', new ext_setvar("VMX_PRI",'${DB_RESULT}')); |
|---|
| | 2213 | //exten => vmx,n(vmxgoto),Goto(${VMX_CONTEXT},${VMX_EXT},${VMX_PRI}) |
|---|
| | 2214 | $ext->add('macro-vm','vmx','vmxgoto',new ext_goto('${VMX_PRI}','${VMX_EXT}','${VMX_CONTEXT}')); |
|---|
| | 2215 | // If the required voicemail file is not present, then revert to normal voicemail |
|---|
| | 2216 | // behavior treating as if it was not set |
|---|
| | 2217 | |
|---|
| | 2218 | //exten => vmx,n(nofile),Noop(File for mode: ${MODE} does not exist, SYSTEMSTATUS: ${SYSTEMSTATUS}, going to normal voicemail) |
|---|
| | 2219 | $ext->add('macro-vm','vmx', 'nofile', new ext_NoOp('File for mode: ${MODE} does not exist, SYSTEMSTATUS: ${SYSTEMSTATUS}, going to normal voicemail')); |
|---|
| | 2220 | //exten => vmx,n,Goto(s-${ARG2},1) |
|---|
| | 2221 | $ext->add('macro-vm','vmx','',new ext_goto('1','s-${ARG2}')); |
|---|
| | 2222 | //exten => vmx,n(tmpgreet),Noop(Temporary Greeting Detected, going to normal voicemail) |
|---|
| | 2223 | $ext->add('macro-vm','vmx', 'tmpgreet', new ext_NoOp('Temporary Greeting Detected, going to normal voicemail')); |
|---|
| | 2224 | //exten => vmx,n,Goto(s-${ARG2},1) |
|---|
| | 2225 | $ext->add('macro-vm','vmx','',new ext_goto('1','s-${ARG2}')); |
|---|
| | 2226 | |
|---|
| | 2227 | // Drop into voicemail either as a direct destination (in which case VMX_OPTS might be set to something) or |
|---|
| | 2228 | // if the user timed out or broke out of the loop then VMX_OPTS is always cleared such that an Allison |
|---|
| | 2229 | // message is played and the caller know's what is going on. |
|---|
| | 2230 | |
|---|
| | 2231 | //exten => dovm,1,Noop(VMX Timeout - go to voicemail) |
|---|
| | 2232 | $ext->add('macro-vm','dovm', '', new ext_NoOp('VMX Timeout - go to voicemail')); |
|---|
| | 2233 | //exten => dovm,n,Voicemail(${ARG1}@${VMCONTEXT},${VMX_OPTS}${VMGAIN}) ; no flags, so allison plays please leave ... |
|---|
| | 2234 | $ext->add('macro-vm','dovm', '',new ext_vm('${ARG1}@${VMCONTEXT},${VMX_OPTS}${VMGAIN}')); |
|---|
| | 2235 | //exten => dovm,n,Goto(exit-${VMSTATUS},1) |
|---|
| | 2236 | $ext->add('macro-vm','dovm', '',new ext_goto('1','exit-${VMSTATUS}')); |
|---|
| | 2237 | |
|---|
| | 2238 | //exten => s-BUSY,1,NoOp(BUSY voicemail) |
|---|
| | 2239 | $ext->add('macro-vm','s-BUSY','',new ext_NoOp('BUSY voicemail')); |
|---|
| | 2240 | //exten => s-BUSY,n,Macro(get-vmcontext,${ARG1}) |
|---|
| | 2241 | $ext->add('macro-vm','s-BUSY','',new ext_macro('get-vmcontext','${ARG1}')); |
|---|
| | 2242 | //exten => s-BUSY,n,Voicemail(${ARG1}@${VMCONTEXT},${VM_OPTS}b${VMGAIN}) ; Voicemail Busy message |
|---|
| | 2243 | $ext->add('macro-vm','s-BUSY', '',new ext_vm('${ARG1}@${VMCONTEXT},${VM_OPTS}b${VMGAIN}')); |
|---|
| | 2244 | //exten => s-BUSY,n,Goto(exit-${VMSTATUS},1) |
|---|
| | 2245 | $ext->add('macro-vm','s-BUSY', '',new ext_goto('1','exit-${VMSTATUS}')); |
|---|
| | 2246 | |
|---|
| | 2247 | //exten => s-NOMESSAGE,1,NoOp(NOMESSAGE (beeb only) voicemail) |
|---|
| | 2248 | $ext->add('macro-vm','s-NOMESSAGE','',new ext_NoOp('NOMESSAGE (beeb only) voicemail')); |
|---|
| | 2249 | //exten => s-NOMESSAGE,n,Macro(get-vmcontext,${ARG1}) |
|---|
| | 2250 | $ext->add('macro-vm','s-NOMESSAGE','',new ext_macro('get-vmcontext','${ARG1}')); |
|---|
| | 2251 | //exten => s-NOMESSAGE,n,Voicemail(${ARG1}@${VMCONTEXT},s${VM_OPTS}${VMGAIN}) |
|---|
| | 2252 | $ext->add('macro-vm','s-NOMESSAGE','',new ext_vm('${ARG1}@${VMCONTEXT},s${VM_OPTS}${VMGAIN}')); |
|---|
| | 2253 | //exten => s-NOMESSAGE,n,Goto(exit-${VMSTATUS},1) |
|---|
| | 2254 | $ext->add('macro-vm','s-NOMESSAGE','',new ext_goto('1','exit-${VMSTATUS}')); |
|---|
| | 2255 | |
|---|
| | 2256 | //exten => s-DIRECTDIAL,1,NoOp(DIRECTDIAL voicemail) |
|---|
| | 2257 | $ext->add('macro-vm','s-DIRECTDIAL','',new ext_NoOp('DIRECTDIAL voicemail')); |
|---|
| | 2258 | //exten => s-DIRECTDIAL,n,Macro(get-vmcontext,${ARG1}) |
|---|
| | 2259 | $ext->add('macro-vm','s-DIRECTDIAL','',new ext_macro('get-vmcontext','${ARG1}')); |
|---|
| | 2260 | //exten => s-DIRECTDIAL,n,Voicemail(${ARG1}@${VMCONTEXT},${VM_OPTS}${VM_DDTYPE}${VMGAIN}) |
|---|
| | 2261 | $ext->add('macro-vm','s-DIRECTDIAL','',new ext_vm('${ARG1}@${VMCONTEXT},${VM_OPTS}${VM_DDTYPE}${VMGAIN}')); |
|---|
| | 2262 | //exten => s-DIRECTDIAL,n,Goto(exit-${VMSTATUS},1) |
|---|
| | 2263 | $ext->add('macro-vm','s-DIRECTDIAL','',new ext_goto('1','exit-${VMSTATUS}')); |
|---|
| | 2264 | |
|---|
| | 2265 | //exten => _s-.,1,Macro(get-vmcontext,${ARG1}) |
|---|
| | 2266 | $ext->add('macro-vm','_s-.','',new ext_macro('get-vmcontext','${ARG1}')); |
|---|
| | 2267 | //exten => _s-.,n,Voicemail(${ARG1}@${VMCONTEXT},${VM_OPTS}u${VMGAIN}) ; Voicemail Unavailable message |
|---|
| | 2268 | $ext->add('macro-vm','_s-.','',new ext_vm('${ARG1}@${VMCONTEXT},${VM_OPTS}u${VMGAIN}')); |
|---|
| | 2269 | //exten => _s-.,n,Goto(exit-${VMSTATUS},1) |
|---|
| | 2270 | $ext->add('macro-vm','_s-.','',new ext_goto('1','exit-${VMSTATUS}')); |
|---|
| | 2271 | // If the user has a 0 option defined, use that for operator zero-out from within voicemail |
|---|
| | 2272 | // as well to keep it consistant with the menu structure |
|---|
| | 2273 | |
|---|
| | 2274 | //exten => o,1,Background(one-moment-please) ; 0 during vm message will hangup |
|---|
| | 2275 | $ext->add('macro-vm','o','',new ext_background('one-moment-please')); |
|---|
| | 2276 | //exten => o,n,GotoIf($["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/0/ext)}" = "0"]?doopdef) |
|---|
| | 2277 | $ext->add('macro-vm','o','',new ext_gotoif('$["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/0/ext)}" = "0"]','doopdef')); |
|---|
| | 2278 | //exten => o,n,Set(VMX_OPDEST_EXT=${DB_RESULT}) |
|---|
| | 2279 | $ext->add('macro-vm','o','',new ext_setvar("VMX_OPDEST_EXT",'${DB_RESULT}')); |
|---|
| | 2280 | //exten => o,n,GotoIf($["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/0/context)}" = "1"]?opcontext) |
|---|
| | 2281 | $ext->add('macro-vm','o','',new ext_gotoif('$["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/0/context)}" = "1"]','opcontext')); |
|---|
| | 2282 | //exten => o,n,Set(DB_RESULT=${VMX_CONTEXT}) |
|---|
| | 2283 | $ext->add('macro-vm','o','',new ext_setvar("DB_RESULT",'${VMX_CONTEXT}')); |
|---|
| | 2284 | //exten => o,n(opcontext),Set(VMX_OPDEST_CONTEXT=${DB_RESULT}) |
|---|
| | 2285 | $ext->add('macro-vm','o','opcontext',new ext_setvar("VMX_OPDEST_CONTEXT",'${DB_RESULT}')); |
|---|
| | 2286 | //exten => o,n,GotoIf($["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/0/pri)}" = "1"]?oppri) |
|---|
| | 2287 | $ext->add('macro-vm','o','',new ext_gotoif('$["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/0/pri)}" = "1"]','oppri')); |
|---|
| | 2288 | //exten => o,n,Set(DB_RESULT=${VMX_PRI}) |
|---|
| | 2289 | $ext->add('macro-vm','o','',new ext_setvar("DB_RESULT",'${VMX_PRI}')); |
|---|
| | 2290 | //exten => o,n(oppri),Set(VMX_OPDEST_PRI=${DB_RESULT}) |
|---|
| | 2291 | $ext->add('macro-vm','o','oppri',new ext_setvar("VMX_OPDEST_PRI",'${DB_RESULT}')); |
|---|
| | 2292 | //exten => o,n,Goto(${VMX_OPDEST_CONTEXT},${VMX_OPDEST_EXT},${VMX_OPDEST_PRI}) |
|---|
| | 2293 | $ext->add('macro-vm','o','',new ext_goto('${VMX_OPDEST_PRI}','${VMX_OPDEST_EXT}','${VMX_OPDEST_CONTEXT}')); |
|---|
| | 2294 | //exten => o,n(doopdef),GotoIf($["x${OPERATOR_XTN}"="x"]?nooper:from-internal,${OPERATOR_XTN},1) |
|---|
| | 2295 | $ext->add('macro-vm','o','doopdef',new ext_gotoif('$["x${OPERATOR_XTN}"="x"]','nooper','from-internal,${OPERATOR_XTN},1')); |
|---|
| | 2296 | //exten => o,n(nooper),GotoIf($["x${FROM_DID}"="x"]?nodid) |
|---|
| | 2297 | $ext->add('macro-vm','o','nooper',new ext_gotoif('$["x${FROM_DID}"="x"]','nodid')); |
|---|
| | 2298 | //exten => o,n,Dial(Local/${FROM_DID}@from-pstn) |
|---|
| | 2299 | $ext->add('macro-vm','o','',new ext_dial('Local/${FROM_DID}@from-pstn','')); |
|---|
| | 2300 | //exten => o,n,Macro(hangup) |
|---|
| | 2301 | $ext->add('macro-vm','o','',new ext_macro('hangup')); |
|---|
| | 2302 | //exten => o,n(nodid),Dial(Local/s@from-pstn) |
|---|
| | 2303 | $ext->add('macro-vm','o','nodid',new ext_dial('Local/s@from-pstn','')); |
|---|
| | 2304 | //exten => o,n,Macro(hangup) |
|---|
| | 2305 | $ext->add('macro-vm','o','',new ext_macro('hangup')); |
|---|
| | 2306 | |
|---|
| | 2307 | // If the user has a * option defined, use that for the * out from within voicemail |
|---|
| | 2308 | // as well to keep it consistant with the menu structure |
|---|
| | 2309 | |
|---|
| | 2310 | //exten => a,1,Macro(get-vmcontext,${ARG1}) |
|---|
| | 2311 | $ext->add('macro-vm','a','',new ext_macro('get-vmcontext','${ARG1}')); |
|---|
| | 2312 | //exten => a,n,GotoIf($["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/*/ext)}" = "0"]?adef,1) |
|---|
| | 2313 | $ext->add('macro-vm','a','',new ext_gotoif('$["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/*/ext)}" = "0"]','adef,1')); |
|---|
| | 2314 | /**/ |
|---|
| | 2315 | //exten => a,n,Set(VMX_ADEST_EXT=${DB_RESULT}) |
|---|
| | 2316 | $ext->add('macro-vm','a','',new ext_setvar("VMX_ADEST_EXT",'${DB_RESULT}')); |
|---|
| | 2317 | //exten => a,n,GotoIf($["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/*/context)}" = "1"]?acontext) |
|---|
| | 2318 | $ext->add('macro-vm','a','',new ext_gotoif('$["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/*/context)}" = "1"]','acontext')); |
|---|
| | 2319 | /**/ |
|---|
| | 2320 | //exten => a,n,Set(DB_RESULT=${VMX_CONTEXT}) |
|---|
| | 2321 | $ext->add('macro-vm','a','',new ext_setvar("DB_RESULT",'${VMX_CONTEXT}')); |
|---|
| | 2322 | //exten => a,n(acontext),Set(VMX_ADEST_CONTEXT=${DB_RESULT}) |
|---|
| | 2323 | $ext->add('macro-vm','a','acontext',new ext_setvar("VMX_ADEST_CONTEXT",'${DB_RESULT}')); |
|---|
| | 2324 | |
|---|
| | 2325 | //exten => a,n,GotoIf($["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/*/pri)}" = "1"]?apri) |
|---|
| | 2326 | $ext->add('macro-vm','a','',new ext_gotoif('$["${DB_EXISTS(AMPUSER/${ARG1}/vmx/${MODE}/*/pri)}" = "1"]','apri')); |
|---|
| | 2327 | /**/ |
|---|
| | 2328 | //exten => a,n,Set(DB_RESULT=${VMX_PRI}) |
|---|
| | 2329 | $ext->add('macro-vm','a','',new ext_setvar("DB_RESULT",'${VMX_PRI}')); |
|---|
| | 2330 | //exten => a,n(apri),Set(VMX_ADEST_PRI=${DB_RESULT}) |
|---|
| | 2331 | $ext->add('macro-vm','a','apri',new ext_setvar("VMX_ADEST_PRI",'${DB_RESULT}')); |
|---|
| | 2332 | //exten => a,n,Goto(${VMX_ADEST_CONTEXT},${VMX_ADEST_EXT},${VMX_ADEST_PRI}) |
|---|
| | 2333 | $ext->add('macro-vm','a','',new ext_goto('${VMX_ADEST_PRI}','${VMX_ADEST_EXT}','${VMX_ADEST_CONTEXT}')); |
|---|
| | 2334 | //exten => adef,1,VoiceMailMain(${ARG1}@${VMCONTEXT}) |
|---|
| | 2335 | $ext->add('macro-vm','adef','',new ext_vmmain('${ARG1}@${VMCONTEXT}')); |
|---|
| | 2336 | //exten => adef,n,GotoIf($["${ARG3}" = "RETURN"]?exit-RETURN,1) |
|---|
| | 2337 | $ext->add('macro-vm','adef','',new ext_gotoif('$["${ARG3}" = "RETURN"]','exit-RETURN,1')); |
|---|
| | 2338 | //exten => adef,n,Hangup |
|---|
| | 2339 | $ext->add('macro-vm','adef','',new ext_hangup('')); |
|---|
| | 2340 | |
|---|
| | 2341 | //exten => exit-FAILED,1,Playback(im-sorry&an-error-has-occured) |
|---|
| | 2342 | $ext->add('macro-vm','exit-FAILED','',new ext_playback('im-sorry&an-error-has-occured')); |
|---|
| | 2343 | //exten => exit-FAILED,n,GotoIf($["${ARG3}" = "RETURN"]?exit-RETURN,1) |
|---|
| | 2344 | $ext->add('macro-vm','exit-FAILED','',new ext_gotoif('$["${ARG3}" = "RETURN"]','exit-RETURN,1')); |
|---|
| | 2345 | //exten => exit-FAILED,n,Hangup() |
|---|
| | 2346 | $ext->add('macro-vm','exit-FAILED','',new ext_hangup('')); |
|---|
| | 2347 | |
|---|
| | 2348 | //exten => exit-SUCCESS,1,GotoIf($["${ARG3}" = "RETURN"]?exit-RETURN,1) |
|---|
| | 2349 | $ext->add('macro-vm','exit-SUCCESS','',new ext_gotoif('$["${ARG3}" = "RETURN"]','exit-RETURN,1')); |
|---|
| | 2350 | //exten => exit-SUCCESS,n,Playback(goodbye) |
|---|
| | 2351 | $ext->add('macro-vm','exit-SUCCESS','',new ext_playback('goodbye')); |
|---|
| | 2352 | //exten => exit-SUCCESS,n,Hangup() |
|---|
| | 2353 | $ext->add('macro-vm','exit-SUCCESS','',new ext_hangup('')); |
|---|
| | 2354 | |
|---|
| | 2355 | //exten => exit-USEREXIT,1,GotoIf($["${ARG3}" = "RETURN"]?exit-RETURN,1) |
|---|
| | 2356 | $ext->add('macro-vm','exit-USEREXIT','',new ext_gotoif('$["${ARG3}" = "RETURN"]','exit-RETURN,1')); |
|---|
| | 2357 | //exten => exit-USEREXIT,n,Playback(goodbye) |
|---|
| | 2358 | $ext->add('macro-vm','exit-USEREXIT','',new ext_playback('goodbye')); |
|---|
| | 2359 | //exten => exit-USEREXIT,n,Hangup() |
|---|
| | 2360 | $ext->add('macro-vm','exit-USEREXIT','',new ext_hangup('')); |
|---|
| | 2361 | |
|---|
| | 2362 | //exten => exit-RETURN,1,Noop(Returning From Voicemail because macro) |
|---|
| | 2363 | $ext->add('macro-vm','exit-RETURN','',new ext_noop('Returning From Voicemail because macro')); |
|---|
| | 2364 | //exten => t,1,Hangup() |
|---|
| | 2365 | $ext->add('macro-vm','t','',new ext_hangup('')); |
|---|
| | 2366 | |
|---|
| | 2367 | /* end macro-vm */ |
|---|