You could put something into the Asterisk Database with DBput/DBget. I don't have an example off hand, but create a "stickypark" family and store which channels go back into which parking slot. Or something to that effect, and it would exist until you remove it from the database.
-Jonathan On Thu, Aug 27, 2009 at 10:52 AM, Mat Murdock<mmurd...@kimballequipment.com> wrote: > My company for various reasons has asked that I come up with a way to > have previously parked calls be re-parked in the same parking slot. I > have looked at setting up asterisk so that the receptionist chooses > which slot to place a call, but I think there is an easier way. That is > when I came up with the idea of "Sticky Park". Here is how it would > work. A call would come in and the receptionist will park the call as > she normally does. Asterisk will the pick the first open parking slot, > let's say 702 because there is already a call on 701. Lets say that the > call parked on 701 is picked up, freeing 701. So, 701 is free and 702 > has our call parked on it. Now the call on 702 rings back to the > receptionist because it has timed out. She asks the person if they > would like to continue hold and will again park the call as she normally > does. Asterisk will then re-park the call back onto 702 because that is > where it came from. The normal behavior of Asterisk would of been to > park it on 701 because it is the first free parking slot. That is why I > call it "Sticky Park". So what happens if between the time she picks > up the call and re-parks it someone else parks a call on 702? Then I > think Asterisk should then pick the first available parking slot and > that call becomes stuck to that parking slot if additional re-parks are > necessary. > > Here is my dialplan on how I thought I could accomplish this with > dial-plan magic. > > Here is the relevant features.conf entries. > > [general] > parkext => 799 ;We need to use our own 700 extension so lets get this > out of the way. > parkpos => 702-706 > > comebacktoorigin = no ;This causes calls that have timed out to > come to the parkedcallstimeout context at s,1. > > > Ok now onto my Dial Plan. > > [from_internal] > include => parkedcalls ; Gotta have this or things don't work. > > ;I do an attended transfer to 700. > exten => 700,1,Answer() > ;Just so I can see if anything has been set > exten => 700,n,NoOp(I want to be parked on: ${PARKINGEXTEN}) > ;Also so I can see what the state of that parking slot is. > exten => 700,n,NoOp(Device State is: > ${DEVICE_STATE(park:${parkingext...@parkedcalls)}) > ;Check to see if PARKINGEXTEN is set. If not then this must be a new > call being park, let's let asterisk find a spot for it. > exten => 700,n,GotoIf($[${LEN(${PARKINGEXTEN})}=0]?parkcall) > ;Ok Looks like this call has been parked before. Let's see if we can > repark it in the same spot again. If it not INUSE then let's park the call. > exten => > 700,n,GotoIf($[${DEVICE_STATE(park:${parkingext...@parkedcalls)}=INUSE]?:parkcall) > ;Previous slot is not occupied lets clear the PARKINGEXTEN variable so > that when we park the call Asterisk will find the first available slot. > exten => 700,n,Set(PARKINGEXTEN=) > ;Lets park the call. > exten => 700,n(parkcall),Park() > exten => 700,n,Hangup() > > > > [parkedcallstimeout] > > exten => _SIP011XX,1,Answer() > exten => _SIP011XX,n,NoOp(Call Parked on: ${PARKINGSLOT}) > exten => _SIP011XX,n,NoOp(This is who parked us: ${EXTEN}) > exten => _SIP011XX,n,Set(PARKINGEXTEN=${PARKINGSLOT}) > ;This sets the PARKINGEXTEN to the parking slot we were parked in. > exten => > _SIP011XX,n,Dial(SIP/${EXTEN:4:4},${RINGTIMER},${INTERNAL_DIAL_OPTIONS}) > ;This send the call back to the person who parked it. There are a > couple of global variables I use here. Nothing unusual here. > > > So what is the problem? Well the problem is that the PARKINGEXTEN > variable gets reset after the dial command in parkedcallstimeout. That > makes it so I cannot find out where that call was originally parked If > I can find out how to get that little bit of information when the call > is re-parked then I think this will work. If anyone has any suggestions > on how to accomplish this I would be grateful. > > Thanks, > > Mat Murdock > > > > > -- > This message has been scanned for viruses and > dangerous content by MailScanner, and is > believed to be clean. > > > _______________________________________________ > -- Bandwidth and Colocation Provided by http://www.api-digital.com -- > > AstriCon 2009 - October 13 - 15 Phoenix, Arizona > Register Now: http://www.astricon.net > > asterisk-users mailing list > To UNSUBSCRIBE or update options visit: > http://lists.digium.com/mailman/listinfo/asterisk-users > _______________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- AstriCon 2009 - October 13 - 15 Phoenix, Arizona Register Now: http://www.astricon.net asterisk-users mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-users