[company-incoming] include => company-default include => hangupnicely ; menu system ; sounds for this go in: /var/lib/asterisk/sounds/custom/ ; for example, daytime-greeting is daytime-greeting.gsm ; - answer, wait 1 second (all samples show this) ; - check the time/date by executing openclose.agi script ; - if holiday. go to line 8 and play the holiday greeting, then play the mainmenu greeting ; - if office hours, go to item # 10 (dial extensions), ring them for 10 seconds, then give ; them the "we're here but unavail.." greeting and the option to call a department. ; - if not office hours, give them closed-greeting message, then take them to the ; main menu where they can choose a department and hense leave voicemail. ;1-99 - lots of room to set variables exten => s,1,NoOp exten => s,2,NoOp exten => s,3,NoOp exten => s,4,NoOp exten => s,5,NoOp exten => s,6,NoOp exten => s,7,NoOp exten => s,8,NoOp exten => s,9,NoOp exten => s,10,NoOp exten => s,11,NoOp exten => s,12,NoOp exten => s,13,NoOp exten => s,14,NoOp exten => s,15,NoOp exten => s,16,NoOp exten => s,17,NoOp exten => s,18,NoOp exten => s,19,NoOp exten => s,20,NoOp exten => s,21,NoOp exten => s,22,NoOp exten => s,23,NoOp exten => s,24,NoOp exten => s,25,NoOp exten => s,26,NoOp exten => s,27,NoOp exten => s,28,NoOp exten => s,29,NoOp exten => s,30,NoOp exten => s,31,NoOp exten => s,32,NoOp exten => s,33,NoOp exten => s,34,NoOp exten => s,35,NoOp exten => s,36,NoOp exten => s,37,NoOp exten => s,38,NoOp exten => s,39,NoOp ; 40-99 other variables exten => s,40,Set(BRYANCELL=2178828) exten => s,41,Set(BRYANHOME=8338710) exten => s,42,Set(LETITIACELL=3209335) exten => s,43,Set(LETITIAHOME=3209335) exten => s,44,Set(ERIKHOME=4427500) exten => s,45,Set(ERIKCELL=2065367) exten => s,46,Set(KARYNCELL=3341569) exten => s,47,Set(KARYNHOME=4428661) exten => s,48,Set(CHRISCELL=2173259) exten => s,49,Set(CHRISHOME=4429586) exten => s,50,Set(COLINCELL=2390667) exten => s,51,Set(COLINHOME=4429160) exten => s,52,Set(MARCCELL=3358937) exten => s,53,Set(MARCHOME=3358937) exten => s,54,Set(ROBERTCELL=2095062) exten => s,55,Set(ROBERTHOME=4672098) exten => s,56,Set(STEVECELL=2134122) exten => s,57,Set(STEVEHOME=6620483) exten => s,58,NoOp exten => s,59,NoOp exten => s,60,NoOp exten => s,61,NoOp exten => s,62,NoOp exten => s,63,NoOp exten => s,64,NoOp exten => s,65,NoOp exten => s,66,NoOp exten => s,67,NoOp exten => s,68,NoOp exten => s,69,NoOp exten => s,70,NoOp exten => s,71,NoOp exten => s,72,NoOp exten => s,73,NoOp exten => s,74,NoOp exten => s,75,NoOp exten => s,76,NoOp exten => s,77,NoOp exten => s,78,NoOp exten => s,79,NoOp exten => s,80,NoOp exten => s,81,NoOp exten => s,82,NoOp exten => s,83,NoOp exten => s,84,NoOp exten => s,85,NoOp exten => s,86,NoOp exten => s,87,NoOp exten => s,88,NoOp exten => s,89,NoOp exten => s,90,NoOp exten => s,91,NoOp exten => s,92,NoOp exten => s,93,NoOp exten => s,94,NoOp exten => s,95,NoOp exten => s,96,NoOp exten => s,97,NoOp exten => s,98,NoOp exten => s,99,NoOp ;100-109 ; do caller ID check, determine time, where to send user (to a message, to a phone, etc) exten => s,100,Answer exten => s,101,Wait(2) exten => s,102,BackGround(custom/emergency-message) ; play emergency message! see "phrase-menu.conf" exten => s,103,AGI(openclose.agi) exten => s,104,GotoIf($[ "${STATUS}" = "closed" ]?110) ;goto s,110 if true exten => s,105,GotoIf($[ "${STATUS}" = "lateshift" ]?124) ;goto s,122 if true exten => s,106,GotoIf($[ "${STATUS}" = "holiday" ]?113) ;goto s,113 if true exten => s,107,NoOp exten => s,108,NoOp exten => s,109,Goto(s,120) ;none of the above cases were true, ring some phones ;110-119 - different possible scenarios if we're not open exten => s,110,AGI(cepstral.agi|Thank you for calling Company\. Our office is currently closed\.) exten => s,111,Background(${TTS_FILENAME}) exten => s,112,Goto(s,130) exten => s,113,AGI(cepstral.agi|Thank you for calling Company\. Due to the holiday\, our office is closed\.) exten => s,114,Background(${TTS_FILENAME}) exten => s,115,Goto(s,130) exten => s,116,NoOp exten => s,117,NoOp exten => s,118,NoOp exten => s,119,NoOp ;120-129 - actually ring phones by group exten => s,120,NoOp exten => s,121,Queue(company-reception|r|||12) ;exten => s,121,NoOp ;SKIP front desk if no one's here (comment out the above then!) exten => s,122,Queue(company-office|r|||15) exten => s,123,Goto(s,127) exten => s,124,NoOp exten => s,125,Queue(company-all|r|||15) exten => s,126,NoOp exten => s,127,Wait(1) exten => s,128,AGI(cepstral.agi|Thank you for calling Company\. We are currently open\. Sorry we missed your call\.) exten => s,129,Background(${TTS_FILENAME}) ;130-139 - actually enter menu where users can make selections exten => s,130,Wait(1) exten => s,131,AGI(cepstral.agi|Our business hours are 9 to 6 Sunday\, 7 to midnight Monday through Thursday\, 7 to 6 on Friday\, and 9 to 6 on Saturday\.) exten => s,132,Background(${TTS_FILENAME}) exten => s,133,Wait(1) exten => s,134,NoOp(${TTS_FILENAME}) exten => s,135,AGI(cepstral.agi|Dial 1 for billing\, 2 for sales\, 3 for technical support\, or 4 for a company directory\. If this is an emergency\, please dial 5\. If you know the extension\, you may dial it now\.) exten => s,136,NoOp(${TTS_FILENAME}) exten => s,137,Background(${TTS_FILENAME}) exten => s,138,NoOp exten => s,139,WaitExten(10) exten => s,140,Goto(hangupnicely,s,1) [company-default] include => company-dialout include => company-incoming exten => s,1,Goto(company-incoming,s,133) exten => i,1,Goto(company-incoming,s,133) ; operator extension ('o') exten => o,1,Wait,1 exten => o,2,Goto(0,1) ; 0 = reception exten => 0,1,NoOp exten => 0,2,Queue(company-reception,rt,,,10) exten => 0,3,Queue(company-office,rt,,,15) exten => 0,4,Goto(company-incoming,s,133) ; 1 = billing general (x100) exten => 1,1,Goto(100,1) ; 2 = sales general (x200) exten => 2,1,Goto(200,1) ; 3 = support general (x300) exten => 3,1,Goto(300,1) ; 4 = company directory, use asterisk's built in Directory funcion, followed by the context (default) exten => 4,1,Directory(company-default) exten => 4,3,Goto(s,15) ; 5 = emergency/on call recording information exten => 5,1,BackGround(custom/1005) ;1005.gsm = emergency info exten => 5,2,Wait(5) exten => 5,3,Goto(s,15) ;Billing General (ring all billing 1xx) exten => 100,1,Set(_ALERT_INFO=) exten => 100,2,Wait(1) exten => 100,3,Queue(company-billing,rt,,,15) exten => 100,4,Wait(1) exten => 100,5,Voicemail(su100@company-default) exten => 100,6,Goto(hangupnicely,s,1) exten => _*100,1,Goto(100,4) exten => 101,1,Dial(Sip/101,15) exten => 101,2,Voicemail(su101@company-default) exten => _*101,1,Goto(101,2) exten => 102,1,Dial(Sip/102,15) exten => 102,2,Voicemail(su102@company-default) exten => _*102,1,Goto(102,2) exten => _*102,2,Goto(hangupnicely,s,1) ;Sales General (ring all sales 2xx) exten => 200,1,Set(_ALERT_INFO=) exten => 200,2,Wait(1) exten => 200,3,Queue(company-sales,rt,,,15) exten => 200,4,Wait(1) exten => 200,5,Voicemail(su200@company-default) exten => 200,6,Goto(hangupnicely,s,1) exten => _*200,1,Goto(200,4) exten => 201,1,Dial(Sip/201,15) exten => 201,2,Voicemail(su201@company-default) exten => _*201,1,Goto(201,2) exten => 202,1,Dial(Sip/202,15) exten => 202,2,Voicemail(su202@company-default) exten => _*202,1,Goto(202,2) exten => 203,1,Dial(Sip/203,15) exten => 203,2,Voicemail(su203@company-default) exten => _*203,1,Goto(203,2) exten => 204,1,Dial(Sip/204,15) exten => 204,2,Voicemail(su204@company-default) exten => _*204,1,Goto(204,2) ;Tech Support Lines exten => 300,1,Set(SPYGROUP=300) exten => 300,2,Set(_ALERT_INFO=) exten => 300,3,Wait(1) exten => 300,4,Queue(company-support,rt,,,15) exten => 300,5,Wait(1) exten => 300,6,Voicemail(su300@company-default) exten => 300,7,Goto(hangupnicely,s,1) exten => _*300,1,Goto(300,5) ;spy on Extension 300 (chanspy) - listen in on calls exten => 399,1,ChanSpy(ZAP,qg(300)) exten => 399,2,Goto(hangupnicely,s,1) exten => 301,1,Dial(Sip/301,15) exten => 301,2,Voicemail(su301@company-default) exten => _*301,1,Goto(301,2) exten => 7301,1,Dial(Zap/G1/2065367) exten => 302,1,Dial(Sip/302,15) exten => 302,2,Voicemail(su302@company-default) exten => _*302,1,Goto(302,2) exten => 312,1,Dial(Sip/312,15) exten => 312,2,Voicemail(su312@company-default) exten => _*312,1,Goto(302,2) exten => 303,1,Dial(Sip/303,15) exten => 303,2,Voicemail(su303@company-default) exten => _*303,1,Goto(303,2) exten => 304,1,Dial(Sip/304,15) exten => 304,2,Voicemail(su304@company-default) exten => _*304,1,Goto(304,2) exten => 305,1,Dial(Sip/305,15) exten => 305,2,Voicemail(su305@company-default) exten => _*305,1,Goto(305,2) exten => 306,1,Dial(Sip/306,15) exten => 306,2,Voicemail(su306@company-default) exten => _*306,1,Goto(306,2) exten => 310,1,Dial(Sip/310,15) exten => 310,2,Goto(hangupnicely,s,1) ;TECH BEEP! exten => 398,1,Set(_ALERT_INFO=) exten => 398,2,Dial(Sip/398,1) exten => 398,3,Goto(hangupnicely,s,1) ;Data Center Phones exten => 500,1,Set(_ALERT_INFO=) exten => 500,2,Wait(1) exten => 500,3,Queue(company-datacenter,rt,,,) exten => 500,4,Goto(hangupnicely,s,1) ;data center phones exten => 501,1,Dial(Sip/501) exten => 501,2,Goto(hangupnicely,s,1) exten => 502,1,Dial(Sip/502) exten => 502,2,Goto(hangupnicely,s,1) exten => 503,1,Dial(Sip/503) exten => 503,2,Goto(hangupnicely,s,1) ; go to phrase recording menu to change our menus (shh, secret!) exten => 975,1,Goto(company-phrase-menu,s,1) ; go to main menu for testing exten => 976,1,Goto(company-incoming,s,1) ; test- go to closed greeting exten => 977,1,Goto(company-incoming,s,110) ; test- go to closed-holiday greeting exten => 978,1,Goto(company-incoming,s,113) ; test- go to open/missed call greeting exten => 979,1,Goto(company-incoming,s,128) ; test on call area exten => 990,1,Goto(company-oncall,s,1) ;Listen to Music On Hold (as a test) exten => 987,1,WaitMusicOnHold(60) ;Voicemail, the "s" is automatically putting in their extention exten => 999,1,Wait(1) exten => 999,2,VoicemailMain(${CALLERID(num)}@company-default) [company-oncall] exten => s,1,Answer exten => s,2,Wait(1) ;exten => s,3,AGI(openticket.agi) ;exten => s,4,AGI(openclose.agi) exten => s,3,Goto(company-oncall-transfer,s,1) exten => s,4,NoOp ;exten => s,4,AGI(openclose-always-closed.agi) exten => s,5,GotoIf($[ "${STATUS}" = "open" ]?company-oncall-open,s,1) exten => s,6,GotoIf($[ "${STATUS}" = "holiday" ]?company-oncall-open,s,1) exten => s,7,GotoIf($[ "${STATUS}" = "lateshift" ]?company-oncall-open,s,1) exten => s,8,GotoIf($[ "${STATUS}" = "closed" ]?company-oncall-transfer,s,1) exten => s,9,Goto(company-oncall-transfer,s,1) [company-oncall-open] ;exten => s,1,Queue(company-all,r,,,15) exten => s,1,Queue(company-all,r,,,1) exten => s,2,Goto(company-oncall-transfer,s,1) [company-oncall-transfer] exten => s,1,AGI(cepstral.agi,You have called the Company on call number\. You are now being transferred directly to an on call technician\. If there is no answer\, please leave a detailed message and your call will be returned shortly\.) exten => s,2,Playback(${TTS_FILENAME}) exten => s,3,NoOp exten => s,4,NoOp exten => s,5,Set(CHRISCELL=2173259) exten => s,6,Set(COLINCELL=2390667) exten => s,7,Set(ERIKCELL=2065367) exten => s,8,Set(MARCCELL=3358937) exten => s,9,Set(ROBERTCELL=2095062) exten => s,10,NoOp exten => s,11,NoOp exten => s,12,NoOp exten => s,13,NoOp exten => s,14,NoOp exten => s,15,NoOp exten => s,16,NoOp ;exten => s,17,Set(ONCALL=${CHRISCELL}) exten => s,17,Set(ONCALL=${ROBERTCELL}) ;exten => s,17,Set(ONCALL=${ERIKCELL}) ;exten => s,17,Set(ONCALL=${COLINCELL}) ;exten => s,17,Set(ONCALL=${MARCCELL}) exten => s,18,NoOp exten => s,19,Dial(Zap/G1/${ONCALL}) ;call the on call tech. ;Calls leaving PBX to PSTN [company-dialout] include => company-default ; If something starts with a 9, send it to PSTN. ; G1 = group 1, descending as defined in zapata.conf ; Upper case G means descending. Lower case g is ascending. ; so use group 1, starting from port 11 on down exten => _9.,1,Dial(Zap/G1/${EXTEN:1}) exten => _9.,2,Congestion