I have no idea what this really should be called, so for lack of a better name, I called it "reverse hold". Hopefully someone else can make use of it, or even make it better, as its the first thing of its kind I've made for asterisk. Like most people, I'm very busy, so when I call other companies, sitting on hold really sucks. If you have speaker phone, its not so bad, but then you have to sit there and listen to the company's horrible choice in music. The solution: Reverse Hold. When your on hold, blind transfer the call to the special extension. This extension repeats "Press 1 to be connected to the caller, do not hangup" constantly. Once the remote party presses 1, the original extension is dialed back. No more listening to hold music, or having a phone stuck to your ear forever! ;) It confuses people at first, but for the most part it works great. This will definitely need some tweaking to fit in to your own setup. Extensions.conf ------------------------ ;This is used in case you manually set the callerid ;in your extensions.conf, ie: Nufone ;It saves the originating EXT for use later on. ;I tried getting the src channel, and just dialing it back, ;but it didn't work out so well. [macro-set-callerid] exten => s,1,setGlobalVar(SRC_EXT=${CALLERIDNUM}) exten => s,2,SetCallerID(${ARG1}) exten => s,3,SetCIDName(${ARG2}) [reverse-hold] exten => s,1,GotoIf($["${SRC_EXT}" = ""]?99:2) exten => s,2,NoOp(Reverse Hold from: ${SRC_EXT}) exten => s,3,AbsoluteTimeout,600 ;10 mins, then force a callback to the originating ext as a reminder the call is still on hold exten => s,4,Wait,2 exten => s,5,Background(reverse-hold-repeat) exten => s,6,Goto(s,4) ;Loop exten => s,99,Macro(set-callerid,5555555555,Foo Company) ;If SRC_EXT isn't set already, this will set it exten => i,1,Goto(s,4) ; Keep repeating if they don't press 1 exten => t,1,Goto(s,4) exten => 1,1,NoOp(Reverse Hold party dialed 1, calling back: ${SRC_EXT}) exten => 1,2,Goto(reverse-hold,999,1) exten => T,1,NoOp(Reverse Hold timeout, calling back: ${SRC_EXT}) exten => T,2,Goto(reverse-hold,999,1) exten => 999,1,SetCallerID(${EXTEN}) exten => 999,2,SetCIDName(Reverse-Hold) exten => 999,3,AbsoluteTimeout,0 exten => 999,4,Goto(extensions,${SRC_EXT},1) exten => 999,5,Goto(s,4) exten => 899,1,Goto(reverse-hold,s,1) Ideally something like this would become its own application, or tied in to something like parkedcalls. But for now, the above works relatively well. The biggest drawback is there is no way to get back to call on hold until it times out. Enjoy. -- Mike Benoit <ipso@snappymail.ca>
Maybe another nice feature might be for the other end of this problem... Menu options while you are on hold to change the crappy music or mute it. Also an option to punch in a callback number and have the company ring your phone when it is your turn to have the call answered. - Jason> I have no idea what this really should be called, so for lack of a > better name, I called it "reverse hold". Hopefully someone else can make > use of it, or even make it better, as its the first thing of its kind > I've made for asterisk. > > Like most people, I'm very busy, so when I call other companies, sitting > on hold really sucks. If you have speaker phone, its not so bad, but > then you have to sit there and listen to the company's horrible choice > in music. > > The solution: Reverse Hold. > > When your on hold, blind transfer the call to the special extension. > This extension repeats "Press 1 to be connected to the caller, do not > hangup" constantly. Once the remote party presses 1, the original > extension is dialed back. No more listening to hold music, or having a > phone stuck to your ear forever! ;) > > It confuses people at first, but for the most part it works great. > > This will definitely need some tweaking to fit in to your own setup. > > Extensions.conf > ------------------------ > ;This is used in case you manually set the callerid > ;in your extensions.conf, ie: Nufone > ;It saves the originating EXT for use later on. > ;I tried getting the src channel, and just dialing it back, > ;but it didn't work out so well. > [macro-set-callerid] > exten => s,1,setGlobalVar(SRC_EXT=${CALLERIDNUM}) > exten => s,2,SetCallerID(${ARG1}) > exten => s,3,SetCIDName(${ARG2}) > > [reverse-hold] > exten => s,1,GotoIf($["${SRC_EXT}" = ""]?99:2) > exten => s,2,NoOp(Reverse Hold from: ${SRC_EXT}) > exten => s,3,AbsoluteTimeout,600 ;10 mins, then force a callback to the > originating ext as a reminder the call is still on hold > > exten => s,4,Wait,2 > exten => s,5,Background(reverse-hold-repeat) > exten => s,6,Goto(s,4) ;Loop > > exten => s,99,Macro(set-callerid,5555555555,Foo Company) ;If SRC_EXT > isn't set already, this will set it > > exten => i,1,Goto(s,4) ; Keep repeating if they don't press 1 > exten => t,1,Goto(s,4) > > exten => 1,1,NoOp(Reverse Hold party dialed 1, calling back: ${SRC_EXT}) > exten => 1,2,Goto(reverse-hold,999,1) > > exten => T,1,NoOp(Reverse Hold timeout, calling back: ${SRC_EXT}) > exten => T,2,Goto(reverse-hold,999,1) > > exten => 999,1,SetCallerID(${EXTEN}) > exten => 999,2,SetCIDName(Reverse-Hold) > exten => 999,3,AbsoluteTimeout,0 > exten => 999,4,Goto(extensions,${SRC_EXT},1) > exten => 999,5,Goto(s,4) > > exten => 899,1,Goto(reverse-hold,s,1) > > > Ideally something like this would become its own application, or tied in > to something like parkedcalls. But for now, the above works relatively > well. The biggest drawback is there is no way to get back to call on > hold until it times out. > > Enjoy. > > -- > Mike Benoit <ipso@snappymail.ca> > > _______________________________________________ > Asterisk-Users mailing list > Asterisk-Users@lists.digium.com > http://lists.digium.com/mailman/listinfo/asterisk-users > To UNSUBSCRIBE or update options visit: > http://lists.digium.com/mailman/listinfo/asterisk-users >