public function postInstall() { parent::postInstall(); $featurecodes = array(array('IVR Return', '', '<condition field="${ivr_path}" expression="(.*)-(.*)-.*+$" break="never">\\n\\t<action application="set" data="ivr_path=$1"/>\\n\\t<action application="transfer" data="$2"/>\\n\\t<anti-action application="set" data="ivr_path="/>\\t<anti-action application="transfer" data="${vm-operator-extension}"/>\\n</condition>'), array('Redial', 'Call the person you most recently called', '<action application="transfer" data="\\${hash(select/\\${domain_name}-last_dial/\\${caller_id_number})}"/>'), array('Call Return', '', '<action application="transfer" data="\\${hash(select/\\${domain_name}-call_return/\\${caller_id_number})}"/>'), array('Voicemail', 'Listen to voicemail for any extension (requires pin)', '<action application="answer"/>\\n<action application="sleep" data="1000"/>\\n<action application="voicemail" data="check default voicemail_%ACCOUNT_ID%"/>'), array('Voicemail Quickauth', 'Listen to voicemail for your extension (requires pin)', '<condition field="${user_data(${sip_from_user}@${sip_from_host} param mwi-account)}" expression="^(.+)@(.+)$">\\n\\t<action application="answer"/>\\n\\t<action application="sleep" data="1000"/>\\n\\t<action application="voicemail" data="check default \\$2 \\$1"/>\\n\\t<action application="hangup"/>\\n\\t<anti-action application="answer"/>\\n\\t<anti-action application="sleep" data="1000"/>\\n\\t<anti-action application="voicemail" data="check default voicemail_%ACCOUNT_ID%"/>\\n\\t<anti-action application="hangup"/>\\n</condition>'), array('Voicemail NoAuth', 'Listen to voicemail for your extension (does not require pin)', '<condition field="${user_data(${sip_from_user}@${sip_from_host} param mwi-account)}" expression="^(.+)@(.+)$">\\n\\t<action application="answer"/>\\n\\t<action application="sleep" data="1000"/>\\n\\t<action application="set" data="voicemail_authorized=\\${sip_authorized}"/>\\n\\t<action application="voicemail" data="check default \\$2 \\$1"/>\\n\\t<action application="hangup"/>\\n\\t<anti-action application="answer"/>\\n\\t<anti-action application="sleep" data="1000"/>\\n\\t<anti-action application="voicemail" data="check default voicemail_%ACCOUNT_ID%"/>\\n\\t<anti-action application="hangup"/>\\n</condition>'), array('Park Call', '', '<action application="answer"/>\\n<action application="sleep" data="1000"/>\\n<action application="valet_park" data="account_%ACCOUNT_ID% auto in 1 10"/>'), array('Unpark', '', '<action application="answer"/>\\n<action application="sleep" data="1000"/>\\n<action application="valet_park" data="account_%ACCOUNT_ID% ask 1 10 10000 ivr/ivr-enter_ext_pound.wav"/>\\n<action application="hangup"/>'), array('Echo test', '', '<action application="answer"/>\\n<action application="echo"/>'), array('Delayed Echo Test', '', '<action application="answer"/>\\n<action application="delay_echo" data="1000"/>'), array('Tone Test', 'Play a 2600hz Tone until the caller hangs up', '<action application="answer"/>\\n<action application="playback" data="tone_stream://%(1000,0,2600);loops=-1"/>'), array('Hold Music', 'Play Music-on-hold until the caller hangs up', '<action application="answer"/>\\n<action application="playback" data="\\$\\${hold_music}"/>')); foreach ($featurecodes as $fc) { $cfc = new CustomFeatureCode(); $cfc['name'] = $fc[0]; $cfc['description'] = $fc[1]; $cfc['dialplan_code'] = $fc[2]; $cfc->save(); } }
public function postUp() { // This array contains: // 1. The original name, pre-featurecode-1.2 // 2. The display name (used in drop-down) // 3. Description (not used, I think?) // 4. The dialplan. $featurecodes = array(array('ivr_return', 'IVR Return', '', ' <condition field="${ivr_path}" expression="(.*)-(.*)-.*+$" break="never"> <action application="set" data="ivr_path=$1"/> <action application="transfer" data="$2"/> <anti-action application="set" data="ivr_path="/> <anti-action application="transfer" data="${vm-operator-extension}"/> </condition>'), array('redial', 'Redial', 'Call the person you most recently called', '<action application="transfer" data="${hash(select/${domain_name}-last_dial/${caller_id_number})}"/>'), array('call_return', 'Call Return', '', '<action application="transfer" data="${hash(select/${domain_name}-call_return/${caller_id_number})}"/>'), array('voicemail', 'Voicemail', 'Listen to voicemail for any extension (requires pin)', ' <action application="answer"/> <action application="sleep" data="1000"/> <action application="voicemail" data="check default voicemail_%ACCOUNT_ID%"/>'), array('voicemail_quickauth', 'Voicemail for calling extension', 'Listen to voicemail for your extension (requires pin)', ' <condition field="${user_data(${sip_from_user}@${sip_from_host} param mwi-account)}" expression="^(.+)@(.+)$"> <action application="answer"/> <action application="sleep" data="1000"/> <action application="voicemail" data="check default $2 $1"/> <action application="hangup"/> <anti-action application="answer"/> <anti-action application="sleep" data="1000"/> <anti-action application="voicemail" data="check default voicemail_%ACCOUNT_ID%"/> <anti-action application="hangup"/> </condition>'), array('voicemail_noauth', 'Voicemail Preauthenticated', 'Listen to voicemail for your extension (does not require pin)', ' <condition field="${user_data(${sip_from_user}@${sip_from_host} param mwi-account)}" expression="^(.+)@(.+)$"> <action application="answer"/> <action application="sleep" data="1000"/> <action application="set" data="voicemail_authorized=${sip_authorized}"/> <action application="voicemail" data="check default $2 $1"/> <action application="hangup"/> <anti-action application="answer"/> <anti-action application="sleep" data="1000"/> <anti-action application="voicemail" data="check default voicemail_%ACCOUNT_ID%"/> <anti-action application="hangup"/> </condition>'), array('park', 'Park Call', '', ' <action application="answer"/> <action application="sleep" data="1000"/> <action application="valet_park" data="account_%ACCOUNT_ID% auto in 1 10"/>'), array('unpark', 'Unpark', '', ' <action application="answer"/> <action application="sleep" data="1000"/> <action application="valet_park" data="account_%ACCOUNT_ID% ask 1 10 10000 ivr/ivr-enter_ext_pound.wav"/> <action application="hangup"/>'), array('echo', 'Echo test', 'Echos back anything said by caller immediately', ' <action application="answer"/> <action application="echo"/>'), array('delay_echo', 'Delayed Echo Test', 'Echos back anything said by caller, with 1 second delay', ' <action application="answer"/> <action application="delay_echo" data="1000"/>'), array('tone_test', 'Tone Test', 'Play a 2600hz Tone until the caller hangs up', ' <action application="answer"/> <action application="playback" data="tone_stream://%(1000,0,2600);loops=-1"/>'), array('hold_music', 'Hold Music', 'Play Music-on-hold until the caller hangs up', ' <action application="answer"/> <action application="playback" data="$${hold_music}"/>'), array('eavesdrop', 'Eavesdrop', 'Listen in on a currently running call', ' <action application="answer"/> <action application="eavesdrop" data="${hash(select/spymap/$1)}"/>'), array('uuid_standby', 'UUID Standby', '', ' <condition field="destination_number" expression="(.*)"> <action application="set" data="res=${callcenter_config(agent set uuid agent_${agent_id} \'${uuid}\')}" /> <action application="set" data="res=${callcenter_config(agent set type agent_${agent_id} \'uuid-standby\')}" /> <action application="set" data="res=${callcenter_config(agent set status agent_${agent_id} \'Available (On Demand)\')}" /> <action application="set" data="res=${callcenter_config(agent set state agent_${agent_id} \'Waiting\')}" /> <action application="set" data="cc_warning_tone=tone_stream://%(200,0,500,600,700)"/> <action application="answer" /> <action application="playback" data="$${hold_music}"/> <action application="transfer" data="$num"/> </condition>'), array('agent_login', 'Agent Login', 'Mark caller as available for calls', ' <action application="set" data="res=${callcenter_config(agent set status agent_${agent_id} \'Available\')}" /> <action application="answer" data=""/> <action application="sleep" data="500"/> <action application="playback" data="ivr/ivr-you_are_now_logged_in.wav"/>'), array('agent_logout', 'Agent Logout', 'Mark caller as unavailable for calls', ' <action application="set" data="res=${callcenter_config(agent set status agent_${agent_id} \'Logged Out\')}" /> <action application="answer" data=""/> <action application="sleep" data="500"/> <action application="playback" data="ivr/ivr-you_are_now_logged_out.wav"/>')); foreach ($featurecodes as &$fc) { $cfc = new CustomFeatureCode(); $cfc['name'] = $fc[1]; $cfc['description'] = $fc[2]; $cfc['dialplan_code'] = $fc[3]; $cfc->save(); $map[$fc[0]] = $cfc['custom_feature_code_id']; } foreach (Doctrine::getTable('FeatureCode')->findAll() as $fc) { if (array_key_exists($fc['registry']['feature'], $map)) { $fc['custom_feature_code_id'] = $map[$fc['registry']['feature']]; $fc->save(); } } }