From what I've read the transfer application should just change destination_number and context, but this is not what I'm seeing happen if the call starts with freetdm. I have logged the span info in the answering extension - which works - but after the transfer it looks like the data is not available for the regex? But after it fails the Regex it executes the log lines but because it didn't see the variable it fails.. ... EXECUTE FreeTDM/2:1/ log(chan_name [FreeTDM/2:1/]) 2013-07-28 11:29:25.677884 [DEBUG] mod_dptools.c:1539 [FreeTDM/2:1/] EXECUTE FreeTDM/2:1/ log(freetdm_span_name FXO) 2013-07-28 11:29:25.677884 [DEBUG] mod_dptools.c:1539 FXO EXECUTE FreeTDM/2:1/ log(freetdm_span_number 2) 2013-07-28 11:29:25.677884 [DEBUG] mod_dptools.c:1539 2 EXECUTE FreeTDM/2:1/ log(freetdm_chan_number 1) 2013-07-28 11:29:25.677884 [DEBUG] mod_dptools.c:1539 1 EXECUTE FreeTDM/2:1/ transfer(my_voicemail XML features) 2013-07-28 11:29:25.677884 [DEBUG] switch_ivr.c:1815 (FreeTDM/2:1/) State Change CS_EXECUTE -> CS_ROUTING 2013-07-28 11:29:25.677884 [DEBUG] switch_core_session.c:1334 Send signal FreeTDM/2:1/ [BREAK] 2013-07-28 11:29:25.677884 [DEBUG] switch_core_session.c:854 Send signal FreeTDM/2:1/ [BREAK] 2013-07-28 11:29:25.677884 [NOTICE] switch_ivr.c:1822 Transfer FreeTDM/2:1/ to XML[my_voicemail@features] 2013-07-28 11:29:25.677884 [DEBUG] switch_core_state_machine.c:477 (FreeTDM/2:1/) State EXECUTE going to sleep 2013-07-28 11:29:25.677884 [DEBUG] switch_core_state_machine.c:415 (FreeTDM/2:1/) Running State Change CS_ROUTING 2013-07-28 11:29:25.677884 [DEBUG] switch_channel.c:2034 (FreeTDM/2:1/) Callstate Change ACTIVE -> RINGING 2013-07-28 11:29:25.677884 [DEBUG] switch_core_state_machine.c:470 (FreeTDM/2:1/) State ROUTING 2013-07-28 11:29:25.677884 [DEBUG] mod_freetdm.c:453 FreeTDM/2:1/ CHANNEL ROUTING 2013-07-28 11:29:25.677884 [DEBUG] mod_freetdm.c:456 [s2c1][1:3] Indicating PROCEED in state UP 2013-07-28 11:29:25.677884 [DEBUG] switch_core_state_machine.c:117 FreeTDM/2:1/ Standard ROUTING 2013-07-28 11:29:25.677884 [INFO] mod_dialplan_xml.c:557 Processing <0000000000>->my_voicemail in context features Dialplan: FreeTDM/2:1/ parsing [features->dx] continue=false Dialplan: FreeTDM/2:1/ Regex (FAIL) [dx] destination_number(my_voicemail) =~ /^dx$/ break=on-false Dialplan: FreeTDM/2:1/ parsing [features->att_xfer] continue=false Dialplan: FreeTDM/2:1/ Regex (FAIL) [att_xfer] destination_number(my_voicemail) =~ /^att_xfer$/ break=on-false Dialplan: FreeTDM/2:1/ parsing [features->is_transfer] continue=false Dialplan: FreeTDM/2:1/ Regex (FAIL) [is_transfer] destination_number(my_voicemail) =~ /^is_transfer$/ break=on-false Dialplan: FreeTDM/2:1/ parsing [features->cf] continue=false Dialplan: FreeTDM/2:1/ Regex (FAIL) [cf] destination_number(my_voicemail) =~ /^cf$/ break=on-false Dialplan: FreeTDM/2:1/ parsing [features->please_hold] continue=false Dialplan: FreeTDM/2:1/ Regex (FAIL) [please_hold] destination_number(my_voicemail) =~ /^([1-2][0-9])$/ break=on-false Dialplan: FreeTDM/2:1/ parsing [features->is_zrtp_secure] continue=true Dialplan: FreeTDM/2:1/ Regex (FAIL) [is_zrtp_secure] ${zrtp_secure_media_confirmed}() =~ /^true$/ break=on-false Dialplan: FreeTDM/2:1/ ANTI-Action eval(not_secure) Dialplan: FreeTDM/2:1/ parsing [features->is_secure] continue=true Dialplan: FreeTDM/2:1/ Regex (FAIL) [is_secure] ${sip_via_protocol}() =~ /tls/ break=on-false Dialplan: FreeTDM/2:1/ parsing [features->my_voicemail] continue=false Dialplan: FreeTDM/2:1/ Regex (PASS) [my_voicemail] source(mod_freetdm) =~ /(.*)/ break=never Dialplan: FreeTDM/2:1/ Action log(source ${source}) Dialplan: FreeTDM/2:1/ Action log(freetdm_span_number ${freetdm_span_number}) Dialplan: FreeTDM/2:1/ Action log(destination_number ${destination_number}) Dialplan: FreeTDM/2:1/ Regex (FAIL) [my_voicemail] freetdm_span_number() =~ /2/ break=on-true Dialplan: FreeTDM/2:1/ Regex (FAIL) [my_voicemail] source(mod_freetdm) =~ /^mod_sofia$/ break=on-false Dialplan: FreeTDM/2:1/ parsing [features->flite] continue=false Dialplan: FreeTDM/2:1/ Regex (FAIL) [flite] destination_number(my_voicemail) =~ /^99$/ break=on-false 2013-07-28 11:29:25.677884 [DEBUG] switch_core_state_machine.c:167 (FreeTDM/2:1/) State Change CS_ROUTING -> CS_EXECUTE 2013-07-28 11:29:25.677884 [DEBUG] switch_core_session.c:1334 Send signal FreeTDM/2:1/ [BREAK] 2013-07-28 11:29:25.677884 [DEBUG] switch_core_state_machine.c:470 (FreeTDM/2:1/) State ROUTING going to sleep 2013-07-28 11:29:25.677884 [DEBUG] switch_core_state_machine.c:415 (FreeTDM/2:1/) Running State Change CS_EXECUTE 2013-07-28 11:29:25.677884 [DEBUG] switch_channel.c:2036 (FreeTDM/2:1/) Callstate Change RINGING -> ACTIVE 2013-07-28 11:29:25.677884 [DEBUG] switch_core_state_machine.c:477 (FreeTDM/2:1/) State EXECUTE 2013-07-28 11:29:25.677884 [DEBUG] mod_freetdm.c:473 FreeTDM/2:1/ CHANNEL EXECUTE 2013-07-28 11:29:25.677884 [DEBUG] switch_core_state_machine.c:209 FreeTDM/2:1/ Standard EXECUTE EXECUTE FreeTDM/2:1/ eval(not_secure) EXECUTE FreeTDM/2:1/ log(source mod_freetdm) 2013-07-28 11:29:25.677884 [DEBUG] mod_dptools.c:1539 mod_freetdm EXECUTE FreeTDM/2:1/ log(freetdm_span_number 2) 2013-07-28 11:29:25.677884 [DEBUG] mod_dptools.c:1539 2 EXECUTE FreeTDM/2:1/ log(destination_number my_voicemail) This might be a bug -- I tried matching with both <condition field="freetdm_span_number" expression="2" break="on-true"> and <condition field="freetdm_span_number" expression="^2$" break="on-true"> The bigger question is just what does transfer do with a freetdm call? My understanding is transfer should simply change destination_number and context and reparse the dialplan? -------------------------------------------------------------------------------- Karl Schmidt EMail Karl@xtronics.com Transtronics, Inc. WEB http://secure.transtronics.com 3209 West 9th Street Ph (785) 841-3089 Lawrence, KS 66049 FAX (785) 841-0434 The Prius: A car for people that don't have math skills. The Volt: A car for people with even worse math skills. kps --------------------------------------------------------------------------------