Disconnect after featuredigittimeout on blind transfer

This is probably an Asterisk question, not a FreePBX question, but my guess is that someone here will have a quick answer.

I have a Xorcom appliance running Asterisk 1.4.36/FreePBX 2.6.0.1 and a mix of (45) Aastra 6753i’s and 6731i’s.

When attempting a blind transfer (##) the call is disconnected if the user doesn’t start keying-in the extension before the featuredigittimeout period elapses. I have increased the featuredigittimeout value to mitigate the issue, but I’m surprised that the user isn’t just returned to the call if the timeout elapses. The default featuredigittimeout value (500ms) seems almost comically low if the penalty for being too slow is a dropped call.

Is the the intended behavior or a bug? If it’s the latter, does anyone know when it was fixed.

Thanks for any info.

Bill

Hello,

This is not normal behavior with any Xorcom PBX and I am unable to reproduce this issue. Could you provide some of the asterisk CLI from when this happens?

Xorcom Tech

Some CLI output is below – verbosity is at 8. This is a call from a cell phone to extension 103 (Aastra 6731i), and this output begins at the moment that ‘##’ is pressed on the phone. To avoid posting my cell phone number on the internet, my number has been replaced with ‘[MY CALLER ID NUMBER]’ in the output.

What is the normal behavior if I don’t enter a blind transfer extension in a timely fashion?

Thanks for any tips. You can contact me directly via email to wpvanv at yahoo.

Bill


-- Started music on hold, class 'default', on DAHDI/1-1
-- <SIP/103-00007900> Playing 'pbx-transfer' (language 'en')

== Parsing ‘/etc/asterisk/manager.conf’: Found
== Parsing ‘/etc/asterisk/manager_additional.conf’: Found
== Parsing ‘/etc/asterisk/manager_custom.conf’: Found
== Manager ‘admin’ logged on from 127.0.0.1
== Manager ‘admin’ logged off from 127.0.0.1
– Stopped music on hold on DAHDI/1-1
== Channel ‘DAHDI/1-1’ jumping out of macro ‘dial’
== Channel ‘DAHDI/1-1’ jumping out of macro ‘exten-vm’
– Executing [@from-internal-xfer:1] GotoIf(“DAHDI/1-1”, “0?ext-local||1”) in new stack
– Executing [@from-internal-xfer:2] Macro(“DAHDI/1-1”, “user-callerid|”) in new stack
– Executing [s@macro-user-callerid:1] Set(“DAHDI/1-1”, “AMPUSER=[MY CALLER ID NUMBER]”) in new stack
– Executing [s@macro-user-callerid:2] GotoIf(“DAHDI/1-1”, “0?report”) in new stack
– Executing [s@macro-user-callerid:3] ExecIf(“DAHDI/1-1”, “0|Set|REALCALLERIDNUM=[MY CALLER ID NUMBER]”) in new stack
– Executing [s@macro-user-callerid:4] Set(“DAHDI/1-1”, “AMPUSER=”) in new stack
– Executing [s@macro-user-callerid:5] Set(“DAHDI/1-1”, “AMPUSERCIDNAME=”) in new stack
– Executing [s@macro-user-callerid:6] GotoIf(“DAHDI/1-1”, “1?report”) in new stack
– Goto (macro-user-callerid,s,10)
– Executing [s@macro-user-callerid:10] GotoIf(“DAHDI/1-1”, “0?continue”) in new stack
– Executing [s@macro-user-callerid:11] Set(“DAHDI/1-1”, “__TTL=63”) in new stack
– Executing [s@macro-user-callerid:12] GotoIf(“DAHDI/1-1”, “1?continue”) in new stack
– Goto (macro-user-callerid,s,19)
– Executing [s@macro-user-callerid:19] NoOp(“DAHDI/1-1”, “Using CallerID “[MY CALLER ID NUMBER]” <[MY CALLER ID NUMBER]>”) in new stack
– Executing [@from-internal-xfer:3] GotoIf(“DAHDI/1-1”, “1?skipdb”) in new stack
– Goto (from-internal-xfer,5)
– Executing [@from-internal-xfer:5] Set(“DAHDI/1-1”, “__NODEST=”) in new stack
– Executing [@from-internal-xfer:6] Set(“DAHDI/1-1”, “__BLKVM_OVERRIDE=BLKVM//DAHDI/1-1”) in new stack
– Executing [@from-internal-xfer:7] Set(“DAHDI/1-1”, “__BLKVM_BASE=”) in new stack
– Executing [@from-internal-xfer:8] Set(“DAHDI/1-1”, “DB(BLKVM//DAHDI/1-1)=TRUE”) in new stack
– Executing [@from-internal-xfer:9] Set(“DAHDI/1-1”, “RRNODEST=”) in new stack
– Executing [@from-internal-xfer:10] Set(“DAHDI/1-1”, “__NODEST=”) in new stack
– Executing [@from-internal-xfer:11] Set(“DAHDI/1-1”, “RecordMethod=Group”) in new stack
– Executing [@from-internal-xfer:12] Macro(“DAHDI/1-1”, “record-enable||Group”) in new stack
– Executing [s@macro-record-enable:1] GotoIf(“DAHDI/1-1”, “0?check”) in new stack
– Executing [s@macro-record-enable:2] ResetCDR(“DAHDI/1-1”, “w”) in new stack
– Executing [s@macro-record-enable:3] StopMixMonitor(“DAHDI/1-1”, “”) in new stack
– Executing [s@macro-record-enable:4] AGI(“DAHDI/1-1”, “recordingcheck|20120131-172908|1328059710.67412”) in new stack
– Launched AGI Script /var/lib/asterisk/agi-bin/recordingcheck
recordingcheck|20120131-172908|1328059710.67412: No DB Entry AMPUSER//recording - Not Recording for , checking for others
– AGI Script recordingcheck completed, returning 0
– Executing [s@macro-record-enable:5] MacroExit(“DAHDI/1-1”, “”) in new stack
– Executing [@from-internal-xfer:13] GotoIf(“DAHDI/1-1”, “1 ?skipsimple”) in new stack
– Goto (from-internal-xfer,15)
– Executing [@from-internal-xfer:15] Set(“DAHDI/1-1”, “RingGroupMethod=”) in new stack
– Executing [@from-internal-xfer:16] Set(“DAHDI/1-1”, “_FMGRP=”) in new stack
– Executing [@from-internal-xfer:17] GotoIf(“DAHDI/1-1”, “0?doconfirm”) in new stack
– Executing [@from-internal-xfer:18] Macro(“DAHDI/1-1”, “dial|20|trW|”) in new stack
– Executing [s@macro-dial:1] GotoIf(“DAHDI/1-1”, “1?dial”) in new stack
– Goto (macro-dial,s,3)
– Executing [s@macro-dial:3] AGI(“DAHDI/1-1”, “dialparties.agi”) in new stack
– Launched AGI Script /var/lib/asterisk/agi-bin/dialparties.agi
dialparties.agi: Starting New Dialparties.agi
== Parsing ‘/etc/asterisk/manager.conf’: Found
== Parsing ‘/etc/asterisk/manager_additional.conf’: Found
== Parsing ‘/etc/asterisk/manager_custom.conf’: Found
== Manager ‘admin’ logged on from 127.0.0.1
dialparties.agi: Caller ID name is ‘[MY CALLER ID NUMBER]’ number is '[MY CALLER ID NUMBER]'
dialparties.agi: USE_CONFIRMATION: 'FALSE’
dialparties.agi: RINGGROUP_INDEX: ''
dialparties.agi: Methodology of ring is ‘none’
– dialparties.agi: Filtered ARG3:
== Manager ‘admin’ logged off from 127.0.0.1
– AGI Script dialparties.agi completed, returning 0
– Executing [s@macro-dial:4] NoOp(“DAHDI/1-1”, “Returned from dialparties with no extensions to call and DIALSTATUS: ANSWER”) in new stack
– Executing [@from-internal-xfer:19] Goto(“DAHDI/1-1”, “nextstep”) in new stack
– Goto (from-internal-xfer,21)
– Executing [@from-internal-xfer:21] Set(“DAHDI/1-1”, “RingGroupMethod=”) in new stack
– Executing [@from-internal-xfer:22] GotoIf(“DAHDI/1-1”, “0?nodest”) in new stack
– Executing [@from-internal-xfer:23] Set(“DAHDI/1-1”, “__NODEST=”) in new stack
– Executing [@from-internal-xfer:24] DBdel(“DAHDI/1-1”, “BLKVM//DAHDI/1-1”) in new stack
– DBdel: family=BLKVM, key=/DAHDI/1-1
– Executing [@from-internal-xfer:25] Hangup(“DAHDI/1-1”, “”) in new stack
== Spawn extension (from-internal-xfer, , 25) exited non-zero on ‘DAHDI/1-1’
– Executing [h@from-internal-xfer:1] Macro(“DAHDI/1-1”, “hangupcall”) in new stack
– Executing [s@macro-hangupcall:1] GotoIf(“DAHDI/1-1”, “1?noautomon”) in new stack
– Goto (macro-hangupcall,s,3)
– Executing [s@macro-hangupcall:3] NoOp(“DAHDI/1-1”, “TOUCH_MONITOR_OUTPUT=”) in new stack
– Executing [s@macro-hangupcall:4] GotoIf(“DAHDI/1-1”, “1?noautomon2”) in new stack
– Goto (macro-hangupcall,s,6)
– Executing [s@macro-hangupcall:6] NoOp(“DAHDI/1-1”, “MONITOR_FILENAME=”) in new stack
– Executing [s@macro-hangupcall:7] GotoIf(“DAHDI/1-1”, “1?theend”) in new stack
– Goto (macro-hangupcall,s,9)
– Executing [s@macro-hangupcall:9] Hangup(“DAHDI/1-1”, “”) in new stack
== Spawn extension (macro-hangupcall, s, 9) exited non-zero on ‘DAHDI/1-1’ in macro ‘hangupcall’
== Spawn extension (from-internal-xfer, h, 1) exited non-zero on ‘DAHDI/1-1’
– Hungup ‘DAHDI/1-1’

Hello,

Have you tried adding a capital T to the asterisk dial string?

– Executing [@from-internal-xfer:18] Macro(“DAHDI/1-1”, “dial|20|trW|”) in new stack

Here you are only using “trW”.

If I follow you correctly, it looks like you are trying to transfer a call from a cell phone to extension 103 and the call is dropped. Is this correct?

The capital T will allow the calling party to transfer the call by hitting #.

Xorcom Tech

Sorry, I should have given more background. Before the output included above starts, there is an established call between a cell phone and extension 103 (the call was originated by the cell phone). When the user at x103 presses ‘##’ to transfer the cell phone caller to another internal extension, the call drops if the user takes too long to start entering the extension number. The output above starts at the moment when the user presses ‘##’.

Assuming you have a test system set up, what happens when you initiate a blind transfer on an established (incoming) call but never key in the destination extension number?

Thanks.

After hitting ## this is what is seen on my test system:

– Started music on hold, class ‘default’, on DAHDI/7-1
– <SIP/202-00000f8a> Playing ‘pbx-transfer’ (language ‘en’)
– Unable to find extension ‘’ in context ‘from-internal-xfer’
– <SIP/202-00000f8a> Playing ‘pbx-invalid’ (language ‘en’)
– Stopped music on hold on DAHDI/7-1

and then the call is returned to the original user that prompted the transfer. In this case, extension 202.

So then i went to look at the from-internal-xfer context and saw this:

[from-internal-xfer]
; applications are now mostly all found in from-internal-additional in _custom.conf
include => from-internal-custom
include => parkedcalls
;allow phones to dial other extensions
include => ext-fax
;allow phones to access generated contexts
;
; MODIFIED (PL)
;
; Currently the include for findmefollow is being auto-generated before ext-local which is the desired behavior.
; However, I haven’t been able to do anything that I know of to force this. We need to determine if it should
; be hardcoded into here to make sure it doesn’t change with some configuration. For now I will leave it out
; until we can discuss this.
;
include => ext-local-confirm
include => findmefollow-ringallv2
include => from-internal-additional
; This causes grief with ‘#’ transfers, commenting out for the moment.
; include => bad-number
exten => s,1,Macro(hangupcall)
exten => h,1,Macro(hangupcall)

Is this 3rd line from the bottom uncommented for you?

Xorcom Tech

Now that I now that my system is not behaving as it should, I’m just going to get my Xorcom reseller to deal with this. Thanks for your help.

Bill