Asterisk call parking

The number used to park a call and the parking extensions are configured in features.conf.
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)
 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


  • 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

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
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

Created by: oej, Last modification: Fri 29 of Jun, 2012 (17:50 UTC) by pellix
Please update this page with new information, just login and click on the "Edit" or "Discussion" tab. Get a free login here: Register Thanks! - Find us on Google+