Changeset 12324
- Timestamp:
- 07/26/11 18:35:56 (2 years ago)
- Files:
-
- modules/branches/2.10/conferences/functions.inc.php (modified) (1 diff)
- modules/branches/2.10/core/etc/extensions.conf (modified) (1 diff)
- modules/branches/2.10/core/functions.inc.php (modified) (13 diffs)
- modules/branches/2.10/findmefollow/functions.inc.php (modified) (1 diff)
- modules/branches/2.10/queues/functions.inc.php (modified) (4 diffs)
- modules/branches/2.10/ringgroups/functions.inc.php (modified) (6 diffs)
- modules/branches/2.10/ringgroups/install.php (modified) (2 diffs)
- modules/branches/2.10/ringgroups/module.xml (modified) (2 diffs)
- modules/branches/2.10/ringgroups/page.ringgroups.php (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
modules/branches/2.10/conferences/functions.inc.php
r12310 r12324 171 171 $ext->add($contextname, $roomnum, '', new ext_setvar('MAX_PARTICIPANTS', $roomusers)); 172 172 $ext->add($contextname, $roomnum, '', new ext_setvar('MEETME_MUSIC',$music)); 173 if (strstr($room['options'],'r') !== false) { 174 $ext->add($contextname, $roomnum, '', new ext_setvar('MEETME_RECORDINGFILE','${ASTSPOOLDIR}/monitor/meetme-conf-rec-${MEETME_ROOMNUM}-${UNIQUEID}')); 175 } 173 $ext->add($contextname, $roomnum, '', new ext_gosub('1','s','sub-record-check',"conf,$roomnum," . (strstr($room['options'],'r') !== false ? 'always' : 'never'))); 176 174 $ext->add($contextname, $roomnum, '', new ext_gotoif('$["${DIALSTATUS}" = "ANSWER"]',($roomuserpin == '' && $roomadminpin == '' ? 'USER' : 'READPIN'))); 177 175 $ext->add($contextname, $roomnum, '', new ext_answer('')); modules/branches/2.10/core/etc/extensions.conf
r11639 r12324 493 493 ;------------------------------------------------------------------------------- 494 494 495 ;-------------------------------------------------------------------------------496 ; macro-rg-group: [DEPRECATED]497 ;498 ; Ring groups of phones499 ; ARGS: comma separated extension list500 ; 1 - Ring Group Strategy501 ; 2 - ringtimer502 ; 3 - prefix503 ; 4 - extension list504 ;505 [macro-rg-group]506 exten => s,1,Macro(user-callerid,SKIPTTL) ; already called from ringgroup507 exten => s,2,GotoIf($["${CALLERID(name):0:${LEN(${RGPREFIX})}}" != "${RGPREFIX}"]?4:3) ; check for old prefix508 exten => s,3,Set(CALLERID(name)=${CALLERID(name):${LEN(${RGPREFIX})}}) ; strip off old prefix509 exten => s,4,Set(RGPREFIX=${ARG3}) ; set new prefix510 exten => s,5,Set(CALLERID(name)=${RGPREFIX}${CALLERID(name)}) ; add prefix to callerid name511 exten => s,6,Set(RecordMethod=Group) ; set new prefix512 exten => s,7,Macro(record-enable,${MACRO_EXTEN},${RecordMethod})513 exten => s,8,Set(RingGroupMethod=${ARG1}) ;514 exten => s,9,Macro(dial,${ARG2},${DIAL_OPTIONS},${ARG4})515 exten => s,10,Set(RingGroupMethod='') ;516 ;-------------------------------------------------------------------------------517 518 ;-------------------------------------------------------------------------------519 ; macro-dialout: [DEPRECATED]520 ;521 ; dialout and strip the prefix522 ;523 [macro-dialout]524 exten => s,1,Macro(user-callerid,SKIPTTL)525 exten => s,2,GotoIf($["${ECID${CALLERID(number)}}" = ""]?5) ;check for CID override for exten526 exten => s,3,Set(CALLERID(all)=${ECID${CALLERID(number)}})527 exten => s,4,Goto(7)528 exten => s,5,GotoIf($["${OUTCID_${ARG1}}" = ""]?7) ;check for CID override for trunk529 exten => s,6,Set(CALLERID(all)=${OUTCID_${ARG1}})530 exten => s,7,Set(length=${LEN(${DIAL_OUT_${ARG1}})})531 exten => s,8,Dial(${OUT_${ARG1}}/${ARG2:${length}})532 exten => s,9,Playtones(congestion)533 exten => s,10,Congestion(5)534 exten => s,109,Macro(outisbusy)535 ;-------------------------------------------------------------------------------536 537 ;-------------------------------------------------------------------------------538 ; macro-dialout-default: [DEPRECATED]539 ;540 ; dialout using default OUT trunk - no prefix541 ;542 [macro-dialout-default]543 exten => s,1,Macro(user-callerid,SKIPTTL)544 exten => s,2,Macro(record-enable,${CALLERID(number)},OUT)545 exten => s,3,Macro(outbound-callerid,${ARG1})546 exten => s,4,Dial(${OUT}/${ARG1})547 exten => s,5,Playtones(congestion)548 exten => s,6,Congestion(5)549 exten => s,105,Macro(outisbusy)550 ;-------------------------------------------------------------------------------551 495 552 496 ;------------------------------------------------------------------------------- modules/branches/2.10/core/functions.inc.php
r12317 r12324 188 188 } 189 189 190 function addApplicationMap($key, $value) { 190 function addApplicationMap($key, $value, $add_to_dynamic_features=false) { 191 global $ext; 191 192 $this->_applicationmap[] = array('key' => $key, 'value' => $value); 193 // 194 // Now add it to the DYNAMIC_FEATURES 195 // TODO: one caveat, if we ever want to make such an application conditional, we will have to change 196 // this as for now it makes it for everyone. 197 // 198 if ($add_to_dynamic_features) { 199 $ext->_globals['DYNAMIC_FEATURES'] = empty($ext->_globals['DYNAMIC_FEATURES']) ? $key : $ext->_globals['DYNAMIC_FEATURES'] . ',' . $key; 200 } 192 201 } 193 202 … … 197 206 if (isset($this->_applicationmap) && is_array($this->_applicationmap)) { 198 207 foreach ($this->_applicationmap as $values) { 199 $output .= $values['key']."= ".$values['value']."\n";208 $output .= $values['key']."=>".$values['value']."\n"; 200 209 } 201 210 } … … 901 910 $code = $fcc->getCodeActive(); 902 911 unset($fcc); 903 $automon = $amp_conf['AUTOMIXMON'] && !$ast_lt_16 ? 'automixmon' : 'automon';912 // $automon = $amp_conf['AUTOMIXMON'] && !$ast_lt_16 ? 'automixmon' : 'automon'; 904 913 if ($code != '') { 905 $core_conf->addFeatureMap($automon,$code); 914 // was this for automixmon 915 // $core_conf->addFeatureMap($automon,$code); 916 $core_conf->addApplicationMap('apprecord', $code . ',caller,Macro,one-touch-record', true); 906 917 } 918 // TODO: *** NEED TO MAKE THIS SETTABLE, PLACE HOLDER AND HARD CODED FOR NOW. CAN BE: 919 // 'caller' or 'callee' so for dev testing can be overridden in globals_custom.conf 920 $ext->addGlobal('REC_POLICY','caller'); // TODO: IMPLEMENT THIS 907 921 908 922 $fcc = new featurecode($modulename, 'disconnect'); … … 1813 1827 } 1814 1828 1829 /* TODO: Replaced, will remove this after some additional testing 1830 * 1815 1831 // Generate macro-record-enable, if recording is disabled then we just make it a stub 1816 1832 // Otherwise we make it right … … 1852 1868 $ext->add($context, $exten, '', new ext_macroexit()); 1853 1869 } 1870 */ 1871 1872 /* 1873 ; ARG1: type 1874 ; exten, out, rg, q, conf 1875 ; ARG2: called_exten 1876 ; ARG3: action (if we know it) 1877 ; always, never (note dontcare only applies to extensions, group, etc. must specify yes/no) 1878 ; 1879 */ 1880 $context = 'sub-record-cancel'; 1881 $exten = 's'; 1882 1883 $ext->add($context, $exten, '', new ext_execif('$["${REC_STATUS}"!="RECORDING"]','Return')); 1884 $ext->add($context, $exten, '', new ext_stopmixmonitor()); 1885 $ext->add($context, $exten, '', new ext_set('__REC_STATUS','')); 1886 // TODO: need to put in default form MINMON_DIR if not set like with conf 1887 // $ext->add($context, $exten, '', new ext_set('MEETME_RECORDINGFILE','${IF($[${LEN(${MIXMON_DIR})}]?${MIXMON_DIR}:${ASTSPOOLDIR}/monitor/)}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}')); 1888 // also need to know format so set/check that 1889 // 1890 $ext->add($context, $exten, '', new ext_set('MON_BASE','${IF($[${LEN(${MIXMON_DIR})}]?${MIXMON_DIR}:${ASTSPOOLDIR}/monitor/)}${YEAR}/${MONTH}/${DAY}/')); 1891 $ext->add($context, $exten, '', new ext_set('MON_FMT','${IF($[${LEN(${MIXMON_FORMAT})}]?${MIXMON_FORMAT}:wav)}')); 1892 $ext->add($context, $exten, '', new ext_execif('$[${LEN(${CALLFILENAME})} & ${STAT(f,${MON_BASE}${CALLFILENAME}.${MON_FMT})}]','System','rm -f ${MON_BASE}${CALLFILENAME}.${MON_FMT}')); 1893 $ext->add($context, $exten, '', new ext_set('__CALLFILENAME','')); 1894 $ext->add($context, $exten, '', new ext_set('CDR(recordingfile)','')); 1895 $ext->add($context, $exten, '', new ext_return('')); 1896 1897 1898 $context = 'sub-record-check'; 1899 $exten = 's'; 1900 1901 $ext->add($context, $exten, '', new ext_gotoif('$["${BLINDTRANSFER}" = ""]', 'check')); 1902 $ext->add($context, $exten, '', new ext_resetcdr('')); 1903 $ext->add($context, $exten, 'check', new ext_gotoif('$["${REC_STATUS}"!="RECORDING"]', 'next')); 1904 $ext->add($context, $exten, '', new ext_set('CDR(recordingfile)','${CALLFILENAME}')); 1905 $ext->add($context, $exten, '', new ext_return('')); 1906 $ext->add($context, $exten, 'next', new ext_execif('$[!${LEN(${ARG1})}]','Return')); 1907 $ext->add($context, $exten, '', new ext_gotoif('$["${REC_STATUS}"!=""]','${ARG1},1')); 1908 $ext->add($context, $exten, '', new ext_set('__REC_STATUS','INITIALIZED')); 1909 $ext->add($context, $exten, '', new ext_set('__REC_POLICY_MODE','${ARG3}')); 1910 $ext->add($context, $exten, '', new ext_set('NOW','${EPOCH}')); 1911 $ext->add($context, $exten, '', new ext_set('__DAY','${STRFTIME(${NOW},,%d)}')); 1912 $ext->add($context, $exten, '', new ext_set('__MONTH','${STRFTIME(${NOW},,%m)}')); 1913 $ext->add($context, $exten, '', new ext_set('__YEAR','${STRFTIME(${NOW},,%Y)}')); 1914 $ext->add($context, $exten, '', new ext_set('__TIMESTR','${YEAR}${MONTH}${DAY}-${STRFTIME(${NOW},,%H%M%S)}')); 1915 $ext->add($context, $exten, '', new ext_set('__FROMEXTEN','${IF($[${LEN(${AMPUSER})}]?${AMPUSER}:${IF($[${LEN(${REALCALLERIDNUM})}]?${REALCALLERIDNUM}:unknown)})}')); 1916 $ext->add($context, $exten, '', new ext_set('__CALLFILENAME','${ARG1}-${ARG2}-${FROMEXTEN}-${TIMESTR}-${UNIQUEID}')); 1917 $ext->add($context, $exten, '', new ext_goto('1','${ARG1}')); 1918 1919 $exten = 'rg'; 1920 $ext->add($context, $exten, '', new ext_noop_trace('Recording Check ${EXTEN} ${ARG2}')); 1921 $ext->add($context, $exten, '', new ext_gosubif('$["${REC_POLICY_MODE}"="always"]','record,1',false,'${EXTEN},${REC_POLICY_MODE},${FROMEXTEN}')); 1922 $ext->add($context, $exten, '', new ext_return('')); 1923 1924 $exten = 'q'; 1925 $ext->add($context, $exten, '', new ext_noop_trace('Recording Check ${EXTEN} ${ARG2}')); 1926 $ext->add($context, $exten, '', new ext_gosubif('$["${REC_POLICY_MODE}"="always"]','recq,1',false,'${EXTEN},${ARG2},${FROMEXTEN}')); 1927 $ext->add($context, $exten, '', new ext_return('')); 1928 1929 $exten = 'out'; 1930 $ext->add($context, $exten, '', new ext_noop_trace('Recording Check ${EXTEN} ${ARG2}')); 1931 $ext->add($context, $exten, '', new ext_set('__REC_POLICY_MODE','${DB(AMPUSER/${FROMEXTEN}/recording/out/external)}')); 1932 $ext->add($context, $exten, '', new ext_gosubif('$["${REC_POLICY_MODE}"="always"]','record,1',false,'exten,${ARG2},${FROMEXTEN}')); 1933 $ext->add($context, $exten, '', new ext_return('')); 1934 1935 $exten = 'exten'; 1936 $ext->add($context, $exten, '', new ext_noop_trace('Recording Check ${EXTEN} ${ARG2}')); 1937 $ext->add($context, $exten, '', new ext_set('__REC_POLICY_MODE','${IF($[${LEN(${FROM_DID})}]?${DB(AMPUSER/${ARG2}/recording/in/external)}:${DB(AMPUSER/${ARG2}/recording/in/internal)})}')); 1938 $ext->add($context, $exten, '', new ext_execif('$[!${LEN(${ARG3})}]','Return')); 1939 1940 /* If callee doesn't care, then go to caller to make decision 1941 * Otherwise, if caller doesn't care, the go to callee to make decision 1942 * Otherwise, if relative priorities are equal, use the global REC_POLICY 1943 * Otherwise, use whomever has a higher priority 1944 */ 1945 $ext->add($context, $exten, '', new ext_gotoif('$["${REC_POLICY_MODE}"="dontcare"]', 'caller')); 1946 $ext->add($context, $exten, '', new ext_gotoif('$["${DB(AMPUSER/${FROMEXTEN}/recording/out/internal)}"="dontcare"]', 'callee')); 1947 $ext->add($context, $exten, '', new ext_set('CALLER_PRI','${IF($[${LEN(${DB(AMPUSER/${FROMEXTEN}/recording/priority)})}])?${DB(AMPUSER/${FROMEXTEN}/recording/priority)}:0}')); 1948 $ext->add($context, $exten, '', new ext_set('CALLEE_PRI','${IF($[${LEN(${DB(AMPUSER/${ARG2}/recording/priority)})}])?${DB(AMPUSER/${ARG2}/recording/priority)}:0}')); 1949 $ext->add($context, $exten, '', new ext_gotoif('$["${CALLER_PRI}"="${CALLEE_PRI}"]', '${REC_POLICY}','${IF($["${CALLER_PRI}">"${CALLEE_PRI}"]?caller:callee)}')); 1950 1951 $ext->add($context, $exten, 'callee', new ext_gosubif('$["${REC_POLICY_MODE}"="always"]','record,1',false,'${EXTEN},${ARG2},${FROMEXTEN}')); 1952 $ext->add($context, $exten, '', new ext_return('')); 1953 $ext->add($context, $exten, 'caller', new ext_set('REC_POLICY_MODE','${DB(AMPUSER/${FROMEXTEN}/recording/out/internal)}')); 1954 $ext->add($context, $exten, '', new ext_gosubif('$["${REC_POLICY_MODE}"="always"]','record,1',false,'${EXTEN},${ARG2},${FROMEXTEN}')); 1955 $ext->add($context, $exten, '', new ext_return('')); 1956 1957 // For confernecing we will set the variables (since the actual meetme does the recording) in case an option were to exist to do on-demand recording 1958 // of the conference which doesn't currenly seem like it is supported but might. 1959 // 1960 $exten = 'conf'; 1961 $ext->add($context, $exten, '', new ext_noop_trace('Recording Check ${EXTEN} ${ARG2}')); 1962 $ext->add($context, $exten, '', new ext_gosub('1','recconf',false,'${EXTEN},${ARG2},${ARG2}')); 1963 $ext->add($context, $exten, '', new ext_return('')); 1964 1965 $exten = 'page'; 1966 $ext->add($context, $exten, '', new ext_noop_trace('Recording Check ${EXTEN} ${ARG2}')); 1967 $ext->add($context, $exten, '', new ext_gosubif('$["${REC_POLICY_MODE}"="always"]','recconf,1',false,'${EXTEN},${ARG2},${FROMEXTEN}')); 1968 $ext->add($context, $exten, '', new ext_return('')); 1969 1970 $exten = 'record'; 1971 $ext->add($context, $exten, '', new ext_noop_trace('Setting up recording: ${ARG1}, ${ARG2}, ${ARG3}')); 1972 $ext->add($context, $exten, '', new ext_set('AUDIOHOOK_INHERIT(MixMonitor)','yes')); 1973 $ext->add($context, $exten, '', new ext_mixmonitor('${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MIXMON_FORMAT}','','${MIXMON_POST}')); 1974 $ext->add($context, $exten, '', new ext_set('__REC_STATUS','RECORDING')); 1975 $ext->add($context, $exten, '', new ext_set('CDR(recordingfile)','${CALLFILENAME}')); 1976 $ext->add($context, $exten, '', new ext_return('')); 1977 1978 $exten = 'recq'; 1979 $ext->add($context, $exten, '', new ext_noop_trace('Setting up recording: ${ARG1}, ${ARG2}, ${ARG3}')); 1980 $ext->add($context, $exten, '', new ext_set('AUDIOHOOK_INHERIT(MixMonitor)','yes')); 1981 $ext->add($context, $exten, '', new ext_set('MONITOR_FILENAME','${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}')); 1982 $ext->add($context, $exten, '', new ext_set('__REC_STATUS','RECORDING')); 1983 $ext->add($context, $exten, '', new ext_set('CDR(recordingfile)','${CALLFILENAME}')); 1984 $ext->add($context, $exten, '', new ext_return('')); 1985 1986 $exten = 'recconf'; 1987 $ext->add($context, $exten, '', new ext_noop_trace('Setting up recording: ${ARG1}, ${ARG2}, ${ARG3}')); 1988 $ext->add($context, $exten, '', new ext_set('__CALLFILENAME','${IF($[${MEETME_INFO(parties,${ARG2})}]?${DB(RECCONF/${ARG2})}:${ARG1}-${ARG2}-${ARG3}-${TIMESTR}-${UNIQUEID})}')); 1989 $ext->add($context, $exten, '', new ext_execif('$[!${MEETME_INFO(parties,${ARG2})}]','Set','DB(RECCONF/${ARG2})=${CALLFILENAME}')); 1990 $ext->add($context, $exten, '', new ext_set('MEETME_RECORDINGFILE','${IF($[${LEN(${MIXMON_DIR})}]?${MIXMON_DIR}:${ASTSPOOLDIR}/monitor/)}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}')); 1991 $ext->add($context, $exten, '', new ext_set('MEETME_RECORDINGFORMAT','${MIXMON_FORMAT}')); 1992 $ext->add($context, $exten, '', new ext_execif('$["${REC_POLICY_MODE}"!="always','Return')); 1993 $ext->add($context, $exten, '', new ext_set('__REC_STATUS','RECORDING')); 1994 $ext->add($context, $exten, '', new ext_set('CDR(recordingfile)','${CALLFILENAME}')); 1995 $ext->add($context, $exten, '', new ext_return('')); 1996 1997 /* macro-one-touch-record */ 1998 1999 $context = 'macro-one-touch-record'; 2000 $exten = 's'; 2001 2002 $ext->add($context, $exten, '', new ext_execif('$["${THISEXTEN}"=""]','Set','THISEXTEN=${IF($["${REALCALLERIDNUM}"=""]?${DIALEDPEERNUMBER}:${FROMEXTEN})}')); 2003 $ext->add($context, $exten, '', new ext_execif('$["${DB(AMPUSER/${THISEXTEN}/recording/ondemand)}"!="enabled"]','MacroExit')); 2004 $ext->add($context, $exten, '', new ext_gotoif('$["${MASTER_CHANNEL(ONETOUCH_REC)}"="RECORDING"]', 'stoprec')); 2005 $ext->add($context, $exten, '', new ext_gotoif('$["${MASTER_CHANNEL(REC_POLICY_MODE)}"="never"]', 'stopped')); 2006 $ext->add($context, $exten, '', new ext_gotoif('$["${MASTER_CHANNEL(ONETOUCH_REC)}"="" & "${MASTER_CHANNEL(REC_STATUS)}"="RECORDING"]', 'recording')); 2007 $ext->add($context, $exten, '', new ext_set('MASTER_CHANNEL(ONETOUCH_REC)','RECORDING')); 2008 $ext->add($context, $exten, '', new ext_set('MASTER_CHANNEL(REC_STATUS)','RECORDING')); 2009 $ext->add($context, $exten, '', new ext_noop_trace('THISEXTEN: ${THISEXTEN} CALLFILENAME: ${CALLFILENAME}')); 2010 $ext->add($context, $exten, 'mixmon', new ext_set('AUDIOHOOK_INHERIT(MixMonitor)','yes')); 2011 $ext->add($context, $exten, '', new ext_mixmonitor('${MIXMON_DIR}${YEAR}/${MONTH}/${DAY}/${CALLFILENAME}.${MIXMON_FORMAT}','a','${MIXMON_POST}')); 2012 $ext->add($context, $exten, '', new ext_set('MASTER_CHANNEL(CDR(recordingfile))','${CALLFILENAME}')); 2013 $ext->add($context, $exten, 'recording', new ext_playback('beep')); 2014 $ext->add($context, $exten, '', new ext_gosub('sstate', false, false,'${FROMEXTEN},INUSE')); 2015 $ext->add($context, $exten, '', new ext_gosub('sstate', false, false,'${DIALEDPEERNUMBER},INUSE')); 2016 $ext->add($context, $exten, '', new ext_macroexit()); 2017 2018 $ext->add($context, $exten, 'stoprec', new ext_stopmixmonitor()); 2019 $ext->add($context, $exten, '', new ext_set('MASTER_CHANNEL(ONETOUCH_REC)','PAUSED')); 2020 $ext->add($context, $exten, '', new ext_set('MASTER_CHANNEL(REC_STATUS)','PAUSED')); 2021 $ext->add($context, $exten, '', new ext_execif('$["${THISEXTEN}"=""]','Set','THISEXTEN=${IF($["${REALCALLERIDNUM}"=""]?${DIALEDPEERNUMBER}:${FROMEXTEN})}')); 2022 $ext->add($context, $exten, '', new ext_noop_trace('THISEXTEN: ${THISEXTEN} CALLFILENAME: ${CALLFILENAME}')); 2023 $ext->add($context, $exten, 'stopped', new ext_playback('beep&beep')); 2024 $ext->add($context, $exten, '', new ext_gosub('sstate', false, false,'${FROMEXTEN},NOT_INUSE')); 2025 $ext->add($context, $exten, '', new ext_gosub('sstate', false, false,'${DIALEDPEERNUMBER},NOT_INUSE')); 2026 $ext->add($context, $exten, '', new ext_macroexit()); 2027 2028 $ext->add($context, $exten, 'sstate', new ext_set('DEVICES','${DB(AMPUSER/${ARG1}/device)}')); 2029 $ext->add($context, $exten, '', new ext_gotoif('$["${DEVICES}"=""]', 'return')); 2030 $ext->add($context, $exten, '', new ext_set('LOOPCNT','${FIELDQTY(DEVICES,&)}')); 2031 $ext->add($context, $exten, '', new ext_set('ITER','1')); 2032 $ext->add($context, $exten, 'begin', new ext_set('DEVICE_STATE(Custom:RECORDING${CUT(DEVICES,&,${ITER})})','${ARG2}')); 2033 $ext->add($context, $exten, '', new ext_set('ITER','$[${ITER}+1]')); 2034 $ext->add($context, $exten, '', new ext_gotoif('$[${ITER}<=${LOOPCNT}]', 'begin')); 2035 $ext->add($context, $exten, 'return', new ext_return('')); 2036 1854 2037 1855 2038 /* macro-prepend-cid */ … … 1948 2131 } 1949 2132 $ext->add($context, $exten, '', new ext_set("_NODEST","")); 1950 $ext->add($context, $exten, '', new ext_ macro('record-enable,${AMPUSER},OUT'));2133 $ext->add($context, $exten, '', new ext_gosub('1','s','sub-record-check','out,${EXTEN}')); 1951 2134 1952 2135 $password = $route['password']; … … 3226 3409 $ext->add($mcontext,$exten,'', new ext_set("__PICKUPMARK", '${ARG2}')); 3227 3410 $ext->add($mcontext,$exten,'', new ext_set("RT", '${IF($["${ARG1}"!="novm" | "${DB(CFU/${EXTTOCALL})}"!="" | "${DB(CFB/${EXTTOCALL})}"!="" | ${ARG3} | ${ARG4} | ${ARG5}]?${RINGTIMER}:"")}')); 3228 $ext->add($mcontext,$exten,'checkrecord', new ext_ macro('record-enable','${EXTTOCALL},IN'));3411 $ext->add($mcontext,$exten,'checkrecord', new ext_gosub('1','s','sub-record-check','exten,${EXTTOCALL}')); 3229 3412 3230 3413 // If paging module is not present, then what happens? … … 3549 3732 $skip_label = $next_label; 3550 3733 } 3551 3552 $ext->add($mcontext,$exten,'theend', new ext_hangup()); 3734 $ext->add($mcontext, $exten, 'theend', new ext_gosubif('$["${ONETOUCH_REC}"="RECORDING"]', 'macro-one-touch-record,s,sstate', false, '${FROMEXTEN},NOT_INUSE')); 3735 $ext->add($mcontext, $exten, '', new ext_gosubif('$["${ONETOUCH_REC}"="RECORDING"]', 'macro-one-touch-record,s,sstate', false, '${DIALEDPEERNUMBER},NOT_INUSE')); 3736 3737 $ext->add($mcontext,$exten,'', new ext_hangup()); 3553 3738 3554 3739 /* macro-hangupcall */ … … 4866 5051 //build the recording variable 4867 5052 $recording = "out=".$record_out."|in=".$record_in; 4868 5053 5054 // strip the ugly return of the gui radio funciton which comes back as "recording_out_internal=always" for example 5055 // 5056 if (isset($recording_in_external)) { 5057 $rec_tmp = explode('=',$recording_in_external,2); 5058 $recording_in_external = count($rec_tmp) == 2 ? $rec_tmp[1] : 'dontcare'; 5059 } else { 5060 $recording_in_external = 'dontcare'; 5061 } 5062 if (isset($recording_out_external)) { 5063 $rec_tmp = explode('=',$recording_out_external,2); 5064 $recording_out_external = count($rec_tmp) == 2 ? $rec_tmp[1] : 'dontcare'; 5065 } else { 5066 $recording_out_external = 'dontcare'; 5067 } 5068 if (isset($recording_in_internal)) { 5069 $rec_tmp = explode('=',$recording_in_internal,2); 5070 $recording_in_internal = count($rec_tmp) == 2 ? $rec_tmp[1] : 'dontcare'; 5071 } else { 5072 $recording_in_internal = 'dontcare'; 5073 } 5074 if (isset($recording_out_internal)) { 5075 $rec_tmp = explode('=',$recording_out_internal,2); 5076 $recording_out_internal = count($rec_tmp) == 2 ? $rec_tmp[1] : 'dontcare'; 5077 } else { 5078 $recording_out_internal = 'dontcare'; 5079 } 5080 if (isset($recording_ondemand)) { 5081 $rec_tmp = explode('=',$recording_ondemand,2); 5082 $recording_ondemand = count($rec_tmp) == 2 ? $rec_tmp[1] : 'disabled'; 5083 } else { 5084 $recording_ondemand = 'disabled'; 5085 } 5086 4869 5087 //escape quotes and any other bad chars: 4870 5088 if(!get_magic_quotes_gpc()) { … … 4930 5148 $astman->database_put("AMPUSER",$extension."/answermode","\"".isset($answermode)?$answermode:'disabled'."\""); 4931 5149 5150 $astman->database_put("AMPUSER",$extension."/recording/in/external","\"".$recording_in_external."\""); 5151 $astman->database_put("AMPUSER",$extension."/recording/out/external","\"".$recording_out_external."\""); 5152 $astman->database_put("AMPUSER",$extension."/recording/in/internal","\"".$recording_in_internal."\""); 5153 $astman->database_put("AMPUSER",$extension."/recording/out/internal","\"".$recording_out_internal."\""); 5154 $astman->database_put("AMPUSER",$extension."/recording/ondemand","\"".$recording_ondemand."\""); 5155 $astman->database_put("AMPUSER",$extension."/recording/priority","\"".isset($recording_priority)?$recording_priority:'10'."\""); 5156 4932 5157 switch ($call_screen) { 4933 5158 case '0': … … 5040 5265 $results['cfringtimer'] = (int) $astman->database_get("AMPUSER",$extension."/cfringtimer"); 5041 5266 $results['concurrency_limit'] = (int) $astman->database_get("AMPUSER",$extension."/concurrency_limit"); 5267 5268 $results['recording_in_external'] = strtolower($astman->database_get("AMPUSER",$extension."/recording/in/external")); 5269 $results['recording_out_external'] = strtolower($astman->database_get("AMPUSER",$extension."/recording/out/external")); 5270 $results['recording_in_internal'] = strtolower($astman->database_get("AMPUSER",$extension."/recording/in/internal")); 5271 $results['recording_out_internal'] = strtolower($astman->database_get("AMPUSER",$extension."/recording/out/internal")); 5272 $results['recording_ondemand'] = strtolower($astman->database_get("AMPUSER",$extension."/recording/ondemand")); 5273 $results['recording_priority'] = (int) $astman->database_get("AMPUSER",$extension."/recording/priority"); 5274 5042 5275 } else { 5043 5276 die_freepbx("Cannot connect to Asterisk Manager with ".$amp_conf["AMPMGRUSER"]."/".$amp_conf["AMPMGRPASS"]); … … 6230 6463 $currentcomponent->setoptlistopts('recordoptions', 'sort', false); 6231 6464 6465 $currentcomponent->addoptlistitem('recording_options', 'always', _("Always")); 6466 $currentcomponent->addoptlistitem('recording_options', 'dontcare', _("Don't Care")); 6467 $currentcomponent->addoptlistitem('recording_options', 'never', _("Never")); 6468 $currentcomponent->setoptlistopts('recording_options', 'sort', false); 6469 6470 for ($i=0; $i <= 20; $i++) { 6471 $currentcomponent->addoptlistitem('recording_priority_options', "$i", "$i"); 6472 } 6473 6474 $currentcomponent->addoptlistitem('recording_ondemand_options', 'disabled', _("Disable")); 6475 $currentcomponent->addoptlistitem('recording_ondemand_options', 'enabled', _("Enable")); 6476 $currentcomponent->setoptlistopts('recording_ondemand_options', 'sort', false); 6477 6232 6478 $currentcomponent->addoptlistitem('callwaiting', 'enabled', _("Enable")); 6233 6479 $currentcomponent->addoptlistitem('callwaiting', 'disabled', _("Disable")); … … 6511 6757 $currentcomponent->addguielem($section, new gui_selectbox('record_in', $currentcomponent->getoptlist('recordoptions'), $record_in, _("Record Incoming"), _("Record all inbound calls received at this extension."), false)); 6512 6758 $currentcomponent->addguielem($section, new gui_selectbox('record_out', $currentcomponent->getoptlist('recordoptions'), $record_out, _("Record Outgoing"), _("Record all outbound calls received at this extension."), false)); 6759 6760 $recording_in_external = isset($recording_in_external) ? $recording_in_external : 'dontcare'; 6761 $recording_out_external = isset($recording_out_external) ? $recording_out_external : 'dontcare'; 6762 $recording_in_internal = isset($recording_in_internal) ? $recording_in_internal : 'dontcare'; 6763 $recording_out_internal = isset($recording_out_internal) ? $recording_out_internal : 'dontcare'; 6764 $recording_ondemand = isset($recording_ondemand) ? $recording_ondemand : 'disabled'; 6765 $recording_priority = isset($recording_priority) ? $recording_priority : '10'; 6766 $currentcomponent->addguielem($section, new gui_radio('recording_in_external', $currentcomponent->getoptlist('recording_options'), $recording_in_external, _('Inbound External Calls'), _("Recording of inbound calls from external sources."))); 6767 $currentcomponent->addguielem($section, new gui_radio('recording_out_external', $currentcomponent->getoptlist('recording_options'), $recording_out_external, _('Outbound External Calls'), _("Recording of outbound calls to external sources."))); 6768 $currentcomponent->addguielem($section, new gui_radio('recording_in_internal', $currentcomponent->getoptlist('recording_options'), $recording_in_internal, _('Inbound Internal Calls'), _("Recording of calls received from other extensions on the system."))); 6769 $currentcomponent->addguielem($section, new gui_radio('recording_out_internal', $currentcomponent->getoptlist('recording_options'), $recording_out_internal, _('Outbound Internal Calls'), _("Recording of calls made to other extensions on the system."))); 6770 $currentcomponent->addguielem($section, new gui_radio('recording_ondemand', $currentcomponent->getoptlist('recording_ondemand_options'), $recording_ondemand, _('On Demand Recording'), _("Enable or disable the ability to do on demand (one-touch) recording. The overall calling policy rules still apply and if calls are already being recorded they can not be paused."))); 6771 $currentcomponent->addguielem($section, new gui_selectbox('recording_priority', $currentcomponent->getoptlist('recording_priority_options'), $recording_priority, _("Record Priority Policy"), _("Call recording policy priority relative to other extensions when there is a conflict between an extension wanting recording and the other not wanting it. On a tie the global policy (caller or callee) wins."), false)); 6513 6772 6514 6773 $section = _("Optional Destinations"); modules/branches/2.10/findmefollow/functions.inc.php
r11933 r12324 133 133 // the list 134 134 $ext->add($contextname, $grpnum, '', new ext_macro('record-enable','${DB(AMPUSER/'."$grpnum/followme/grplist)}-$grpnum".',${RecordMethod}')); 135 136 // Note there is no cancel later as the special case of follow-me, if they say record, it should stick 137 $ext->add($contextname, $grpnum, '', new ext_gosub('1','s','sub-record-check','exten,${EXTEN}')); 135 138 136 139 // MODIFIED (PL) modules/branches/2.10/queues/functions.inc.php
r12316 r12324 401 401 $ext->add('ext-queues', $exten, '', new ext_setvar('__ALERT_INFO', str_replace(';', '\;', $alertinfo))); 402 402 } 403 404 $ext->add('ext-queues', $exten, '', new ext_setvar('MONITOR_FILENAME','/var/spool/asterisk/monitor/q${EXTEN}-${STRFTIME(${EPOCH},,%Y%m%d-%H%M%S)}-${UNIQUEID}')); 403 $record_mode = $q['monitor-format'] ? 'always' : 'dontcare'; 404 $ext->add('ext-queues', $exten, '', new ext_gosub('1','s','sub-record-check',"q,$exten,$record_mode")); 405 405 406 if ($amp_conf['QUEUES_MIX_MONITOR']) { 406 407 $monitor_options = ''; … … 474 475 $ext->add('ext-queues', $exten, '', new ext_macro('blkvm-clr')); 475 476 } 477 // cancel any recording previously requested 478 // 479 $ext->add('ext-queues', $exten, '', new ext_gosub('1','s','sub-record-cancel')); 476 480 // If we are here, disable the NODEST as we want things to resume as normal 477 481 // … … 587 591 foreach($userlist as $item) { 588 592 $ext->add($from_queue_exten_only, $item[0], '', new ext_setvar('RingGroupMethod', 'none')); 589 $ext->add($from_queue_exten_only, $item[0], '', new ext_macro('record-enable',$item[0].",IN"));593 $ext->add($from_queue_exten_only, $item[0], '', new ext_macro('record-enable',$item[0].",IN")); 590 594 if ($has_extension_state) { 591 595 $ext->add($from_queue_exten_only, $item[0], '', new ext_macro('dial-one',',${DIAL_OPTIONS},'.$item[0])); … … 1356 1360 } 1357 1361 } 1358 ?>modules/branches/2.10/ringgroups/functions.inc.php
r12299 r12324 89 89 $toolate_id = $grp['toolate_id']; 90 90 $ringing = $grp['ringing']; 91 $recording = $grp['recording'] == '' ? 'dontcare' : $grp['recording']; 91 92 92 93 if($ringing == 'Ring' || empty($ringing) ) { … … 141 142 142 143 // recording stuff 143 $ext->add($contextname, $grpnum, '', new ext_setvar('RecordMethod','Group')); 144 $ext->add($contextname, $grpnum, '', new ext_macro('record-enable',$grplist.',${RecordMethod}')); 144 //$ext->add($contextname, $grpnum, '', new ext_setvar('RecordMethod','Group')); 145 //$ext->add($contextname, $grpnum, '', new ext_macro('record-enable',$grplist.',${RecordMethod}')); 146 147 //TODO: hardcoded needs to be configurable in the ringgroup 148 $ext->add($contextname, $grpnum, '', new ext_gosub('1','s','sub-record-check',"rg,$grpnum,$recording")); 145 149 146 150 // group dial … … 162 166 $ext->add($contextname, $grpnum, 'DIALGRP', new ext_macro('dial',$grptime.",$dialopts,".$grplist)); 163 167 } 168 $ext->add($contextname, $grpnum, '', new ext_gosub('1','s','sub-record-cancel')); 164 169 $ext->add($contextname, $grpnum, '', new ext_setvar('RingGroupMethod','')); 165 170 … … 241 246 } 242 247 243 function ringgroups_add($grpnum,$strategy,$grptime,$grplist,$postdest,$desc,$grppre='',$annmsg_id='',$alertinfo,$needsconf,$remotealert_id,$toolate_id,$ringing,$cwignore,$cfignore,$changecid='default',$fixedcid='',$cpickup='' ) {248 function ringgroups_add($grpnum,$strategy,$grptime,$grplist,$postdest,$desc,$grppre='',$annmsg_id='',$alertinfo,$needsconf,$remotealert_id,$toolate_id,$ringing,$cwignore,$cfignore,$changecid='default',$fixedcid='',$cpickup='', $recording='dontcare') { 244 249 global $db; 245 250 global $astman; … … 256 261 print_r($extens); 257 262 258 $sql = "INSERT INTO ringgroups (grpnum, strategy, grptime, grppre, grplist, annmsg_id, postdest, description, alertinfo, needsconf, remotealert_id, toolate_id, ringing, cwignore, cfignore, cpickup ) VALUES ('".$db->escapeSimple($grpnum)."', '".$db->escapeSimple($strategy)."', ".$db->escapeSimple($grptime).", '".$db->escapeSimple($grppre)."', '".$db->escapeSimple($grplist)."', '".$annmsg_id."', '".$db->escapeSimple($postdest)."', '".$db->escapeSimple($desc)."', '".$db->escapeSimple($alertinfo)."', '$needsconf', '$remotealert_id', '$toolate_id', '$ringing', '$cwignore', '$cfignore', '$cpickup')";263 $sql = "INSERT INTO ringgroups (grpnum, strategy, grptime, grppre, grplist, annmsg_id, postdest, description, alertinfo, needsconf, remotealert_id, toolate_id, ringing, cwignore, cfignore, cpickup, recording) VALUES ('".$db->escapeSimple($grpnum)."', '".$db->escapeSimple($strategy)."', ".$db->escapeSimple($grptime).", '".$db->escapeSimple($grppre)."', '".$db->escapeSimple($grplist)."', '".$annmsg_id."', '".$db->escapeSimple($postdest)."', '".$db->escapeSimple($desc)."', '".$db->escapeSimple($alertinfo)."', '$needsconf', '$remotealert_id', '$toolate_id', '$ringing', '$cwignore', '$cfignore', '$cpickup', '$recording')"; 259 264 $results = sql($sql); 260 265 … … 358 363 global $astman; 359 364 360 $results = sql("SELECT grpnum, strategy, grptime, grppre, grplist, annmsg_id, postdest, description, alertinfo, needsconf, remotealert_id, toolate_id, ringing, cwignore, cfignore, cpickup FROM ringgroups WHERE grpnum = '".$db->escapeSimple($grpnum)."'","getRow",DB_FETCHMODE_ASSOC);365 $results = sql("SELECT grpnum, strategy, grptime, grppre, grplist, annmsg_id, postdest, description, alertinfo, needsconf, remotealert_id, toolate_id, ringing, cwignore, cfignore, cpickup, recording FROM ringgroups WHERE grpnum = '".$db->escapeSimple($grpnum)."'","getRow",DB_FETCHMODE_ASSOC); 361 366 if ($astman) { 362 367 $astdb_changecid = strtolower($astman->database_get("RINGGROUP",$grpnum."/changecid")); modules/branches/2.10/ringgroups/install.php
r11381 r12324 23 23 `cfignore` VARCHAR ( 10 ), 24 24 `cpickup` VARCHAR ( 10 ), 25 `recording` VARCHAR ( 10 ) default 'dontcare', 25 26 PRIMARY KEY (`grpnum`) 26 27 ) … … 161 162 } 162 163 164 $sql = "SELECT recording FROM ringgroups"; 165 $check = $db->getRow($sql, DB_FETCHMODE_ASSOC); 166 if(DB::IsError($check)) { 167 // add new field 168 $sql = "ALTER TABLE ringgroups ADD recording VARCHAR( 10 ) default 'dontcare' ;"; 169 $result = $db->query($sql); 170 if(DB::IsError($result)) { die_freepbx($result->getDebugInfo()); } 171 out(_("added field recording to ringgroups table")); 172 } 173 163 174 // Version 2.5 migrate to recording ids 164 175 // modules/branches/2.10/ringgroups/module.xml
r11946 r12324 3 3 <repo>standard</repo> 4 4 <name>Ring Groups</name> 5 <version>2. 9.0.6</version>5 <version>2.10.0.0</version> 6 6 <publisher>FreePBX</publisher> 7 7 <license>GPLv2+</license> … … 12 12 </description> 13 13 <changelog> 14 *2.10.0.0* #5283 Overhaul Call Recording 14 15 *2.9.0.6* #5011 15 16 *2.9.0.5* spellings, locazliations modules/branches/2.10/ringgroups/page.ringgroups.php
r11883 r12324 13 13 14 14 $dispnum = 'ringgroups'; //used for switch on config.php 15 16 15 isset($_REQUEST['action'])?$action = $_REQUEST['action']:$action=''; 17 16 //the extension we are currently displaying … … 34 33 isset($_REQUEST['changecid'])?$changecid = $_REQUEST['changecid']:$changecid='default'; 35 34 isset($_REQUEST['fixedcid'])?$fixedcid = $_REQUEST['fixedcid']:$fixedcid=''; 35 isset($_REQUEST['recording'])?$recording = $_REQUEST['recording']:$recording='dontcare'; 36 36 37 37 if (isset($_REQUEST['goto0']) && isset($_REQUEST[$_REQUEST['goto0']."0"])) { … … 81 81 $conflict_url = framework_display_extension_usage_alert($usage_arr); 82 82 83 } elseif (ringgroups_add($account,$strategy,$grptime,implode("-",$grplist),$goto,$description,$grppre,$annmsg_id,$alertinfo,$needsconf,$remotealert_id,$toolate_id,$ringing,$cwignore,$cfignore,$changecid,$fixedcid,$cpickup )) {83 } elseif (ringgroups_add($account,$strategy,$grptime,implode("-",$grplist),$goto,$description,$grppre,$annmsg_id,$alertinfo,$needsconf,$remotealert_id,$toolate_id,$ringing,$cwignore,$cfignore,$changecid,$fixedcid,$cpickup,$recording)) { 84 84 needreload(); 85 85 redirect_standard(); … … 97 97 if ($action == 'edtGRP') { 98 98 ringgroups_del($account); 99 ringgroups_add($account,$strategy,$grptime,implode("-",$grplist),$goto,$description,$grppre,$annmsg_id,$alertinfo,$needsconf,$remotealert_id,$toolate_id,$ringing,$cwignore,$cfignore,$changecid,$fixedcid,$cpickup );99 ringgroups_add($account,$strategy,$grptime,implode("-",$grplist),$goto,$description,$grppre,$annmsg_id,$alertinfo,$needsconf,$remotealert_id,$toolate_id,$ringing,$cwignore,$cfignore,$changecid,$fixedcid,$cpickup,$recording); 100 100 needreload(); 101 101 redirect_standard('extdisplay'); … … 146 146 $changecid = isset($thisgrp['changecid']) ? $thisgrp['changecid'] : 'default'; 147 147 $fixedcid = isset($thisgrp['fixedcid']) ? $thisgrp['fixedcid'] : ''; 148 $recording = $thisgrp['recording']; 148 149 unset($grpliststr); 149 150 unset($thisgrp); … … 438 439 </tr> 439 440 441 <tr><td colspan="2"><h5><?php echo _("Call Recording") ?><hr></h5></td></tr> 442 <tr> 443 <td><a href="#" class="info"><?php echo _("Record Calls")?><span><?php echo _('You can always record calls that come into this ring group, never record them, or allow the extension that answers to do on-demand recording. If recording is denied then one-touch on demand recording will be blocked.')?></span></a></td> 444 <td><span class="radioset"> 445 <input type="radio" id="record_always" name="recording" value="always" <?php echo ($recording=='always'?'checked':'');?>><label for="record_always"><?php echo _('Always'); ?></label> 446 <input type="radio" id="record_dontcare" name="recording" value="dontcare" <?php echo ($recording=='dontcare'?'checked':'');?>><label for="record_dontcare"><?php echo _('On Demand')?></label> 447 <input type="radio" id="record_never" name="recording" value="never" <?php echo ($recording=='never'?'checked':'');?>><label for="record_never"><?php echo _('Never'); ?></label> 448 </span></td> 449 </tr> 450 440 451 <?php 441 452 // implementation of module hook
