Blindxfer not returning to correct phone after park timeout

We’ve recently upgraded to 1.6.0.6 from 1.4.23 and I’ve been working out some stuff in the dialplan that was a bit outdated. One of the problems I’ve been having is when a person transfers a call to the parking lot, if the call happens to exceed the ‘parkingtime’ threshold from features.conf then the call is not returned to the device that initialized the transfer.

pertinent information from features.conf:

parkingtime => 30
comebacktoorigin = yes

Here is a simple rundown of our system:

  1. Call comes in through DID (which I place from another phone)

exten => 2102222222,1,Macro(incoming,${nathan})

  1. Macro takes the call and makes sure it gets to where it needs to be

[macro-incoming]
exten => s,1,ChanIsAvail(${ARG1})
exten => s,n,Dial(${AVAILORIGCHAN},21,tTr)
exten => s,n,VoiceMail(${${MACRO_EXTEN}}@default,u)
exten => s,n,Hangup()

  1. Once the call is at the destination the user transfers them to the parkinglot
[Feb 26 12:45:39]     -- Executing [2222222@internal:1] Set("SIP/Gestetner-b7d30ee0", "CALLERID(num)='2102222222'") in new stack
[Feb 26 12:45:39]     -- Executing [2222222@internal:2] ChanIsAvail("SIP/Gestetner-b7d30ee0", "DAHDI/23&DAHDI/22&DAHDI/21&DAHDI/20&DAHDI/19&DAHDI/18") in new stack
[Feb 26 12:45:39]     -- Executing [2222222@internal:3] Dial("SIP/Gestetner-b7d30ee0", "DAHDI/22/2102222222,45,tT") in new stack
[Feb 26 12:45:39]     -- Requested transfer capability: 0x00 - SPEECH
[Feb 26 12:45:39]     -- Called 22/2102222222
[Feb 26 12:45:39]     -- DAHDI/22-1 is proceeding passing it to SIP/Gestetner-b7d30ee0
[Feb 26 12:45:39]     -- Accepting call from 'XXXXXXXXXX' to '2102222222' on channel 0/18, span 1
[Feb 26 12:45:39]     -- Executing [2102222222@incoming:1] Macro("DAHDI/18-1", "incoming,SIP/Nathan") in new stack
[Feb 26 12:45:39]     -- Executing [s@macro-incoming:1] ChanIsAvail("DAHDI/18-1", "SIP/Nathan") in new stack
[Feb 26 12:45:39]   == Using SIP RTP CoS mark 5
[Feb 26 12:45:39]     -- Executing [s@macro-incoming:2] Dial("DAHDI/18-1", "SIP/Nathan,21,tTr") in new stack
[Feb 26 12:45:39]   == Using SIP RTP CoS mark 5
[Feb 26 12:45:39]     -- Called Nathan
[Feb 26 12:45:39]     -- DAHDI/22-1 is ringing
[Feb 26 12:45:39]     -- SIP/Nathan-09cd0580 is ringing
[Feb 26 12:45:40]     -- SIP/Nathan-09cd0580 answered DAHDI/18-1
[Feb 26 12:45:41]     -- DAHDI/22-1 answered SIP/Gestetner-b7d30ee0
[Feb 26 12:45:41]     -- Started music on hold, class 'default', on DAHDI/18-1
[Feb 26 12:45:41]     -- <SIP/Nathan-09cd0580> Playing 'pbx-transfer.gsm' (language 'en')
[Feb 26 12:45:45]     -- Stopped music on hold on DAHDI/18-1
[Feb 26 12:45:45]     -- Started music on hold, class 'default', on DAHDI/18-1
[Feb 26 12:45:45]   == Parked DAHDI/18-1 on 701@parkedcalls. Will timeout back to extension [macro-incoming] s, 2 in 30 seconds
[Feb 26 12:45:45]     -- Added extension '701' priority 1 to parkedcalls (0x9c90f30)
[Feb 26 12:46:15]     -- Stopped music on hold on DAHDI/18-1
[Feb 26 12:46:15]     -- Added extension 'DAHDI018' priority 1 to park-dial (0x9c39650)
[Feb 26 12:46:15]   == Timeout for DAHDI/18-1 parked on 701. Returning to park-dial,DAHDI018,1
[Feb 26 12:46:15]     -- Executing [DAHDI018@park-dial:1] Dial("DAHDI/18-1", "DAHDI/18|30|Tt") in new stack
[Feb 26 12:46:15] WARNING[14129]: app_dial.c:1470 dial_exec_full: Unable to create channel of type 'DAHDI' (cause 0 - Unknown)
[Feb 26 12:46:15]   == Everyone is busy/congested at this time (1:0/0/1)
[Feb 26 12:46:25] WARNING[14129]: pbx.c:3825 __ast_pbx_run: Timeout, but no rule 't' in context 'park-dial'
[Feb 26 12:46:25]     -- Hungup 'DAHDI/18-1'
[Feb 26 12:46:26]     -- Channel 0/22, span 1 got hangup request, cause 16
[Feb 26 12:46:26]     -- Hungup 'DAHDI/22-1'

When and if the call is put in the parkinglot it doesn’t return to the phone that put the user on hold “SIP/Nathan” in this case, rather it uses the channel that it came in on the PRI. The action in 1.4 would send the parked timeout to the phone that initiated the transfer not the PRI channel it originated from. Is there any type of workaround for this to send it to the right phone?

I was thinking about setting variables from within the macro to allow the phone to send to the correct user, in order to so this I could set ‘comebacktoorigin = no’ in the features.conf and setup a new context to route the calls.

In attempting this I couldn’t figure out a good way to set the variables and account for multiple transfers to the parking lot, so that when they were sent to the new context after the timeout it would know which phone put them on hold.

If anyone could shed some light on this, or have a better idea I would greatly appreciate it!

Regards,
Nathan

Is http://bugs.digium.com/view.php?id=14066 relevant?

I installed version 1.6.0.5 and it seems to have fixed my problems with the parking functionality, when the park times out it goes back to the original person who put the call in the parking lot. I’m not sure whats wrong with this functionality in 1.6.0.6 but it seems that something is not quite right.

Thanks,
Nathan