Asterisk call parking
Asterisk call parking
The number used to park a call and the parking extensions are configured in features.conf.
[general]
parkext => 700 ; What extension to dial to park
parkpos => 701-720 ; What extensions to park calls on By default extension 700 is used to park a call. While in a conversation, press # to initiate a transfer, then dial 700.
Asterisk will now announce the parking extension, most probably 701 or 702. Now hang up - the caller will be left on hold at the announced extention. Walk up to a different phone, dial 701 and voilá- the conversation can be continued. If a caller has been parked for a longer time than the specified time limit then Asterisk will again ring the originally dialed extension.
For simple dialplans first edit features.conf as desired, then put this into your extensions.conf:
include => parkedcalls
If you have a more complex dialplan and want to be able to Goto() a more elaborate 'parkedcalls' handler then you'll need to be sure to include a handler for the 'i' priority to catch calls to parkinglot without call in them as well as the 's' priority to give timeouts somewhere to go, thus:
...
exten => somecontext,3,Goto(parkinglot,${ARG1},1)
...
[parkinglot]
exten => s,1,NoOp(once a parked call times out it will resume here)
...
include => parkedcalls
exten => i,1,Playback(pbx-invalidpark)
exten => i,2,Hangup
Notes
- It won't show the parking extension when you do a show dialplan in the CLI.
- Also you'll need to 'restart' Asterisk after modifying features.conf - a simple 'reload' won't do.
- The user must be allowed to do transfers for being able to park a call, so check the t and T options of the Dial() command
- For Asterisk 1.4.x, the user must be allowed to use call parking by adding the k and/or K options of the Dial() command
- Asterisk-based transfers only work if Asterisk in the media path (which can be enforced through "canreinvite=no" in sip.conf, for example)
One problem with this in a comercial environment is that there is only one parking lot (my term) to park the calls in. Therefore, if you are providing VOIP service to your customers and customer A puts a call in the parking lot then it calls him back and tells him "transfer 701", customer B can dial 701 and pick up customer A's parked call. There is no built in way to distinguish one call on park from another in relation to who can and cannot pick up a given call. There is also no way in the Dialplan to determine which parking space (i.e. 701, 702, etc) the call was placed in. If even that small thing was available, and a viable way to use it in the dialplan (remember, when the call is parked, the dialplan is paused on that priority), the account code for the customer could be saved somewhere and a filter could be written to filter out one customer from answering another customer's call.
Of course, the optimal way would be to be able to set a context for the call that you could specify when the call is parked and picked up (different parking lots). An alternate solution would be for the ParkAndAnnounce application to set a variable (maybe ${PARKED_CHANNEL} or something) when it sends the announcement call. - Flobi
Of course, the optimal way would be to be able to set a context for the call that you could specify when the call is parked and picked up (different parking lots). An alternate solution would be for the ParkAndAnnounce application to set a variable (maybe ${PARKED_CHANNEL} or something) when it sends the announcement call. - Flobi
One More Solution for Simple Call Parking
Just do the below config to make Call Parking Up & Running
Go to "features.conf"
and add the below lines
general
parkext => 700
parkpos => 701-710
context => parkedcalls
Then go to "extensions.conf"
Just inclute the below line in your current context from where the calls are getting routed
include => parkedcalls
you are done now just reload the asterisk. now you will be able to do call parking Method for the same as follows
When you are in an active call just dail # then 700 now your call will be parked and you will hear the exten where its parked (in-between 701-710)
Just dail the exten from the other phone and you are connectd
See also
- Asterisk cmd ParkedCall
- Asterisk cmd ParkAndAnnounce
- Asterisk config features.conf
- Asterisk config parking.conf: Replaced by features.conf on 7/17/04 in CVS
- app_valetparking: Alternative method for call parking (by bkw)
- AstQueueIcon: Alternative free queue solution utilitzing the call parking feature instead of the queue application. As the queue app stays out of the media path, features like call forwarding will not be denied for the agents.

Comments
333Re: How to allow one button call Parking in Asterisk
Is there a way to check to see if there is a call in that slot and if there is just send it back to that users phone.
Thanks
333How to allow one button call Parking in Asterisk
I setup four buttons on my phone to correspond to parking lines 71 to 74. I am using the default parking lot from FreePBX to be 71-74.
I programed four buttons on my Grandstream phone to be "71" to "74", respectively. They were setup to be the type of "Asterisk BLF".
..... modify /etc/asterisk/extensions_additional.conf .....
park-hints
include => park-hints-custom
; exten => 71,1,ParkedCall(71)
exten => 71,hint,park:71@parkedcalls
; exten => 72,1,ParkedCall(72)
exten => 72,hint,park:72@parkedcalls
; exten => 73,1,ParkedCall(73)
exten => 73,hint,park:73@parkedcalls
; exten => 74,1,ParkedCall(74)
exten => 74,hint,park:74@parkedcalls
; end of park-hints
{ Notice that I have remed out the default lines generated by FrePBX }
..... edit/create /etc/asterisk/globals_custom.conf .....
park-hints-custom
exten => 71,1,Answer
exten => 71,n,Set(PARKINGEXTEN="71")
exten => 71,n,Park
exten => 71,n,hangup
exten => 72,1,Answer
exten => 72,n,Set(PARKINGEXTEN="72")
exten => 72,n,Park
exten => 72,n,hangup
exten => 73,1,Answer
exten => 73,n,Set(PARKINGEXTEN="73")
exten => 73,n,Park
exten => 73,n,hangup
exten => 74,1,Answer
exten => 74,n,Set(PARKINGEXTEN="74")
exten => 74,n,Park
exten => 74,n,hangup
...............
Please Note:
1) The example above assumes that you have setup four (4) Number of slots in the Parking Lot. If you have a different number of Parking Slots, you would have to modify my example a little.
2) Due to the way this wiki interprets text. The words "park-hints" and "park-hints-custom" are actually surround by left bracket and right bracket, respectively. The wiki--unfortunately--is automatically modifying my example.
This should give you the ability to use one button per parking lot extension. In order to park, just use the transfer button to transfer the call to that slot. To pick up the parked call, just press the corresponding button.
Hope this helps.
333PARKINGEXTEN, to place the call into a specifc parking
I also didn't know you could set channel variables in SIP.CONF:
100
...
setvar=PARKINGEXTEN=0703
This will always force calls parked by x100 into parking slot 703.
333Re: Re: Where does the include go?
Once that is complete, dial the parked extension (making sure your dialplan is configured properly) and you'll be connected to the parked call.
333Re: Re: Where does the include go?
333Re: Re: Where does the include go?
in sip.conf I have station vith context=local
in extensions.conf I have context local and in this context I have included this 'parkedcalls' as mentioned.
.. so my station is able to dial, for exmaple, 705 and reach parked call previously parked on that exten.
333Re: Re: Where does the include go?
333confused
333Re: Where does the include go?
333Re: Where does the include go?