[asterisk-users] Rejecting transfers to in-use parking spaces
Phil Frost
phil at macprofessionals.com
Fri Feb 24 09:06:02 CST 2012
On Feb 23, 2012, at 18:44 , Bryant Zimmerman wrote:
>
> I was working on this today. I have it figured out but I don't have simple dialplan code I can share as we are doing a lot of external db and script calls to make ours work with our realtime stuff. We also are using the Dynamic Parking stuff as well I pulled that out to simplify things. [dialplan example follows]
Thanks, that was very helpful. I tweaked a bit, and ended up with this working code:
exten => _70[123],1,NoOp(Dynamic Parking Pickup from ${BLINDTRANSFER})
; if this was a blind transfer, attempt to park the call. Otherwise, unpark
; the call.
same => n,GoToIf($[${LEN(${BLINDTRANSFER})} > 0]?attemptpark)
same => n,ParkedCall(${EXTEN})
same => 100(attemptpark),NoOp(Attempt To Park)
same => n,Set(PARKRETURNTO=${CUT(BLINDTRANSFER,-,1)})
same => n,Set(PARKINGEXTEN=${EXTEN})
same => n,Park(,${CONTEXT},${EXTEN},200,s) ; return priority here must be a number, not a label.
same => n,Goto(200)
; send the call back to the sender. Either the park timed out, or the
; parking space was in use, or otherwise failed to park.
same => 200(backtosender),Dial(${PARKRETURNTO},300)
I'm a bit unsure if grabbing the channel name from BLINDTRANFSER, cutting off the bit after "-", and passing that to Dial() is the Right Thing. It appears to work, though I'm quite inexperienced. I guess my concern is that the channel names might not necessarily be a dial()able thing. Of course, it would be better if I could just reject the transfer, but that doesn't sound like it's possible. Anyone have pointers on how to make this more robust? Is there any way I can get more information about the channel referenced by BLINDTRANSFER? Maybe I'll also dial the front desk after dialing PARKRETURNTO, just in case.
On the phone side, I configured three BLFs for 701-703. This does require that to park a caller, the receptionist hits "transfer", then the BLF. However, this is more explicit, and avoids a weird case where someone else parks a call just before the receptionist hits the park button, so she ends up putting the caller on hold and unparking someone else, rather than parking the caller as she intended. I think I'll teach users to not depend so heavily on park, and they will adapt.
More information about the asterisk-users
mailing list