mirror of https://github.com/asterisk/asterisk
				
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							834 lines
						
					
					
						
							18 KiB
						
					
					
				
			
		
		
	
	
							834 lines
						
					
					
						
							18 KiB
						
					
					
				| ///////////////////////////////////////////////////////////////////////////////
 | |
| // Helpdesk Queue
 | |
| 
 | |
| context hd-queue {
 | |
| 	s => {
 | |
| 		NoOp(Add a background sound to tell the user their options);
 | |
| 		Queue(helpdesk|t);
 | |
| 		NoOp(Put in options to apologize and send user to voicemail);
 | |
| 	};
 | |
| 
 | |
| 	0 => goto default|0|1;
 | |
| 	1 => {
 | |
| 		Dial(u41950@svm1.shsu.edu);
 | |
| 		Congestion(10);
 | |
| 		Hangup;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| 
 | |
| context l903-calling {
 | |
| 	_9903NXXXXXX => {
 | |
| 		Realtime(l903_ext|exchange|${EXTEN:4:3}|l903_);
 | |
| 		if ("${l903_exchange}foo" = "foo") {
 | |
| 			Playback(num-outside-area);
 | |
| 			SayDigits(1);
 | |
| 			Playback(and-area-code);
 | |
| 			Playback(before-the-number);
 | |
| 			Hangup;
 | |
| 		};
 | |
| 		&dialout(${EXTEN});
 | |
| 		Congestion(10);
 | |
| 		Hangup;
 | |
| 	};
 | |
| };
 | |
| ///////////////////////////////////////////////////////////////////////////////
 | |
| // Extensions pulled from houston.conf
 | |
| // Converted the extension list to the database
 | |
| 
 | |
| context houston-calling {
 | |
| 	_9713NXXXXXX => {
 | |
| 		Realtime(hou_713_ext|exchange|${EXTEN:4:3}|hou_713_);
 | |
| 		if ("${hou_713_exchange}foo" = "foo") {
 | |
| 			Playback(num-outside-area);
 | |
| 			SayDigits(1);
 | |
| 			Playback(and-area-code);
 | |
| 			Playback(before-the-number);
 | |
| 			Hangup;
 | |
| 		};
 | |
| 		&dialout(${EXTEN});
 | |
| 		Congestion(10);
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	_9281NXXXXXX => {
 | |
| 		Realtime(hou_281_ext|exchange|${EXTEN:4:3}|hou_281_);
 | |
| 		if ("${hou_281_exchange}foo" = "foo") {
 | |
| 			Playback(num-outside-area);
 | |
| 			SayDigits(1);
 | |
| 			Playback(and-area-code);
 | |
| 			Playback(before-the-number);
 | |
| 			Hangup;
 | |
| 		};
 | |
| 		&dialout(${EXTEN});
 | |
| 		Congestion(10);
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	_9832NXXXXXX => {
 | |
| 		Realtime(hou_832_ext|exchange|${EXTEN:4:3}|hou_832_);
 | |
| 		if ("${hou_832_exchange}foo" = "foo") {
 | |
| 			Playback(num-outside-area);
 | |
| 			SayDigits(1);
 | |
| 			Playback(and-area-code);
 | |
| 			Playback(before-the-number);
 | |
| 			Hangup;
 | |
| 		};
 | |
| 		&dialout(${EXTEN});
 | |
| 		Congestion(10);
 | |
| 		Hangup;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| 
 | |
| ///////////////////////////////////////////////////////////////////////////////
 | |
| // Extensions pulled from huntsville.conf
 | |
| // Converted the extension list to the database
 | |
| 
 | |
| context huntsville-calling {
 | |
| 	_9NXXXXXX => {
 | |
| 		Realtime(hv_ext|exchange|${EXTEN:1:3}|hv_);
 | |
| 		if ("${hv_exchange}foo" = "foo") {
 | |
| 			Playback(num-outside-area);
 | |
| 			SayDigits(1);
 | |
| 			Playback(and-area-code);
 | |
| 			Playback(before-the-number);
 | |
| 			Hangup;
 | |
| 		};
 | |
| 		&dialout(${EXTEN});
 | |
| 		Congestion(10);
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	_NXXXXXX => {
 | |
| 		NoOp(Stripping last four to see what extension we're dialing);
 | |
| 		Set(LAST4=${EXTEN:3});
 | |
| 		StripLSD(4);
 | |
| 	};
 | |
| 
 | |
| 	i => Playback(pbx-invalid);
 | |
| 	h => Hangup;
 | |
| };
 | |
| 
 | |
| ///////////////////////////////////////////////////////////////////////////////
 | |
| // Extensions pulled from macros.conf
 | |
| 
 | |
| macro dialout( number ) {
 | |
| 	Realtime(call_info|exten|${CALLERIDNUM:5}|mon_);
 | |
| 	if ("${mon_monitor}" = "YES") {
 | |
| 		Dial(SIP/${number}@sgw1.shsu.edu,,wW);
 | |
| 		Dial(SIP/${number}@sgw2.shsu.edu,,wW);
 | |
| 	} else {
 | |
| 		Dial(SIP/${number}@sgw1.shsu.edu);
 | |
| 		Dial(SIP/${number}@sgw2.shsu.edu);
 | |
| 	};
 | |
| };
 | |
| 
 | |
| // Standard extension macro:
 | |
| //  ${ext} - Extension
 | |
| macro stdexten( ext ) {
 | |
| 	Realtime(sipusers|name|${ext}|sip_user_);
 | |
| 	Realtime(call_info|exten|${ext}|info_);
 | |
| 	if ("${sip_user_name}foo" = "foo") {
 | |
| 		Wait(1);
 | |
| 		&dialout(${ext});
 | |
| 		Congestion(10);
 | |
| 		Hangup;
 | |
| 	};
 | |
| 	NoOp(${CALLERIDNUM});
 | |
| 	RealtimeUpdate(call_info|exten|${ext}|calltrace|${CALLERIDNUM});
 | |
| 	System(/usr/local/bin/db_update.sh call_info calltrace ${CALLERIDNUM} exten ${ext} &);
 | |
| 	&checkdnd(${ext});
 | |
| 	&checkcf(${ext});
 | |
| 	Realtime(call_info|exten|${CALLERIDNUM:5}|mon_);
 | |
| 	if ("${mon_monitor}" = "YES") {
 | |
| 		Dial(SIP/${info_forwardto},25,wW);
 | |
| 	} else {
 | |
| 		Dial(SIP/${info_forwardto},25);
 | |
| 	};
 | |
| 	switch ("${DIALSTATUS}") {
 | |
| 		case "BUSY":
 | |
| 			&checkcfb(${ext});
 | |
| 			break;
 | |
| 		case "CHANUNAVAIL":
 | |
| 			Dial(IAX2/asterisk:password@scm2.shsu.edu/${info_forwardto},25,wW);
 | |
| 			MailboxExists(${ext});
 | |
| //			if ("${VMBOXEXISTSSTATUS}" = "FAILED") {
 | |
| //				Congestion(10);
 | |
| //				Hangup;
 | |
| //			};
 | |
| 			&uvm(${ext});
 | |
| 			Hangup;
 | |
| 			break;
 | |
| 		case "CONGESTION":
 | |
| 			MailboxExists(${ext});
 | |
| 			if ("$(VMBOXEXISTSSTATUS}" = "FAILED") {
 | |
| 				Congestion(10);
 | |
| 				Hangup;
 | |
| 			};
 | |
| 			&bvm(${ext});
 | |
| 			Hangup;
 | |
| 			break;
 | |
| 		default:
 | |
| 			MailboxExists(${ext});
 | |
| 			if ("$(VMBOXEXISTSSTATUS}" = "FAILED") {
 | |
| 				Congestion(10);
 | |
| 				Hangup;
 | |
| 			};
 | |
| 			&uvm(${ext});
 | |
| 			Hangup;
 | |
| 	};
 | |
| 	Hangup;
 | |
| };
 | |
| 
 | |
| macro uvm( ext ) {
 | |
| 	Dial(SIP/u${ext}@svm1.shsu.edu);
 | |
| 	Playback(im-sorry);
 | |
| 	Playback(voice-mail-system);
 | |
| 	Playback(down);
 | |
| 	Congestion(10);
 | |
| 	Hangup;
 | |
| };
 | |
| 
 | |
| macro bvm( ext ) {
 | |
| 	Dial(SIP/b${ext}@svm1.shsu.edu);
 | |
| 	Playback(im-sorry);
 | |
| 	Playback(voice-mail-system);
 | |
| 	Playback(down);
 | |
| 	Congestion(10);
 | |
| 	Hangup;
 | |
| };
 | |
| 
 | |
| macro checkdnd( ext ) {
 | |
| 	if ("${info_donotdisturb}foo" = "foo") {
 | |
| 		NoOp(Do Not Disturb is not active);
 | |
| 	} else
 | |
| 		&uvm(${ext});
 | |
| };
 | |
| 
 | |
| macro checkcf( ext ) {
 | |
| 	if ("${info_forwardto}foo" = "foo")
 | |
| 		if ("${ext}" = "43974") {
 | |
| 			Set(info_forwardto=${ext}&SCCP/${ext});
 | |
| 		} else {
 | |
| 			Set(info_forwardto=${ext}&SIP/${ext}w);
 | |
| 		};
 | |
| };
 | |
| 
 | |
| macro checkcfb( ext ) {
 | |
| 	if ("${info_forwardbusy}foo" = "foo") {
 | |
| 		Wait(1);
 | |
| 		MailboxExists(${ext});
 | |
| 		if ("$(VMBOXEXISTSSTATUS}" = "FAILED") {
 | |
| 			&dialout(${ext});
 | |
| 			Hangup;
 | |
| 		};
 | |
| 		&bvm(${ext});
 | |
| 		Hangup;
 | |
| 	};
 | |
| 	&stdexten(${info_forwardbusy});
 | |
| };
 | |
| 
 | |
| ///////////////////////////////////////////////////////////////////////////////
 | |
| // Extensions pulled from test.conf
 | |
| 
 | |
| context test-include {
 | |
| 	includes {
 | |
| 		test-digium;
 | |
| 		test-sounds;
 | |
| 		test-phinfo;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| context test-digium {
 | |
| 	*500 => {
 | |
| 		Dial(IAX2/guest@misery.digium.com/s@default);
 | |
| 		Playback(demo-nogo);
 | |
| 		Hangup;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| context test-sounds {
 | |
| 	*501 => {
 | |
| 		Answer;
 | |
| 		Musiconhold;
 | |
| 		Wait(1);
 | |
| 		Hangup;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| context test-phinfo {
 | |
| 	*505 => {
 | |
| 		Answer;
 | |
| 		NoOp(${CALLERIDNUM:5});
 | |
| 		SayDigits(${CALLERIDNUM:5});
 | |
| 		Hangup;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| ///////////////////////////////////////////////////////////////////////////////
 | |
| // Extensions pulled from external.conf
 | |
| 
 | |
| context long-distance {
 | |
| 	includes {
 | |
| 		local;
 | |
| 	};
 | |
| 
 | |
| 	_91XXXXXXXXXX => &dialout(${EXTEN});
 | |
| 	_9011. => &dialout(${EXTEN});
 | |
| };
 | |
| 
 | |
| context local {
 | |
| 	includes {
 | |
| 		default;
 | |
| 	};
 | |
| 
 | |
| 	911 => &dialout(911);
 | |
| 	9911 => &dialout(9911);
 | |
| 
 | |
| 	_9NXXXXXX => goto huntsville-calling|${EXTEN}|1;
 | |
| 	_936NXXXXXX => {
 | |
| 		Goto 9${EXTEN:3}|1;
 | |
| 		Congestion(10);
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	_832NXXXXXX => {
 | |
| 		goto 9${EXTEN}|1;
 | |
| 		Congestion(10);
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	_713NXXXXXX => {
 | |
| 		goto 9${EXTEN}|1 ;
 | |
| 		Congestion(10);
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	_281NXXXXXX => {
 | |
| 		goto 9${EXTEN}|1;
 | |
| 		Congestion(10);
 | |
| 		Hangup;
 | |
| 
 | |
| 	};
 | |
| 
 | |
| 	_NXXNXXXXXX => {
 | |
| 		goto 9${EXTEN}|1;
 | |
| 		goto 91${EXTEN}|1;
 | |
| 		Congestion(10);
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	_91800NXXXXXX => &dialout(${EXTEN});
 | |
| 	_91866NXXXXXX => &dialout(${EXTEN});
 | |
| 	_91877NXXXXXX => &dialout(${EXTEN});
 | |
| 	_91888NXXXXXX => &dialout(${EXTEN});
 | |
| 	_91900NXXXXXX => &dialout(${EXTEN});
 | |
| 	_91976NXXXXXX => &dialout(${EXTEN});
 | |
| 	_9713NXXXXXX => goto houston-calling|${EXTEN}|1;
 | |
| 	_9281NXXXXXX => goto houston-calling|${EXTEN}|1;
 | |
| 	_9832NXXXXXX => goto houston-calling|${EXTEN}|1;
 | |
| 	_9903NXXXXXX => goto l903-calling|${EXTEN}|1;
 | |
| 
 | |
| 	_31NXXNXXXXXX => &dialout(${EXTEN});
 | |
| 
 | |
| 	h => Hangup;
 | |
| };
 | |
| 
 | |
| ///////////////////////////////////////////////////////////////////////////////
 | |
| // Extensions pulled from internal.conf
 | |
| 
 | |
| context from-scm2 {
 | |
| 	_4XXXX => {
 | |
| 		NoOp(DIALING SIP EXTENSION ${EXTEN} - FROM ${CALLERIDNUM});
 | |
| 		Dial(SIP/${EXTEN},20,wW);
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	_6XXXX => {
 | |
| 		NoOp(DIALING SIP EXTENSION ${EXTEN} - FROM ${CALLERIDNUM});
 | |
| 		Dial(SIP/${EXTEN},20,wW);
 | |
| 		Hangup;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| ///////////////////////////////////////////////////////////
 | |
| // All internal extensions work through the default context
 | |
| // Phones that can only make internal calls should be in
 | |
| // this context.
 | |
| ///////////////////////////////////////////////////////////
 | |
| 
 | |
| context default {
 | |
| // Include the contexts in the files that allow us to make these phone calls
 | |
| 	includes {
 | |
| 		vm-include;
 | |
| 		apps-include;
 | |
| 		test-include;
 | |
| 	};
 | |
| 
 | |
| // ALWAYS have an 'h' extension
 | |
| 	h => {
 | |
| 		NoOp(Hangup cause was: ${HANGUPCAUSE});
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| // We like to hear that we dialed an invalid extension
 | |
| 	i => Playback(pbx-invalid);
 | |
| 
 | |
| // Dial the operator
 | |
| 	0 => &dialout(0);
 | |
| 
 | |
| // Send voicemail calls to the vm-* contexts to be handled
 | |
| 	voicemail => goto vm-direct|s|1;
 | |
| 	5555 => goto vm-direct|s|1;
 | |
| 	62100 => goto vm-extension|s|1;
 | |
| 
 | |
| // These are our campus extensions, send them to the macro
 | |
| 	_6XXXX => &stdexten(${EXTEN});
 | |
| 	_4XXXX => &stdexten(${EXTEN});
 | |
| // These are campus extensions as well, might need to take this out though.
 | |
| 	_9294XXXX => goto _4XXXX|1;
 | |
| 	_9496XXXX => goto _6XXXX|1;
 | |
| 
 | |
| // These allows us to dial from the directory in our phone without worrying about dialing 9
 | |
| 	_936294XXXX => {
 | |
| 		goto ${EXTEN:5}|1;
 | |
| 		goto 9${EXTEN:3}|1;
 | |
| 		Congestion(10);
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	_936496XXXX => {
 | |
| 		goto ${EXTEN:5}|1;
 | |
| 		goto 9${EXTEN:3}|1;
 | |
| 		Congestion(10);
 | |
| 		Hangup;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| ///////////////////////////////////////////////////////////////////////////////
 | |
| // Extensions pulled from apps.conf
 | |
| 
 | |
| context apps-include {
 | |
| 	includes {
 | |
| 		app-agents;
 | |
| 		app-dnd;
 | |
| 		app-callforward;
 | |
| 		app-calltrace;
 | |
| 		app-conferences;
 | |
| 		app-ssd;
 | |
| 		app-psd;
 | |
| 		app-idblock;
 | |
| 		app-helpdesk;
 | |
| 		app-dictate;
 | |
| 		app-set-monitor;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| context app-agents {
 | |
| 	*54 => {
 | |
| 		Answer;
 | |
| 		Wait(1);
 | |
| 		Read(agent_no|agent-user);
 | |
| 		AgentCallbackLogin(${agent_no}|s${CALLERIDNUM:5});
 | |
| 		Playback(agent-loginok);
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	*55 => {
 | |
| 		Answer;
 | |
| 		Wait(1);
 | |
| 		AgentCallbackLogin(${agent_no});
 | |
| 		Hangup;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| context app-calltrace {
 | |
| // caller dials this to find out the last call missed and possibly call back
 | |
| 	*69 => goto app-calltrace-perform|s|1;
 | |
| };
 | |
| 
 | |
| context app-calltrace-perform {
 | |
| 	s => {
 | |
| 		Answer;
 | |
| 		Wait(1);
 | |
| 		Background(info-about-last-call);
 | |
| 		Background(telephone-number);
 | |
| 		RealTime(call_info|exten|${CALLERIDNUM:5}|ct_);
 | |
| 		if ("${ct_calltrace}foo" = "foo") {
 | |
| 			Playback(loligo/from-unknown-caller);
 | |
| 			Hangup;
 | |
| 		} else {
 | |
| 			SayDigits("${ct_calltrace}");
 | |
| 			Set(TIMEOUT(digit)=3);
 | |
| 			Set(TIMEOUT(response)=7);
 | |
| 			Background(loligo/to-call-this-number);
 | |
| 			Background(press-1);
 | |
| 			Background(loligo/silence/5);
 | |
| 		};
 | |
| 	};
 | |
| 
 | |
| 	1 => goto local|${ct_calltrace}|1;
 | |
| 
 | |
| 	i => {
 | |
| 		Playback(vm-goodbye);
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	t => {
 | |
| 		Playback(vm-goodbye);
 | |
| 		Hangup;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| context app-set-monitor {
 | |
| 	*50 => {
 | |
| 		Realtime(call_info|exten|${CALLERIDNUM:5}|mon_set_);
 | |
| 		if ("${mon_set_monitor}" = "YES") {
 | |
| 			RealtimeUpdate(call_info|exten|${CALLERIDNUM:5}|monitor|);
 | |
| 			System(/usr/local/bin/db_update.sh call_info monitor '' exten ${CALLERIDNUM:5} &);
 | |
| 		} else {
 | |
| 			RealtimeUpdate(call_info|exten|${CALLERIDNUM:5}|monitor|YES);
 | |
| 			System(/usr/local/bin/db_update.sh call_info monitor YES exten ${CALLERIDNUM:5} &);
 | |
| 		};
 | |
| 		NoOp(${mon_set_monitor});
 | |
| 		Hangup;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| context app-dnd {
 | |
| 	*78 => {
 | |
| 		Answer;
 | |
| 		Wait(1);
 | |
| 		RealtimeUpdate(call_info|exten|${CALLERIDNUM:5}|donotdisturb|YES);
 | |
| 		System(/usr/local/bin/db_update.sh call_info donotdisturb YES exten ${CALLERIDNUM:5} &);
 | |
| 		Playback(do-not-disturb);
 | |
| 		Playback(loligo/activated);
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	*79 => {
 | |
| 		Answer;
 | |
| 		Wait(1);
 | |
| 		RealtimeUpdate(call_info|exten|${CALLERIDNUM:5}|donotdisturb|);
 | |
| 		System(/usr/local/bin/db_update.sh call_info donotdisturb '' exten ${CALLERIDNUM:5} &);
 | |
| 		Playback(do-not-disturb);
 | |
| 		Playback(loligo/de-activated);
 | |
| 		Hangup;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| context app-callforward {
 | |
| 	// forwards calling extension to input number *72{EXTEN}
 | |
| 	_*72. => {
 | |
| 		RealtimeUpdate(call_info|exten|${CALLERIDNUM:5}|forwardto|${EXTEN:3});
 | |
| 		System(/usr/local/bin/db_update.sh call_info forwardto ${EXTEN:3} exten ${CALLERIDNUM:5} &);
 | |
| 		Answer;
 | |
| 		Wait(1);
 | |
| 		Playback(loligo/call-fwd-unconditional);
 | |
| 		Playback(loligo/for);
 | |
| 		Playback(loligo/extension);
 | |
| 		SayDigits(${CALLERIDNUM:5});
 | |
| 		Playback(loligo/is-set-to);
 | |
| 		SayDigits(${EXTEN:3});
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	// prompts for extension to forward to
 | |
| 	*72 => {
 | |
| 		Answer;
 | |
| 		Wait(1);
 | |
| 		Playback(please-enter-your);
 | |
| 		Playback(extension);
 | |
| 		Background(then-press-pound);
 | |
| 		VMAuthenticate(|s);
 | |
| 		Background(loligo/ent-target-attendant);
 | |
| 		Read(toext,loligo/then-press-pound);
 | |
| 		Wait(1);
 | |
| 		RealtimeUpdate(call_info|exten|${AUTH_MAILBOX}|forwardto|${toext});
 | |
| 		System(/usr/local/bin/db_update.sh call_info forwardto ${toext} exten ${AUTH_MAILBOX} &);
 | |
| 		Playback(loligo/call-fwd-unconditional);
 | |
| 		Playback(loligo/for);
 | |
| 		Playback(loligo/extension);
 | |
| 		SayDigits(${AUTH_MAILBOX});
 | |
| 		Playback(loligo/is-set-to);
 | |
| 		SayDigits(${toext});
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	// cancels dialed extension call forward
 | |
| 	_*73. => {
 | |
| 		Realtime(voicemail|mailbox|${EXTEN:3}|auth_);
 | |
| 		Answer;
 | |
| 		Wait(1);
 | |
| 		Authenticate(${auth_password});
 | |
| 		RealtimeUpdate(call_info|exten|${EXTEN:3}|forwardto|);
 | |
| 		System(/usr/local/bin/db_update.sh call_info forwardto '' exten ${EXTEN:3} &);
 | |
| 		Wait(1);
 | |
| 		SayDigits(${EXTEN:3});
 | |
| 		Playback(loligo/call-fwd-cancelled);
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	// cancels call forward for calling extension
 | |
| 	*73 => {
 | |
| 		RealtimeUpdate(call_info|exten|${CALLERIDNUM:5}|forwardto|);
 | |
| 		System(/usr/local/bin/db_update.sh call_info forwardto '' exten ${CALLERIDNUM:5} &);
 | |
| 		Answer;
 | |
| 		Wait(1);
 | |
| 		Playback(loligo/call-fwd-cancelled);
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	// dialed call forward on busy
 | |
| 	_*90. => {
 | |
| 		RealtimeUpdate(call_info|exten|${CALLERIDNUM:5}|forwardbusy|${EXTEN:3});
 | |
| 		System(/usr/local/bin/db_update.sh call_info forwardbusy ${EXTEN:3} exten ${CALLERIDNUM:5} &);
 | |
| 		Answer;
 | |
| 		Wait(1);
 | |
| 		Playback(loligo/call-fwd-on-busy);
 | |
| 		Playback(loligo/for);
 | |
| 		Playback(loligo/extension);
 | |
| 		SayDigits(${CALLERIDNUM:5});
 | |
| 		Playback(loligo/is-set-to);
 | |
| 		SayDigits(${EXTEN:3});
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	// cancels call forward on busy for calling extension
 | |
| 	*91 => {
 | |
| 		RealtimeUpdate(call_info|exten|${CALLERIDNUM:5}|forwardbusy|);
 | |
| 		System(/usr/local/bin/db_update.sh call_info forwardbusy '' exten ${CALLERIDNUM:5} &);
 | |
| 		Answer;
 | |
| 		Wait(1);
 | |
| 		Playback(loligo/call-fwd-on-busy);
 | |
| 		Playback(loligo/de-activated);
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	h => Hangup;
 | |
| };
 | |
| 
 | |
| context app-idblock {
 | |
| 	_*67. => {
 | |
| 		Set(CALLERID(name)=Anonymous);
 | |
| 		&stdexten(${EXTEN:3});
 | |
| 	};
 | |
| };
 | |
| 
 | |
| context app-dictate {
 | |
| 	*1 => {
 | |
| 		Dictate();
 | |
| 		Hangup;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| context app-ssd {
 | |
| // *59 <xx> <y.> - Set system speed dial <xx> to digits <y.>
 | |
| // *59 <xx> 0    - Delete system speed dial <xx>
 | |
| // *59 <xx>      - Review system speed dial <xx>
 | |
| // *1xx          - Dial speed dial <xx>
 | |
| 	_*59XXX. => {
 | |
| 		Answer;
 | |
| 		RealtimeUpdate(ssd|sd|${EXTEN:3:2}|extension|${EXTEN:5});
 | |
| 		System(/usr/local/bin/db_update.sh systemsd extension ${EXTEN:5} sd ${EXTEN:3:2} &);
 | |
| 		Wait(1);
 | |
| 		Playback(loligo/speed-dial);
 | |
| 		SayDigits(${EXTEN:3:2});
 | |
| 		Playback(loligo/has-been-set-to);
 | |
| 		SayDigits(${EXTEN:5});
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	_*59XX0 => {
 | |
| 		Answer;
 | |
| 		RealtimeUpdate(ssd|sd|${EXTEN:3:2}|extension|);
 | |
| 		System(/usr/local/bin/db_update.sh systemsd extension '' sd ${EXTEN:3:2} &);
 | |
| 		Wait(1);
 | |
| 		Playback(loligo/speed-dial);
 | |
| 		SayDigits(${EXTEN:3:2});
 | |
| 		Playback(loligo/has-been-cleared);
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	_*59XX => {
 | |
| 		Answer;
 | |
| 		Realtime(ssd|sd|${EXTEN:3}|ssd_);
 | |
| 		if ("${ssd_extension}foo" = "foo") {
 | |
| 			Playback(loligo/speed-dial);
 | |
| 			SayDigits(${EXTEN:3:2});
 | |
| 			Playback(loligo/is-not-set);
 | |
| 			Hangup;
 | |
| 		};
 | |
| 		Wait(1);
 | |
| 		Playback(loligo/speed-dial);
 | |
| 		SayDigits(${EXTEN:3:2});
 | |
| 		Playback(loligo/is-set-to);
 | |
| 		SayDigits(${ssd_extension});
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	// NTC = number to call
 | |
| 	_*1XX => {
 | |
| 		Realtime(ssd|sd|${EXTEN:2}|ssd_);
 | |
| 		if ("${ssd_extension}foo" = "foo") {
 | |
| 			Answer;
 | |
| 			Wait(1);
 | |
| 			Playback(loligo/speed-dial);
 | |
| 			SayDigits(${EXTEN:2});
 | |
| 			Playback(loligo/is-not-set);
 | |
| 			Hangup;
 | |
| 		};
 | |
| 		&stdexten(${ssd_extension});
 | |
| 		Congestion(10);
 | |
| 		Hangup;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| macro check-psd-exists ( ext ) {
 | |
| 	Realtime(psd|extension|${ext}|psd_);
 | |
| 	if ("${psd_extension}foo" = "foo") {
 | |
| 		System(/usr/local/bin/create_psd.sh ${ext});
 | |
| 	} else
 | |
| 		NoOp(PSD set for ${ext});
 | |
| };
 | |
| 
 | |
| context app-psd {
 | |
| // *89 <xx> <y.> - Set personal speed dial <xx> to digits <y.>
 | |
| // *89 <xx> 0    - Delete personal speed dial <xx>
 | |
| // *89 <xx>      - Review personal speed dial <xx>
 | |
| // *2xx          - Dial personal speed dial <xx>
 | |
| 	_*89XXX. => {
 | |
| 		&check-psd-exists(${CALLERIDNUM:5});
 | |
| 		Answer;
 | |
| 		RealtimeUpdate(psd|extension|${CALLERIDNUM:5}|s${EXTEN:3:2}|${EXTEN:5});
 | |
| 		System(/usr/local/bin/db_update.sh personalsd s${EXTEN:3:2} ${EXTEN:5} extension ${CALLERIDNUM:5} &);
 | |
| 		Wait(1);
 | |
| 		Playback(loligo/speed-dial);
 | |
| 		SayDigits(${EXTEN:3:2});
 | |
| 		Playback(loligo/has-been-set-to);
 | |
| 		SayDigits(${EXTEN:5});
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	_*89XX0 => {
 | |
| 		&check-psd-exists(${CALLERIDNUM:5});
 | |
| 		Answer;
 | |
| 		RealtimeUpdate(psd|extension|${CALLERIDNUM:5}|s${EXTEN:3:2}|);
 | |
| 		System(/usr/local/bin/db_update.sh personalsd s${EXTEN:3:2} '' extension ${CALLERIDNUM:5} &);
 | |
| 		Wait(1);
 | |
| 		Playback(loligo/speed-dial);
 | |
| 		SayDigits(${EXTEN:3:2});
 | |
| 		Playback(loligo/has-been-cleared);
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	_*89XX => {
 | |
| 		&check-psd-exists(${CALLERIDNUM:5});
 | |
| 		Answer;
 | |
| 		Realtime(psd|extension|${CALLERIDNUM:5}|psd_);
 | |
| 		Wait(1);
 | |
| 		if ("${psd_s${EXTEN:3:2}}foo" = "foo") {
 | |
| 			Playback(loligo/speed-dial);
 | |
| 			SayDigits(${EXTEN:3:2});
 | |
| 			Playback(loligo/is-not-set);
 | |
| 			Hangup;
 | |
| 		};
 | |
| 		Playback(loligo/speed-dial);
 | |
| 		SayDigits(${EXTEN:3:2});
 | |
| 		Playback(loligo/is-set-to);
 | |
| 		SayDigits(${psd_s${EXTEN:3:2}});
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	// NTC = number to call
 | |
| 	_*2XX => {
 | |
| 		&check-psd-exists(${CALLERIDNUM:5});
 | |
| 		Realtime(psd|extension|${CALLERIDNUM:5}|psd_);
 | |
| 		if ("${psd_s${EXTEN:2}}foo" = "foo") {
 | |
| 			Answer;
 | |
| 			Wait(1);
 | |
| 			Playback(loligo/speed-dial);
 | |
| 			SayDigits(${EXTEN:2});
 | |
| 			Playback(loligo/is-not-set);
 | |
| 			Hangup;
 | |
| 		};
 | |
| 		&stdexten(${psd_s${EXTEN:2}});
 | |
| 		Congestion(10);
 | |
| 		Hangup;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| context app-helpdesk {
 | |
| 	*4357 => {
 | |
| 		&stdexten(41950);
 | |
| 		Congestion;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| context app-conferences {
 | |
| // waiting for room number announcement
 | |
| 	*86 => goto app-conf-hidden|s|1;
 | |
| };
 | |
| 
 | |
| context app-conf-hidden {
 | |
| 	s => {
 | |
| 		Wait(1);
 | |
| 		Playback(loligo/please-enter-the);
 | |
| 		Playback(loligo/extension);
 | |
| 		read(roomtoenter,loligo/then-press-pound);
 | |
| 		Meetme(${roomtoenter});
 | |
| 		Waitexten(8);
 | |
| 		Hangup;
 | |
| 	};
 | |
| 
 | |
| 	_1. => Meetme(${EXTEN});
 | |
| };
 | |
| 
 | |
| ///////////////////////////////////////////////////////////////////////////////
 | |
| // Extensions pulled from vm.conf:
 | |
| 
 | |
| context vm-include {
 | |
| 	includes {
 | |
| 		vm-direct;
 | |
| 		vm-extension;
 | |
| 		vm-directory;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| context vm-direct {
 | |
| 	s => {
 | |
| 		Dial(SIP/5555@svm1.shsu.edu,20);
 | |
| 		Playback(im-sorry);
 | |
| 		Playback(voice-mail-system);
 | |
| 		Playback(down);
 | |
| 		Playback(extra/pls-try-call-later);
 | |
| 		Congestion(10);
 | |
| 		Hangup;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| context vm-extension {
 | |
| 	s => {
 | |
| 		Dial(SIP/62100@svm1.shsu.edu,20);
 | |
| 		Playback(im-sorry);
 | |
| 		Playback(voice-mail-system);
 | |
| 		Playback(down);
 | |
| 		Playback(extra/pls-try-call-later);
 | |
| 		Congestion(10);
 | |
| 		Hangup;
 | |
| 	};
 | |
| };
 | |
| 
 | |
| context vm-directory {
 | |
| 	5556 => {
 | |
| 		Dial(SIP/5556@svm1.shsu.edu);
 | |
| 		Playback(im-sorry);
 | |
| 		Playback(voice-mail-system);
 | |
| 		Playback(down);
 | |
| 		Playback(extra/pls-try-call-later);
 | |
| 		Congestion(10);
 | |
| 		Hangup;
 | |
| 	};
 | |
| };
 |