[asterisk-users] Sticky Park

Paul Hales pdhales at optusnet.com.au
Thu Aug 27 19:52:59 CDT 2009


Sticky Park sounds like somewhere you go late at night wearing a plastic
raincoat.

PaulH


Mat Murdock 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:${PARKINGEXTEN}@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:${PARKINGEXTEN}@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
>
>
>
>
>   



More information about the asterisk-users mailing list