I would guess there is an error in public on A, but you didn't include all of that context so I can't say for sure. Note that it matches 10001 in public, but when it gets to Local_Call, it just sees $1, not 10001. That s why the match is failing. Dialplan: sofia/internal/20001@10.3.3.10 Regex (PASS) [Calls from BoxB] destination_number(10001) =~ // break=on-false Dialplan: sofia/internal/20001@10.3.3.10 Action transfer($1 XML default) "there are a bunch of state machine messages here" Dialplan: sofia/internal/20001@10.3.3.10 parsing [default->Local_Call] continue=false Dialplan: sofia/internal/20001@10.3.3.10 Regex (FAIL) [Local_Call] destination_number($1) =~ /^(10\d\d\d)$/ break=on-false From: freeswitch-users-bounces@lists.freeswitch.org [mailto:freeswitch-users-bounces@lists.freeswitch.org] On Behalf Of Kane, Michael (mkane02) Sent: Tuesday, June 29, 2010 9:41 AM To: freeswitch-users@lists.freeswitch.org Subject: [Freeswitch-users] Connect two FreeSWITCH Boxes Hello newbie here. I'm having difficulty routing calls between 2 FreeSWITCH servers. I'm following the instructions on the Wiki titled "Connect Two FreeSWITCH Boxes" and I'm taking the IP authentication approach. When I originate a call from server "B" the Regex matches and forwards the call onto Server "A". Server "A" isn't matching in dialplan/default.xml (Local_Call) for some reason. Public.xml successfully transfers the call into the default context, but for some reason it skips over the Local_Call Regex. Anyone's guidance would be greatly appreciated. Server "B" (call origination dialing 10001 from 20001) 10.3.3.10 dialplan/default.xml <extension name="Dial to BoxA"> <condition field="destination_number" expression="^(10\d\d\d)$"> <action application="bridge" data="sofia/internal/$1@10.1.1.10"/> </condition> </extension> outbound call trace from console Dialplan: sofia/internal/20001@10.3.3.10 parsing [default->Local_Call] continue=false Dialplan: sofia/internal/20001@10.3.3.10 Regex (FAIL) [Local_Call] destination_number(10001) =~ /^(20\d\d\d)$/ break=on-false Dialplan: sofia/internal/20001@10.3.3.10 parsing [default->Dial to BoxA] continue=false Dialplan: sofia/internal/20001@10.3.3.10 Regex (PASS) [Dial to BoxA] destination_number(10001) =~ /^(10\d\d\d)$/ break=on-false Dialplan: sofia/internal/20001@10.3.3.10 Action bridge(sofia/internal/10001@10.1.1.10) dialplan/public.xml <extension name="Calls from BoxA"> <condition field="destination_number" expression=^(10\d\d\d)$"> <action application="transfer" data="$1 XML default"/> </condition> </extension> ************************************************************************** Server "A" (Call termination) 10.1.1.10 dialplan/default.xml <extension name="Local_Call"> <condition field="destination_number" expression="^(10\d\d\d)$"> <action application="set" data="dialed_extension=$1"/> <action application="bridge" data="user/${dialed_extension}@${domain_name}"/> <action application="answer"/> <action application="hangup"/> </condition> </extension> dialplan/public.xml <extension name="Dial to BoxB"> <condition field="destination_number" expression="^(20\d\d\d)$"> <action application="bridge" data="sofia/internal/$1@10.3.3.10"/> </condition> </extension> inbound call trace from console Dialplan: sofia/internal/20001@10.3.3.10 parsing [public->Calls from BoxB] continue=false Dialplan: sofia/internal/20001@10.3.3.10 Regex (PASS) [Calls from BoxB] destination_number(10001) =~ // break=on-false Dialplan: sofia/internal/20001@10.3.3.10 Action transfer($1 XML default) "there are a bunch of state machine messages here" Dialplan: sofia/internal/20001@10.3.3.10 parsing [default->Local_Call] continue=false Dialplan: sofia/internal/20001@10.3.3.10 Regex (FAIL) [Local_Call] destination_number($1) =~ /^(10\d\d\d)$/ break=on-false Dialplan: sofia/internal/20001@10.3.3.10 parsing [default->Dial to BoxB] continue=false Dialplan: sofia/internal/20001@10.3.3.10 Regex (FAIL) [Dial to BoxB] destination_number($1) =~ /^(20\d\d\d)$/ break=on-false Dialplan: sofia/internal/20001@10.3.3.10 parsing [default->outbound] continue=false Dialplan: sofia/internal/20001@10.3.3.10 Regex (FAIL) [outbound] destination_number($1) =~ /^(\d)(\d{6})$/ break=on-false Dialplan: sofia/internal/20001@10.3.3.10 parsing [default->pizza_demo] continue=false Dialplan: sofia/internal/20001@10.3.3.10 Regex (FAIL) [pizza_demo] destination_number($1) =~ /^(pizza|74992)$/ break=on-false Dialplan: sofia/internal/20001@10.3.3.10 parsing [default->local.example.com] continue=false Dialplan: sofia/internal/20001@10.3.3.10 Regex (FAIL) [local.example.com] ${toll_allow}() =~ /local/ break=on-false Dialplan: sofia/internal/20001@10.3.3.10 parsing [default->domestic.example.com] continue=false Dialplan: sofia/internal/20001@10.3.3.10 Regex (FAIL) [domestic.example.com] ${toll_allow}() =~ /domestic/ break=on-false Dialplan: sofia/internal/20001@10.3.3.10 parsing [default->international.example.com] continue=false Dialplan: sofia/internal/20001@10.3.3.10 Regex (FAIL) [international.example.com] ${toll_allow}() =~ /international/ break=on-false Dialplan: sofia/internal/20001@10.3.3.10 parsing [default->enum] continue=false Dialplan: sofia/internal/20001@10.3.3.10 Regex (PASS) [enum] ${module_exists(mod_enum)}(true) =~ /true/ break=on-false Dialplan: sofia/internal/20001@10.3.3.10 Regex (PASS) [enum] destination_number($1) =~ /^(.*)$/ break=on-false Dialplan: sofia/internal/20001@10.3.3.10 Action transfer($1 enum) I was expecting "Dialplan: sofia/internal/20001@10.3.3.10 Regex (FAIL) [Local_Call] destination_number($1) =~ /^(10\d\d\d)$/ break=on-false" to match the dialed number for which it would route the call to 10001. By the way 10001, 10002 and 20001, 20002 have sucessfully registered with their respective servers and can place calls internally to the switch. Also when I run tcpdump on Server "B" I'm getting 404 Not Found, which indicates either the endpoint is not registered or properly configured. Mike