⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menus.html.svn-base

📁 asterisk-gui asterisk网关接口编程 控制asterisk的接口
💻 SVN-BASE
📖 第 1 页 / 共 4 页
字号:
	if(voicemenusdata[_vmv].extensions['s'] && voicemenusdata[_vmv].extensions['s'].length > 0 ){		// you might be tempted to say " newpriority = voicemenusdata[_vmv].extensions['s'].length + 1; " but this won't work cause 		// you might be dealing a "[s,1][s,3][s,7]"  where the array length is 3 - but new priority shud be 8		// so ,		var laststep_tmp = voicemenusdata[_vmv].extensions['s'][ voicemenusdata[_vmv].extensions['s'].length -1 ] ;		var laststep_priority = ASTGUI.parseContextLine.getPriority( laststep_tmp );		// gui versions before AA50 firmware 1.1 used 's,n'		// this is updated to's,number' in 1.1		// so if we find a old format - we will delete all the 's' extension and update it to new format		newpriority = ( laststep_priority == 'n' ) ? voicemenusdata[_vmv].extensions['s'].length + 1 : Number(laststep_priority) + 1 ;	}else{		newpriority = 1;	}	switch ( _nsa.value ){	case 'Answer':		action_string = "s,"+ newpriority+ ",Answer";		break;	case 'Authenticate':		action_string = "s,"+ newpriority+ ",Authenticate(" + _nsv.value + ")";		break;	case 'DISA':		action_string = "s,"+ newpriority+ ",DISA(" + _nsv.value + ")";		break;	case 'Background':		action_string = "s,"+ newpriority+ ",Background(" + _nsv.value + ")";		break;	case 'Busy':		action_string = "s,"+ newpriority+ ",Busy";		break;	case 'Congestion':		action_string = "s,"+ newpriority+ ",Congestion";		break;	case 'DigitTimeout':		action_string = "s,"+ newpriority+ ",Set(TIMEOUT(digit)=" + _nsv.value + ")";		break;	case 'ResponseTimeout':		action_string = "s,"+ newpriority+ ",Set(TIMEOUT(response)=" + _nsv.value + ")";		break;	case 'Playback':		action_string = "s,"+ newpriority+ ",Playback(" + _nsv.value + ")";		break;	case 'Wait':		action_string = "s,"+ newpriority+ ",Wait(" + _nsv.value + ")";		break;	case 'WaitExten':		action_string = "s,"+ newpriority+ ",WaitExten(" + _nsv.value + ")";		break;	case 'GotoMenu':		action_string = "s,"+ newpriority+ ",Goto(" + _nsv.value + "|s|1)";		break;	case 'GotoExtension':		action_string = "s,"+ newpriority+ ",Goto(default|" + _nsv.value + "|1)";		break;	case 'GotoTimeBasedRule':		//action_string = "s,"+ newpriority+ ",Goto(" + _$('tbr').value + ")";		break;	case 'DialRingGroup':		action_string = "s,"+ newpriority+ ",Goto(" + _$('rgrp').value + ")";		break;	case 'Hangup':		action_string = "s,"+ newpriority+ ",Hangup";		break;	case 'GotoDirecotry':		action_string = "s,"+ newpriority+ ",Directory(default|" + _vmv + "||)";		break;	case 'CheckOwnVoiceMail':		action_string = "s,"+ newpriority+ ",VoiceMailMain(${CALLERID(num)}@default)" ;		break;	default : 		action_string = "s,undefined,undefined"; 	}	var after = function(t){		setTimeout(function(){ _$('status_message').style.display = 'none'; },sc_displaytime);		hide_addStep();		// if request successfull then add this to the steps select box		var newoption = document.createElement("option"); 		newoption.text = format_step(action_string ); 		newoption.value = action_string ;		var _steps = _$('steps') ;		_steps.options.add ( newoption );		// and also add the information to the voicemenus data		if(voicemenusdata[_vmv].extensions['s']){			voicemenusdata[_vmv].extensions['s'].push(action_string);		}else{			voicemenusdata[_vmv].extensions['s'] = new Array;			voicemenusdata[_vmv].extensions['s'][0] = action_string;		}		// empty this textbox & disable this button, select the newly added item to the steps options box		_nsa.selectedIndex = 0;		_$('deletestep').disabled = false;		_steps.selectedIndex = _steps.length - 1 ;		gui_feedback('New step added !','blue');		update_updown();		_nsv.value = "";		_nss.value="";		_nsv.style.display = "none" ;		_nss.style.display = "none" ;		_$('add_newstep_extensions').style.display = "none";		_$('add_newstep_menus').style.display = "none";		_nsvd = _$('newstep_var_digit'); 		_nsvd.value= "";		_nsvd.style.display= "none" ;		if(laststep_priority == 'n' ){ window.location.reload(); }	}	if( laststep_priority=='n' ){ // if old configuration - update to new 		var chs = new listOfActions(); 		chs.filename('extensions.conf'); var c = 0;		for(var vg=0; vg < voicemenusdata[_vmv]['extensions']['s'].length ; vg++ ){			chs.build_action ( 'delete', c , _vmv, "exten", '', voicemenusdata[_vmv]['extensions']['s'][vg] );		}		var tmp_priority = 1;		for(var vg=0; vg < voicemenusdata[_vmv]['extensions']['s'].length ; vg++ ){			var tmp_step = 's,' + tmp_priority + ','+ ASTGUI.parseContextLine.getAction( voicemenusdata[_vmv]['extensions']['s'][vg] ) ;			voicemenusdata[_vmv]['extensions']['s'][vg] = tmp_step;			tmp_priority++ ;			chs.build_action ( 'append', c , _vmv, 'exten', tmp_step );		}		chs.build_action( 'append', c , _vmv, 'exten', action_string );		chs.callActions(after);		return;	}else{		uri += build_action('append', 0, _vmv,"exten", action_string ); 		makerequest('u','extensions.conf', uri, after );		return;	}}function next_freevmenu(){	 // return the next smallest available voicemenu name	var x=1;	while(typeof voicemenusdata['voicemenu-custom-'+x] != 'undefined' ) x++;	return 'voicemenu-custom-'+x ;}function save_vmenu(){	var _ae = _$('alias_exten') ;	var _vms = _$('vmenus') ;	var _ale = _$('allowexten');	if( _ae.value.length > 0 && localextenlength !=0 && localextenlength !=  _ae.value.length){		gui_alert("Sorry, An Extension must be  "+ localextenlength  + " digits !");		_ae.focus();		return false;	}	if (!check_patternonfields( [ 'comment', 'newstep_var_digit' ] ) ){		return false;	}	_$('status_message').style.display ="" ;	var _cmv = _$('comment').value ;	var uri = "" ;	var p = 0 ;	var buildstring = new Object ;	if( _vms.options[_vms.selectedIndex].innerHTML=='New Entry' ){		var current_vmenu = next_freevmenu();		uri += build_action('newcat', p, current_vmenu,"", ""); p = p+1;		uri += build_action('append', p, current_vmenu,"comment", _cmv ); p = p+1;		uri += build_action('append', p, current_vmenu,"alias_exten", _ae.value); p = p+1;		if(_ae.value.length > 0){			// alias for this voicemenu in [default] section of extensions.conf			var alias_string = _ae.value + ",1,Goto(" + current_vmenu + "|s|1)"  ;			uri += build_action('append', p, specialcontext ,"exten", alias_string ); p = p+1;		}		if( _ale.checked){ uri += build_action('append', p, current_vmenu,"include", "default"); p = p+1; }		uri += build_action('append', p, current_vmenu,"exten", answer_call_string); p = p+1;	}else{		// Updating existing Voicemenu		var current_vmenu = _vms.value;		if(  voicemenusdata[current_vmenu].comment != _cmv ){			uri += build_action('update', p, current_vmenu ,"comment", _cmv); p = p+1;			change_vmenuname_inlistofmenus(voicemenusdata[current_vmenu].comment,_cmv);			voicemenusdata[current_vmenu].comment = _cmv;		}				if(  voicemenusdata[current_vmenu].alias_exten != _ae.value ){			var existing_alias_string = voicemenusdata[current_vmenu].alias_exten + ",1,Goto(" + current_vmenu + "|s|1)"  ;			if( _ae.value.length > 0 ){				// change alias for this voicemenu in 'default' section of extensions.conf				var new_alias_string = _ae.value + ",1,Goto(" + current_vmenu + "|s|1)"  ;				uri += build_action('update', p, specialcontext ,"exten", new_alias_string,existing_alias_string); p = p+1;			}else{				// if the user is deleting the alias for this voicemenu, then delete the defined alias in the [default] extensions.conf				uri += build_action('delete', p, specialcontext ,"exten", "",existing_alias_string); p = p+1;			}			uri += build_action('update', p, current_vmenu ,"alias_exten", _ae.value ); p = p+1;			voicemenusdata[current_vmenu].alias_exten = _ae.value;		}				if( voicemenusdata[current_vmenu].include =="default" && !_ale.checked ){			uri += build_action('delete', p, current_vmenu ,"include",""); p = p+1;			voicemenusdata[current_vmenu].include = "" ;		}else if ( voicemenusdata[current_vmenu].include !="default"  && _ale.checked ){			uri += build_action('append', p, current_vmenu,"include", "default"); p = p+1;			voicemenusdata[current_vmenu].include = "default" ;		}else if ( !voicemenusdata[current_vmenu].include && _ale.checked ){			uri += build_action('append', p, current_vmenu ,"include", "default"); p = p+1;			voicemenusdata[current_vmenu].include = "default" ;		}		for (var k=0; k< keys.length; k++){			if(voicemenusdata[current_vmenu].extensions[keys[k]]){				uri += build_action('delete', p, current_vmenu,"exten", "", voicemenusdata[current_vmenu].extensions[keys[k]][0] ); p = p+1;			}		}	}	// Build exten strings for enabled keys and append/update the 	for (var k=0; k< keys.length; k++){		var current_key_action='keypress_'+ keys[k] + '_action';		var current_key_text='keypress_'+ keys[k] + '_text';		var current_key_exts='keypress_'+ keys[k] + '_exts';		var current_key_menus='keypress_'+ keys[k] + '_menus';			if( $(current_key_action).value == "disabled")			continue;		else if( $(current_key_action).value == "gotomenu" )				buildstring[keys[k]] = keys[k] + ",1,Goto("+ $(current_key_menus).value + "|s|1)" ;							else if( $(current_key_action).value == "gotoextension" )				buildstring[keys[k]] = keys[k] + ",1,Goto(default|"+ $(current_key_exts).value + "|1)" ;							else if( $(current_key_action).value == "Custom" ) 				buildstring[keys[k]] = keys[k] + ",1,"+ $(current_key_text).value ;		else if( $(current_key_action).value == "Hangup" )				buildstring[keys[k]] = keys[k] + ",1,"+ "Hangup" ;							else if( $(current_key_action).value == "PlayInvalid" ) 				buildstring[keys[k]] = keys[k] + ",1,"+ "Playback(invalid)" ;							uri += build_action('append', p, current_vmenu,"exten", buildstring[keys[k]]); p = p+1;	}	makerequest('u','extensions.conf', uri ,		function(t){			setTimeout( function(){_$('status_message').style.display="none"; },sc_displaytime );			gui_feedback('Updated.','blue');			_$('savevmenu').disabled = true;			_$('save').disabled = true;			_$('cancel').disabled = true;						if( _vms.options[_vms.selectedIndex].innerHTML=='New Entry' ){ // (if new Voicemenu 				voicemenusdata[current_vmenu] = new Object();					voicemenusdata[current_vmenu].comment =  _cmv ;				voicemenusdata[current_vmenu].alias_exten =  _ae.value;				voicemenusdata[current_vmenu].extensions = new Object();				// add the "s,1,Answer" data to voicemenus data				voicemenusdata[current_vmenu].extensions['s'] = new Array();				voicemenusdata[current_vmenu].extensions['s'][0] = answer_call_string;				for (var k=0; k< keys.length; k++){					if( buildstring[keys[k]] ){						voicemenusdata[current_vmenu].extensions[keys[k]] = new Array();						voicemenusdata[current_vmenu].extensions[keys[k]][0] = buildstring[keys[k]] ;					}				}				// update vmenus				_vms.options[_vms.selectedIndex].text = "VoiceMenu - " + _cmv;				_vms.options[_vms.selectedIndex].value = current_vmenu;				select_vmenu();				// add the new menu to the list of menus being displayed in the keypad options				add_newvmenu_tolistofkeymenus();			}else{ // if editing existing keypress options				for (var k=0; k< keys.length; k++){					if( buildstring[keys[k]] ){						voicemenusdata[current_vmenu].extensions[keys[k]] = new Array();						voicemenusdata[current_vmenu].extensions[keys[k]][0] = buildstring[keys[k]] ;					}else{						if( voicemenusdata[current_vmenu].extensions[keys[k]] ){							voicemenusdata[current_vmenu].extensions[keys[k]] = [];						}					}				}			}		}	);}function  enable_savecancel(){	_$('save').disabled=false;	_$('savevmenu').disabled = false;	_$('cancel').disabled = false;}function generate_fields(key){	var t = '<select  class="input8" style="font-family: Verdana, Arial, Helvetica, Sans-Serif;font-size: 11px;"   id=\'keypress_'+ key + '_action\' onchange="key_action(this.value, \'' + key + '\')">\n';	t += '<option value="disabled">Disabled</option>\n' ;	t += '<option value="gotomenu">Goto Menu</option>\n';	t += '<option value="gotoextension">Goto Extension</option>\n';//	t += '<option value="Custom">Custom</option>\n';	t += '<option value="Hangup">Hangup</option>\n';	t += '<option value="PlayInvalid">Play Invalid</option>\n';	t += '</select>&nbsp;<input type="text" class="input8" size=16 style="display:none;font-family: Verdana, Arial, Helvetica, Sans-Serif;font-size: 11px;" id="keypress_' + key+ '_text" onchange="enable_savecancel()">\n';	t += '<select  style="display:none; font-family: Verdana, Arial, Helvetica, Sans-Serif;font-size: 11px;"  id="keypress_'+ key + '_menus" onchange="enable_savecancel()" class="input8"></select>\n';	t += '<select  style="display:none; font-family: Verdana, Arial, Helvetica, Sans-Serif;font-size: 11px;"  id="keypress_'+ key + '_exts" onchange="enable_savecancel()" class="input8"></select>\n';	return t;}function step_onselect(){	// enable delete button	if(_$('steps').value){		_$('deletestep').disabled = false;	}	// enable Up/Down buttons accordingly	update_updown();}function update_updown(){	var _steps = _$('steps') ;	_$('stepUp').disabled =( _steps.selectedIndex ) ? false : true ; 	_$('stepDown').disabled = ( _steps.selectedIndex != (_steps.length-1) ) ? false: true ;}function step_up(){ // Swap x, x-1	var _steps = _$('steps') ; 	swap_step(_steps.selectedIndex, _steps.selectedIndex-1 );}function step_down(){	//swap x, x+1	var _steps = _$('steps') ;	swap_step( _steps.selectedIndex, _steps.selectedIndex+1 );}function swap_step(a,b){	var _steps = _$('steps');	var _vms_v = _$('vmenus').value ;	var tmp1 = _steps.options[a].value.split(",") ;	var step1_action = tmp1.slice(2).join(",");	var tmp2 = _steps.options[b].value.split(",") ;	var step2_action = tmp2.slice(2).join(",");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -