diff options
Diffstat (limited to 'pbx/ael/ael-test/ael-test5/extensions.ael')
-rw-r--r-- | pbx/ael/ael-test/ael-test5/extensions.ael | 833 |
1 files changed, 833 insertions, 0 deletions
diff --git a/pbx/ael/ael-test/ael-test5/extensions.ael b/pbx/ael/ael-test/ael-test5/extensions.ael new file mode 100644 index 000000000..304275a00 --- /dev/null +++ b/pbx/ael/ael-test/ael-test5/extensions.ael @@ -0,0 +1,833 @@ +/////////////////////////////////////////////////////////////////////////////// +// 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; + }; +}; |