Andrew Thompson wrote: > > ----- Original Message ----- > From: "Lance Arbuckle" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Sent: Wednesday, December 31, 2003 1:54 PM > Subject: [Asterisk-Users] after hours - is this logic ok ? > > > > > Ok, first off, Asterisk is the coolest piece of software I have EVER had > > the pleasure of using in my 8 years of running linux !! and I know I > > haven't even scratched the surface feature wise. > > > > Before I get too excited, I wanted to get all you experts to look at the > > how I implemented my after hours test. The goal is to prevent the phone > > from ringing afer certain hours, just go to VM. > > > > Bacically, when a call comes from the PSTN, I use these includes to > > either set a key in the DB or not. > > > > include => day|8:00-21:00|mon-fri|*|* > > include => day|9:00-21:00|sat-sun|*|* > > ; if we're not open, we're closed > > include => night > > > > [day] > > exten => s,2,DBput(FEATURE/DAY=yes) > > exten => s,3,Goto(s,10) > > > > [night] > > exten => s,2,NoOp > > exten => s,3,Goto(s,10) > > > > > > And then in my stdexten macro, I test for the existence of the key in > > the database. If the key exists, it must be daytime so delete the key > > and allow the calls to ring the extension. If the key does not exist, > > it must be night and since we don't want the phones to ring we jump to > > the unavailable VM. I've tested this and it works as I expect but my > > only concern is how this would hold up in a busy environment where many > > calls are being processed. Could one asterisk thread delete the > > database key before another thread had gotton the oportunity to test for > > the key ? > > > > > > [macro-stdexten] > > exten => s,1,NoOp > > < other testing crap deleted > > > exten => s,10,DBget(foo=FEATURE/DAY) ; is it day time ? > > exten => s,11,DBdel(FEATURE/DAY) ; yes, delete the key > > exten => s,12,Goto(s,201) ; and ring the phone > > exten => s,111,Goto(s,204) ; no, goto uVM > > > > exten => s,201,answer > > exten => s,202,Playback(transfer,skip) > > exten => s,203,Dial(${ARG2},5) ; Ring the interface, 20 seconds > > maximum > > exten => s,204,Voicemail(u${ARG1}) ; If unavailable, send to > > voicemail w/ unavail announce > > exten => s,205,Playback(vm-goodbye) > > exten => s,206,Wait(1) > > exten => s,207,Hangup > > exten => s,304,Voicemail(b${ARG1}) ; If busy, send to voicemail w/ > > busy announce > > exten => s,305,Playback(vm-goodbye) > > exten => s,306,Wait(1) > > exten => s,307,Hangup > > > > > > Although I can't provide you with an example, I think you might find it > easier to simplify the turn up/down logic. > > When a call comes in, check day/night, as you already do. If it's day, set > the key. (If the key's already there, resetting it shouldn't hurt.) If it's > night, delete the key if it exists. > > Then your extensions should test for the key and do the right thing if it is > or isn't there, but not touch the key themselves. > > ---- > Andrew Thompson http://aktzero.com/
ok, thanks for the suggestion. I'm not sure why I decided to unset the key from within the stdexten anyway. I think I've been staring at this too long :) or maybe all the radiation from these 3 21" monitors has finally cooked my brain cell. So, the contexts would be more like this: [day] exten => s,2,DBput(FEATURE/DAY=yes) exten => s,3,Goto(s,10) [night] exten => s,2,DBdel(FEATURE/DAY) ;if we got here it must be night time so remove the key exten => s,3,Goto(s,10) [macro-stdexten] exten => s,1,NoOp < other testing crap deleted > exten => s,10,DBget(foo=FEATURE/DAY) ; is it day time ? if key exists, goto n+1, otherwise n+101 exten => s,11,Goto(s,201) ; yes, well let's ring the phones exten => s,111,Goto(s,204) ; no, goto uVM -- .~. Triad Internet Systems, Inc. /V\ Lance C. Arbuckle // \\ 3315 Anderson Drive /( )\ Winston-Salem, NC 27127 ^'~'^ 336-771-2090 _______________________________________________ Asterisk-Users mailing list [EMAIL PROTECTED] http://lists.digium.com/mailman/listinfo/asterisk-users