At some point along the way a script for ValetParkCall appeared in my list of scripts. I have installed ValetParkCall, but I can't figure out how to make it work. Has anyone used it? Any tips on making it work?
Parking
UPDATE: I think my problem with this could be a transfer issue on my phone. When I posted this I was testing with a Bria softphone. I just realized that I can't transfer calls from Bria. Sorry for the confusion.
Thanks. I'm using multi-tenant, so it's what I need. How is it initiated? Do you transfer the caller to the ValetPark feature extension?
Do the park extensions have to be defined somewhere? This is what I have in features.conf.
[general]
parkext => 700
parkpos => 701-704
Here's what my extensions looks like. Should this work?
exten => _*43.,1,Macro(tl-unpark) ; Unpark Call
exten => _*42.,1,Macro(tl-park,) ; Call parking test 2
For some reason it isn't working correctly. I will add the log entries as soon as I can capture them.
my feature extensions
my feature extensions
exten => 700,1,Macro(bgnv-valetpark,240) ; Valet Call Parking
exten => 701,1,Macro(bgnv-valetunpark) ; Valet Parking Call Retrieve
i cloned and modified
[macro-bgnv-valetpark]
exten => s,1,Set(MY_CHAN=${CUT(BLINDTRANSFER,/,2)})
exten => s,n,Set(MYEXTENSION=${CUT(MY_CHAN,-,1)})
exten => s,n,Set(TIMEOUT=${ARG1})
exten => s,n,GotoIf($["${TIMEOUT}" != ""]?park)
exten => s,n,Set(TIMEOUT=360)
exten => s,n(park),ValetParkCall(1|${tenant}|${TIMEOUT}|${MYEXTENSION}|1|from-inside${TL_DASH}${tenant})
the one argument is the number of seconds before rining back the channel that parked the call.
and unpark
[macro-bgnv-valetunpark]
exten => s,1,ValetUnParkCall(1|${tenant})
the difference between my scripts and the default is that in my example each tenant will have just a single slot to park a call, but the up-trade of that is no additional keys must be pressed to select the slot when parking and/or unparking a channel.
you could mix and mach... perhaps a extension 700 calling ValetParkCall with 'query' as your slot and
exten => _7XZ,1,ValetUnParkCall(${EXTEN}|${tenant})
to retrieve them without having to enter the slot number on retrieval. However, that scenario requires the parker to type in 701, 702 etc somewhat quickly and the caller often hears his slot number played back to him.
For my company, weighing all the options, it seemed just giving 1 slot per tenant seemed the simplest and best solution. I haven't run into a tenant that ever parked more than 1 call at a time and those that might I should probably be quoting them their own PBX and buy IAX trunks from me.
Parking
Thanks for the update. This is helpful. But, I'm still missing something.
I cut and pasted your scripts into mine and set up feature code extensions 700 and 701 as you described.
[macro-env-park]
exten => s,1,Set(MY_CHAN=${CUT(BLINDTRANSFER,/,2)})
exten => s,n,Set(MYEXTENSION=${CUT(MY_CHAN,-,1)})
exten => s,n,Set(TIMEOUT=${ARG1})
exten => s,n,GotoIf($["${TIMEOUT}" != ""]?park)
exten => s,n,Set(TIMEOUT=360)
exten => s,n(park),ValetParkCall(1|${tenant}|${TIMEOUT}|${MYEXTENSION}|1|from-inside${TL_DASH}${tenant})
[macro-env-unpark]
exten => s,1,ValetUnParkCall(1|${tenant})
exten => 700,1,Macro(env-park,240) ; Park
exten => 701,1,Macro(env-unpark) ; Unpark
After reloading I placed a call in to an extension, put the call on hold from my softphone and transfered it to extension 700.
-- Called 101-env
-- SIP/101-env-085df100 is ringing
-- SIP/101-env-085df100 answered SIP/dozment-b7d00470
-- Started music on hold, class 'EnvClassGuit-env', on channel 'SIP/dozment-b7d00470'
-- Stopped music on hold on SIP/dozment-b7d00470
== Spawn extension (macro-tl-userexten-base, s, 146) exited non-zero on 'SIP/dozment-b7d00470' in macro 'tl-userexten-base'
== Spawn extension (macro-tl-userexten-base, s, 146) exited non-zero on 'SIP/dozment-b7d00470' in macro 'tl-stdexten'
== Spawn extension (macro-tl-userexten-base, s, 146) exited non-zero on 'SIP/dozment-b7d00470'
-- Started music on hold, class 'EnvClassGuit-env', on channel 'SIP/dozment-b7d00470'
== Parked SIP/dozment-b7d00470 on 701@parkedcalls. Will timeout back to extension [macro-tl-userexten-base] s, 146 in 180 seconds
-- Added extension '701' priority 1 to parkedcalls
-- Playing 'digits/7' (language 'en')
-- Playing 'digits/0' (language 'en')
-- Playing 'digits/1' (language 'en')
At this point the CLI says I have one parked call. Great!
um-882*CLI> show parkedcalls
Num Channel (Context Extension Pri ) Timeout
701 SIP/dozment-b7d00470 (macro-tl-userexten-base s 146 ) 172s
1 parked call.
I then dialed 701 to unpark the call and was told there were no calls parked at that extension (Note that another call came in at this point, and I attempted to strip it out. If anything is missing I stripped out too much).
-- Executing [701@from-inside-env:1] Macro("SIP/101-env-b7d1a948", "tl-set-variables2|from-inside-redir-env|env") in new stack
-- Executing [s@macro-tl-set-variables2:1] Set("SIP/101-env-b7d1a948", "__tenant=env") in new stack
-- Executing [s@macro-tl-set-variables2:2] Set("SIP/101-env-b7d1a948", "CDR(userfield)=env") in new stack
-- Executing [s@macro-tl-set-variables2:3] Set("SIP/101-env-b7d1a948", "__MOH=EnvClassGuit-env") in new stack
-- Executing [s@macro-tl-set-variables2:4] GotoIf("SIP/101-env-b7d1a948", "1 ?setmoh") in new stack
-- Goto (macro-tl-set-variables2,s,6)
-- Executing [s@macro-tl-set-variables2:6] SetMusicOnHold("SIP/101-env-b7d1a948", "EnvClassGuit-env") in new stack
-- Executing [s@macro-tl-set-variables2:7] Goto("SIP/101-env-b7d1a948", "from-inside-redir-env|701|1") in new stack
-- Goto (from-inside-redir-env,701,1)
== Channel 'SIP/101-env-b7d1a948' jumping out of macro 'tl-set-variables2'
-- Executing [701@from-inside-redir-env:1] Macro("SIP/101-env-b7d1a948", "env-unpark") in new stack
-- Executing [s@macro-env-unpark:1] ValetUnparkCall("SIP/101-env-b7d1a948", "1|env") in new stack
-- Playing 'pbx-invalidpark' (language 'en')
But, the CLI says I still have a parked call.
um-882*CLI> show parkedcalls
Num Channel (Context Extension Pri ) Timeout
701 SIP/dozment-b7d00470 (macro-tl-userexten-base s 146 ) 65s
My features.conf file in case it has anything to do with this...
[general]
parkext => 700 ; What extension to dial to park
parkpos => 701-704 ; What extensions to park calls on. These needs to be
; numeric, as Asterisk starts from the start position
; and increments with one for the next parked call.
context => parkedcalls ; Which context parked calls are in
parkingtime => 180 ; Number of seconds a call can be parked for
; (default is 45 seconds)
transferdigittimeout => 3 ; Number of seconds to wait between digits when transfering a call
courtesytone = beep ; Sound file to play to the parked caller
; when someone dials a parked call
xfersound = beep ; to indicate an attended transfer is complete
xferfailsound = beeperr ; to indicate a failed transfer
;adsipark = yes ; if you want ADSI parking announcements
;findslot => next ; Continue to the 'next' free parking space.
; Defaults to 'first' available
pickupexten = ** ; Configure the pickup extension. Default is *8
featuredigittimeout = 500 ; Max time (ms) between digits for
; feature activation. Default is 500
[featuremap]
blindxfer => ## ; Blind transfer
atxfer => #* ; Attended transfer
disconnect => #0 ; Disconnect
automon => #9 ; One Touch Record
[applicationmap]
; Note that the DYNAMIC_FEATURES channel variable must be set to use the features
; defined here. The value of DYNAMIC_FEATURES should be the names of the features
; to allow the channel to use separated by '#'. For example:
; Set(DYNAMIC_FEATURES=myfeature1#myfeature2#myfeature3)
;
;testfeature => #9,callee,Playback,tt-monkeys ;Play tt-monkeys to
;callee if #9 was pressed
you have parkedcalls
you have parkedcalls included somewhere and they are conflicting. you dont want parkedcalls included anywhere in a MTE dialplan. remove all occurences of include => parkedcalls
Call Parking
I had no instances of parked calls.
[asterisk]# grep include => parkedcalls *
grep: =: No such file or directory
[asterisk]#
I did have references to call parking in features.conf. Not sure if that's supposed to be there, so I commented it out.
[general]
;parkext => 700 ; What extension to dial to park
;parkpos => 701-704 ; What extensions to park calls on. These needs to be
; numeric, as Asterisk starts from the start position
; and increments with one for the next parked call.
;context => parkedcalls ; Which context parked calls are in
;parkingtime => 180 ; Number of seconds a call can be parked for
; (default is 45 seconds)
I can still park a call by transferring it to 700, but when I dial 701 to unpark it I'm told that there are no parked calls at that extension.
== Parked
== Parked SIP/dozment-b7d00470 on 701@parkedcalls. Will timeout back to extension [macro-tl-userexten-base] s, 146 in 180 seconds
-- Added extension '701' priority 1 to parkedcalls
-- Playing 'digits/7' (language 'en')
-- Playing 'digits/0' (language 'en')
-- Playing 'digits/1' (language 'en')
this indicates that parkedcalls is still being called. you can change your parkext to something else so that your ext 700's arent overlaping or change park context name. your grep wont work the way you think it will due to = and > operators. try just 'grep parkedcalls *'
Success!
Got it! I did find an include for parked calls in extensions.ael. Removed that and did a module reload, and it still didn't work. I then changed the park/unpark extensions to something other than 700/701 as you suggested, and it's working. I think for now I'm going to leave it the way it is and declare success.
eeman, thanks for all of your help.
Where is the App
In the script description it says: Script Description: Park call using ValetParkCall command. Requires app_valetparking application - make sure this application is installed.
Where do I find the app_valetparking application?
http://www.freeswitch.org/ast
http://www.freeswitch.org/asterisk_stuff/
just put it in apps/ before running ./configure
my feature extensions
Erik,
first thanks for all the help in your posts..
I tested your script above and it works great, music on hold (parked), no announcement if you hit transfer at the wrong time ect..
The one thing I see as a problem is someone gets parked, another call comes in and someone else picks up for example and they park that call. The system leads that person to believe the call was parked but because there already was a parked call the system hangs up on the caller.
did I miss something / do something wrong or is this by design..?
Thanks
George
I only let my tenants park a
I only let my tenants park a single call, its a compromise considering the alternative is a broken system that lets tenants unpark other calls. Multi-context call parking is slated to get incorporated in 1.6.1-ish.
I only let my tenants park a
I understand and agree with you 100%, I just don't like the idea of a call getting kicked to the curb with out letting the party parking the call know.
I'm going to have to think about offering it until 1.6.#, it might be a while since we are only on 1.4.?
Thanks
George
I have finally had time (and
I have finally had time (and a need) to get back to call parking, and I can't make it work. Eric, I have I believe I my valetparkcall script set up exactly as you describe above. I place a call from one extension to another. From the receiving extension I hit #* to transfer the call. It asks me to enter an extension and then press pound. I believe it is playing vm-extension.
I enter 1, press # and hang up. Now, from the other phone (the one that initiated the call) I hear "extension 1, extension 1, extension 1" repeated until that extension drops the call. I have another extension set up to pick up the calls, but I don't seem to be able to get them.
show valetparkedcalls shows that I am parking the call
um-882*CLI> show valetparkedcalls
Num Channel (Context Extension Pri ) Elapsed Timeout LotName
2 Local/*98@from-inside-env-d49f,2 (from-inside-env 101 1 ) 53s 187s env
(Note: in this case I responded to the vm-extension prompt with 2 instead of 1).
Any idea what I could be missing this time? If I'm using valetpark do I need the park extensions defined in features.conf? Is this still the best way to do call parking with MTE?
Erik, maybe if you will tell
Erik, maybe if you will tell me that about 16 more times I will actually do it! I will go on a mad search for include=>parkedcalls.
There is no reference to
There is no reference to include=>parkedcalls in my etc/asterisk directory. The only reference to parkedcalls is comments on the valetpark/unpark macros.
I finally got this working,
I finally got this working, and I've been playing around with a little tweak that I made to Eric's script. First, thanks for all of your help with it, Eric.
Here is my ValetCallPark script as I have it now.
exten => s,1,Set(MY_CHAN=${CUT(CHANNEL,/,2)})
exten => s,n,Set(MYEXTENSION=${CUT(MY_CHAN,-,1)})
exten => s,n,NoOp(${MYEXTENSION})
exten => s,n,Set(TIMEOUT=${ARG1})
exten => s,n,GotoIf($["${TIMEOUT}" != ""]?park)
exten => s,n,Set(TIMEOUT=360)
exten => s,n(park),ValetParkCall(auto|${tenant}|${TIMEOUT}|${MYEXTENSION}|1|from-inside${TL_DASH}${tenant})
Instead of sending the call to slot 1 as Eric does I'm sending it to the auto slot so that I can park multiple calls.
Then, I use ValetParkList to unpark the call. When the feature code is dialed to unpark the call ValetParkList plays a list of slots in which calls are parked. The user presses * when he hears the call that he wants to unpark.
Here's my unpark script.
exten => s,1,ValetParkList(${tenant})
So, the call plays out like this:
1) Call comes in and is answered on extension 100.
2) 100 transfers the call to the ValetPark feature code (*98 in my case).
3) The system plays back the parking slot into which the call is parked (ie, "Extension 1")
4) The person at extension 100 notifies the intended recipient of the call that a call is parked at slot 1.
5) The third person dials the retrieve feature code (*99) and hears a list of parked calls (in this case he hears "1").
I played around with a variation where I parked the call at slot ${MYEXTENSION}. I thought it might make it easier to understand if the attended could announce, "I have a call parked for you at my extension", and then have the intended recipient pick it up from, say, slot 100.
The downside of this approach is that I can only park one call per extension. If I use "auto" to set the slot I can have one person park multiple calls simultaneously.
Eric, I don't understand what you are doing in the first line of your script, but my calls weren't coming back correctly after the timeout.
I set mine up to blind
I set mine up to blind transfer to 700. In order to know who to ring back its taken from the BLINDTRANSFER variable. My users blind-transfer to 700 to park and dial 701 to unpark. They werent sophisticated enough to handle multiple slots where they have to listen to them in order to retrieve them.
multi-context parking slots is coming in 1.6.1 btw. Ive seen the code in SVN. I asked Mark Spencer for this personally July 07, so I'm glad its finally coming.
app_valetpark has to be
app_valetpark has to be compiled into Asterisk. As eeman said earlier you can download it from http://www.freeswitch.org/asterisk_stuff/. Drop it in your {asterisk source/}apps/ directory and build it.
I hate to dig up this old post, but
I am about to load a new MT and wanted to get this app_valetpark. But now that link at freeswitch shows up as 403 Forbidden from anywhere I try. Is it available somewhere else, does any one have a copy, or is it still even required, months later?
Went right to it
Thanks, big help there. Now if I can just figure out how to compile it... I'll search this forum and check back if I can't figure it out.
it may fail during compile
it may fail during compile depending on if they ever implemented the patch I submitted or not. It stopped compiling around 1.4.23 or so. The fix was simply list the #include files in a different order.
Order of Include files...
You don't have the new ordered include list handy do you? It fails compiling on 1.4.26-rc5. Thank you.
i have only tested it up to
i have only tested it up to 1.4.24 but yes
--- app_valetparking.c.orig 2008-08-18 12:29:06.000000000 -0400
+++ app_valetparking.c 2009-03-11 18:29:49.000000000 -0400
@@ -23,7 +23,22 @@
* OTHER DEALINGS IN THE SOFTWARE.
*/
+#include "asterisk.h"
+
+#include <stdlib.h>
+#include <errno.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <sys/time.h>
+#include <sys/signal.h>
+#include <netinet/in.h>
+
+#include <pthread.h>
+
#include <stdio.h>
+
#include <asterisk/lock.h>
#include <asterisk/utils.h>
#include <asterisk/file.h>
@@ -43,22 +58,11 @@
#include <asterisk/cli.h>
#include <asterisk/app.h>
#include <asterisk/manager.h>
-#include <stdlib.h>
-#include <errno.h>
-#include <unistd.h>
-#include <string.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <sys/time.h>
-#include <sys/signal.h>
-#include <netinet/in.h>
-
-#include <pthread.h>
-
-#include "asterisk.h"
ASTERISK_FILE_VERSION(__FILE__, "$Revision: 1.23 $")
+#define AST_MODULE "valet_parking"
+
#define DEFAULT_VALETPARK_TIME 45000
static struct ast_channel *valet_request(const char *type, int format, void *data, int *cause);
OK I give up
I searched for the last few days on how and where to compile this app_valetpark.c file. Could anyone tell me where it goes in the make process? Are there any instructions or a link someone could send me?
it goes in the apps
it goes in the apps directory of the source tree of asterisk then do a ./configure, make menuselect, and make
I think I just found a
I think I just found a problem with this using the same script that I listed earlier. Can someone try to confirm it? I'm running asterisk v 1.4.23.
1) Call comes in from outside to extension 110.
2) 110 parks call
3) 110 calls 111
4) While 110 and 111 are talking the ringback timeout expires on the parked call. It tries to call 110 and gets this...
[Aug 4 18:15:47] WARNING[17755]: app_dial.c:1253 dial_exec_full: Skipping dialing interface 'SIP/110-env' again since it has already been dialed
This only seems to happen if the parked call originates from the outside.
you should not be running
you should not be running 1.4.23 unless you don't care that the entire call pickup features are completely broken.
there was no one at the
there was no one at the office available to test parking the call. My script is a bit different though. I still have the single slot script and my multiple slot script looks like this...
exten => s,1,Macro(tl-set-myvariables)
exten => s,n,Set(TIMEOUT=${ARG1})
exten => s,n,GotoIf($["${TIMEOUT}" != ""]?park)
exten => s,n,Set(TIMEOUT=360)
exten => s,n(park),ValetParkCall(auto|${tenant}|${TIMEOUT}|${MYEXTENSION}|1|from-inside${TL_DASH}${tenant})
but I am not using that one at the office.
Ok, Erik! You made me
Ok, Erik! You made me laugh! I think most of my posts here start with "I'm running version..." And, you always reply with "You should not be running...". Thanks for keeping me on my toes! Don't have anyone using pick up right now, and most everything else is working. So, I've stayed here.
I think the problem is that I'm returning the call to the same extension to which it was sent initially. It works if the parked call is from inside, but not if it comes in from outside.
I found the error in app_dial.c and app_queue.c App_queue.c also has this...
02731 * 2. Iterate trough the members of the queue, creating a callattempt corresponding to each member. During this
02732 * iteration, we also check the dialed_interfaces datastore to see if we have already attempted calling this
02733 * member. If we have, we do not create a callattempt. This is in place to prevent call forwarding loops. Also
02734 * during each iteration, we call calc_metric to determine which members should be rung when.
you're using aastra phones
you're using aastra phones arent you? I am wondering if the same problem exists on a blind transfer instead of attended transfer... but aastra's cant do a true blind transfer. They instead do a 'blonde' transfer. A blind transfer is a redirect which behaves a lot differently (hence why original callerid sticks to the call etc). The bad news is the guy maintaining valetparking quit maintaining it. So fixing it in a means that it rings back the same way regular parking rings back is probably out. I wish i had a test platform to see where and if the 1.6 branch adopted muti-context parking. Russel said in a thread many months ago that it was going to be 1.6.1.x-ish but I saw the config options showing up as early as 1.6.0.x. I don't know if the feature itself ever evolved or if the config options were placeholders. Maybe for the short term set your timeout crazy high so that they don't get disconnected? Or redirect the timeout somewhere else (maybe an ivr?)
anyone using MTE with 1.6.x.x branch that I can see if call parking is multi-context or not?
I only have one customer
I only have one customer with Aastra, and they don't really use any advanced features. If it rings they pick it up. Not much more than that. The rest of my customers use Polycom.
I set the timeout to 0, and it seems to have disabled the ring-back. That may be a decent work around. I also thought about ending it to an ivr or creating a variable for the extension that should receive the ring back.
Ok, I'm an idiot.
Ok, I'm an idiot. app_valetparkcall is working perfectly as described above. I have my phones behind an Edgemarc 4500 router, and I swapped my router out with one that is licensed for two calls. When I was testing this I was tying up both of my allowed calls. So, the ring back wasn't able to come back in. Dang, I hate it when I do that! Tested it in a working configuration, and it works fine.
I did adjust my scripts slightly today, and I like the change. Here's what I have
Call park script (As before, ARG1 is the time in seconds until the call is returned to the original answering extension. Setting this to 0 seems to disable ring back.)
exten => s,1,Set(MY_CHAN=${CUT(BLINDTRANSFER,/,2)})
exten => s,n,Set(MYEXTENSION=${CUT(MY_CHAN,-,1)})
exten => s,n,NoOp(${MYEXTENSION})
exten => s,n,Set(TIMEOUT=${ARG1})
exten => s,n,GotoIf($["${TIMEOUT}" != ""]?park)
exten => s,n,Set(TIMEOUT=360)
exten => s,n(park),ValetParkCall(auto|${tenant}|${TIMEOUT}|${MYEXTENSION}|1|from-inside${TL_DASH}${tenant})
Call unpark script
exten => s,1,ValetUnParkCall(filo|${tenant})
This gives me the ability to park multiple calls. In the unparking script you can specify first-in-first-out (fifo) or first-in-last-out (filo) to tell it how to pull calls off of parking. I'm not dare going to suggest again that there is a problem with the code since I've already proven my incompetence tonight, but I fifo and filo seem to be reversed. With the unparking script set to pull in first-in-first-out order I get the last call parked first. Setting it to filo give me the oldest call first.
This seems to be working well.
Erik, as always, thanks for your good comments. Sorry to drag us down a dead end.
Dan
for multiple parking slots
for multiple parking slots here is my park and unpark
exten 700 park:
exten => s,1,Macro(tl-set-myvariables)
exten => s,n,Set(TIMEOUT=${ARG1})
exten => s,n,GotoIf($["${TIMEOUT}" != ""]?park)
exten => s,n,Set(TIMEOUT=360)
exten => s,n(park),ValetParkCall(auto|${tenant}|${TIMEOUT}|${MYEXTENSION}|1|from-inside${TL_DASH}${tenant})
exten _70Z unpark:
exten => s,1,ValetUnParkCall(${MACRO_EXTEN:${ARG1}}|${tenant})
arg1 is invoking code length (incase someone doesnt want to stick with 700 and 701-709)
so when they hear a call is parked in slot 4 they dial 704 to unpark it.
How do you hear the slot the
How do you hear the slot the call is parked in when you park the call? Is it an attended transfer to 700? Right now we're doing a blind transfer to the parking lot, so we don't get the feedback.
attended trasfer will say
attended trasfer will say 'one' or 'two' etc. in my one-slot-per-tenant solution I was using blind transfer since they didnt need to hear 'one' when they parked the call. Have you noticed that only polycom plays MOH when valetparking and when the call parker parks a second call the MOH stops? Apparently theres no MOH channel for valetparking and its a feature of polycom in that MOH plays while creating any sort of transfer that enables it.
I didn't see that problem
I didn't see that problem with MOH. I have had two calls parked at a time, and both parked calls hear MOH. My unpark script pulls the oldest call off park. If I repark that call it becomes the newest call in the parking lot. Last night I was rotating through the parked calls, and always had MOH on every parked call. I was doing this with Polycom phones only. Anything I can do to help you chase this down?
I will take another look at using attended transfer. For now, I have Polycom softkeys set up for Park and Unpark, and they do blind transfers.
First holding the call and then forward it to another extention
Hi,
we are about purchusing the thirdlane pbx. but, how can we transfer an active call to another extention when the call in progress?
parking is like putting
parking is like putting something on hold, except when you put someone on hold, only the phone that put it on hold can take it off hold. With parking you stick the call in a 'slot' and other phones can dial an extension to retrieve that call.
Erik wrote: anyone using MTE
Erik wrote:
anyone using MTE with 1.6.x.x branch that I can see if call parking is multi-context or not?
I'm running PBX Manager on 1.6.0.6 and this is a desired feature. Let me know what you need.
I recompiled this build to include app_valetparking.c with the newer include order. It completed with no errors but asterisk is not listing it as an installed app and was selected in the menuselect.
Thanks,
Andy
ValetParkCall
Had some time over the holidays to do a little testing with 1.6.1.11 new muti-context parking. This has been broken since 1.6.0.1 but seems to be working now on 1.6.1.11. I also just tested this with 1.6.1.12 also.
So far so good.
I am using the lastest ISO CentOS 5.3 and select 1.6 and complete the installation.
I then do an upgrade from asterisk 1.6.0.6 to 1.6.1.11 following standard installation steps.
Next step is to add a couple new call parking slots in features.conf.
features.cong
....
....
[general]
parkext => 700 ; What extension to dial to park
parkpos => 701-704 ; What extensions to park calls on. Need to be
; numeric, as Asterisk starts from the start
; and increments with one for the next parked call.
context => parkedcalls ; Which context parked calls are in
parkingtime => 60 ; Number of seconds a call can be parked for
; (default is 45 seconds)
;These are the new parking lots I created.
[parkinglot_Home] ; DC add for Tenant parking
context => from-inside-Home
parkpos => 801-810
;parkext => 800
findslot => next
[parkinglot_training] ; DC add for Tenant parking
context => from-inside-training
parkpos => 801-810
;parkext => 800
findslot => next
The context name need to start with parkinlot_xxxxxxxx I used the tenant name but it can be anything you want. I did not change the default parking number definded under general.
parkinglot=parkinglot_Home
I had to add this to each extension that will use the parking lot under the extension Other Options area.
I also had add an include statement under extension.include for each tenant.
include => parkinglot_Home ;DC
I think we should start a new thread on Asterisk 1.6 multi-tenant parking and end this thread.
I would be happy to explain what I did for thoes interested in testing the 1.6 parking capability for MT. It seems to be working well. Nothing like getting a few other eyes on this.
Denis Camp
It was never supposed to work
It was never supposed to work in the 1.6.0 branch. well I have it running in 1.6.1.x, the rub is that theres some manual work required to get this working in MTE...
every sip extension has to define the parking lot as an extra arguement in other options..
parkinglot=parkinglot_tenantname
in features.conf you need
[parkinglot_tenantname]
context => parkedcalls-tenantname
parkingtime => 180
parkext => 700
parkpos => 701-704
findslot => next
and for the from-inside-redir-tenantname and from-inside-redir-tenantname-restricted based contexts in extension.include:
include => parkedcalls-tenantname after include => feature-extensions-tenantname
this has to be done manually for each and ever time you create a tenant. there will be no automation for this until the day we decide to never again support 1.4 and 1.6.0 versions of asterisk
How about BLF for the Parking Lot
I have one thing I would like to add to the discussion. I would like to be able to setup BLF key's on a users phone to show them whether or not there is a parked call. I believe I've found out how to do this using the normal asterisk parking feature but I was wondering if anyone had tried to do this with valetparking. the sample below shows how to create an extension that would allow you to monitor calls parked on slot 71. Any thoughs?
exten => 71,hint,park:71@parkedcalls
its for multi tenant systems. Create a feature extension for valetpark another feature extension for valet unpark. In its original form it prompts you to pick a parking extension to park the call, the complete the attended transfer. To unpark the call dial the unpark extension and enter the room number.
you can also clone the script and change the behavior. I am considering just a single extension per tennant and doing away with the 'prompt for extension' bit entirely.