On Sat, May 7, 2011 at 11:04 AM, fieldpeak <
fieldpeak@gmail.com> wrote:
> Gurus,
>
> i met an issue for dial plan, it sounds easy but puzzled me a few days not
> fix it yet...i belive gurus here could help me...
>
> i want to remove the + of destination number before routing to PSTN GW, e.g.
> when i dial +9123, i would like FS remove +, and then route to the PSTN GW,
> below is the dial plan and log,
>
> See the log, FS did remove '+' of '+9123', but then when it checks the rule
> ‘9_to_GW’, it still checks '+9123' (I expect it is '9123'), and then failed.
>
> Thanks.
>
>
>
> Dial plan:
>
> <extension name="remove_plus_of_dst_num" continue="true">
>
> <condition field="destination_number" expression="^\+(\d+)$">
>
> <action application="set" data="effective_destination_number=$1"/>
>
> </condition>
>
> </extension>
>
> …...
>
> <extension name="9_to_GW" >
>
> <condition field="destination_number" expression="^(9\d+)$">
>
> <action application="bridge"
> data="sofia/internal/$
1@192.168.200.101"/>
>
> </condition>
>
> </extension>
>
>
>
> Log:
>
> freeswitch@mypc> 2011-05-07 22:48:05.717537 [DEBUG] sofia.c:6488 IP
> 192.168.200.201
>
> Approved by acl "
192.168.0.0/16[]". Access Granted.
>
> 2011-05-07 22:48:05.717537 [NOTICE] switch_channel.c:812 New Channel
> sofia/inter
>
> nal/+
4001@192.168.200.100 [92568c57-ff7b-4dbc-b322-a9babf893e62]
>
> 2011-05-07 22:48:05.719537 [DEBUG] sofia.c:4760 Channel
> sofia/internal/+4001@192
>
> .168.200.100 entering state [received][100]
>
> 2011-05-07 22:48:05.719537 [DEBUG] sofia.c:4771 Remote SDP:
>
> v=0
>
> o=AudiocodesGW 1062502113 1062501981 IN IP4 192.168.200.201
>
> s=Phone-Call
>
> c=IN IP4 192.168.200.201
>
> t=0 0
>
> m=audio 6060 RTP/AVP 8 0 96
>
> a=rtpmap:8 PCMA/8000
>
> a=rtpmap:0 PCMU/8000
>
> a=rtpmap:96 telephone-event/8000
>
> a=fmtp:96 0-15
>
> a=ptime:20
>
>
>
> 2011-05-07 22:48:05.719537 [DEBUG] sofia.c:4908
> (sofia/internal/+4001@192.168.20
>
> 0.100) State Change CS_NEW -> CS_INIT
>
> 2011-05-07 22:48:05.719537 [DEBUG] switch_core_session.c:1116 Send signal
> sofia/
>
> internal/+
4001@192.168.200.100 [BREAK]
>
> 2011-05-07 22:48:05.722537 [DEBUG] switch_core_state_machine.c:325
> (sofia/intern
>
> al/+
4001@192.168.200.100) Running State Change CS_INIT
>
> 2011-05-07 22:48:05.722537 [DEBUG] switch_core_state_machine.c:361
> (sofia/intern
>
> al/+
4001@192.168.200.100) State INIT
>
> 2011-05-07 22:48:05.722537 [DEBUG] mod_sofia.c:84
> sofia/internal/+4001@192.168.2
>
> 00.100 SOFIA INIT
>
> 2011-05-07 22:48:05.722537 [DEBUG] mod_sofia.c:124
> (sofia/internal/+4001@192.168
>
> .200.100) State Change CS_INIT -> CS_ROUTING
>
> 2011-05-07 22:48:05.722537 [DEBUG] switch_core_session.c:1116 Send signal
> sofia/
>
> internal/+
4001@192.168.200.100 [BREAK]
>
> 2011-05-07 22:48:05.722537 [DEBUG] switch_core_state_machine.c:361
> (sofia/intern
>
> al/+
4001@192.168.200.100) State INIT going to sleep
>
> 2011-05-07 22:48:05.722537 [DEBUG] switch_core_state_machine.c:325
> (sofia/intern
>
> al/+
4001@192.168.200.100) Running State Change CS_ROUTING
>
> 2011-05-07 22:48:05.722537 [DEBUG] switch_channel.c:1668
> (sofia/internal/+4001@1
>
> 92.168.200.100) Callstate Change DOWN -> RINGING
>
> 2011-05-07 22:48:05.722537 [DEBUG] switch_core_state_machine.c:364
> (sofia/intern
>
> al/+
4001@192.168.200.100) State ROUTING
>
> 2011-05-07 22:48:05.722537 [DEBUG] mod_sofia.c:147
> sofia/internal/+4001@192.168.
>
> 200.100 SOFIA ROUTING
>
> 2011-05-07 22:48:05.722537 [DEBUG] switch_core_state_machine.c:77
> sofia/internal
>
> /+
4001@192.168.200.100 Standard ROUTING
>
> 2011-05-07 22:48:05.722537 [INFO] mod_dialplan_xml.c:331 Processing +4001
> <+4001
>
>>->+9123 in context default
>
> Dialplan: sofia/internal/+
4001@192.168.200.100 parsing [default->unloop]
> continu
>
> e=false
>
> Dialplan: sofia/internal/+
4001@192.168.200.100 Regex (PASS) [unloop]
> ${unroll_lo
>
> ops}(true) =~ /^true$/ break=on-false
>
> Dialplan: sofia/internal/+
4001@192.168.200.100 Regex (FAIL) [unloop]
> ${sip_loope
>
> d_call}() =~ /^true$/ break=on-false
>
> Dialplan: sofia/internal/+
4001@192.168.200.100 parsing
> [default->remove_plus_of_
>
> dst_num] continue=true
>
> Dialplan: sofia/internal/+
4001@192.168.200.100 Regex (PASS)
> [remove_plus_of_dst_
>
> num] destination_number(+9123) =~ /^\+(\d+)$/ break=on-false
>
> Dialplan: sofia/internal/+
4001@192.168.200.100 Action
> set(destination_number=912
>
> 3)
>
> Dialplan: sofia/internal/+
4001@192.168.200.100 parsing
> [default->remove_plus_of_
>
> src_num] continue=true
>
> Dialplan: sofia/internal/+
4001@192.168.200.100 Regex (PASS)
> [remove_plus_of_src_
>
> num] caller_id_number(+4001) =~ /^\+(\d+)$/ break=on-false
>
> Dialplan: sofia/internal/+
4001@192.168.200.100 Action
> set(effective_caller_id_na
>
> me=4001)
>
> Dialplan: sofia/internal/+
4001@192.168.200.100 Action
> set(effective_caller_id_nu
>
> mber=4001)
>
> Dialplan: sofia/internal/+
4001@192.168.200.100 parsing
> [default->7_8_to_Lync] co
>
> ntinue=false
>
> Dialplan: sofia/internal/+
4001@192.168.200.100 Regex (FAIL) [7_8_to_Lync]
> destin
>
> ation_number(+9123) =~ /^([78]\d{3})$/ break=on-false
>
> Dialplan: sofia/internal/+
4001@192.168.200.100 parsing [default->9_to_GW]
> contin
>
> ue=false
>
> Dialplan: sofia/internal/+
4001@192.168.200.100 Regex (FAIL) [9_to_GW]
> destinatio
>
> n_number(+9123) =~ /^(9\d+)$/ break=on-false
>
> Dialplan: sofia/internal/+
4001@192.168.200.100 parsing [default->1_to_IPP]
> conti
>
> nue=false
>
> Dialplan: sofia/internal/+
4001@192.168.200.100 Regex (FAIL) [1_to_IPP]
> destinati
>
> on_number(+9123) =~ /^(1\d{3})$/ break=on-false
>
> Dialplan: sofia/internal/+
4001@192.168.200.100 parsing [default->DISA]
> continue=
>
> false
>
> Dialplan: sofia/internal/+
4001@192.168.200.100 Regex (FAIL) [DISA]
> destination_n
>
> umber(+9123) =~ /^\*(3472)$/ break=on-false
>
> Dialplan: sofia/internal/+
4001@192.168.200.100 parsing [default->Recordings]
> con
>
> tinue=false
>
> Dialplan: sofia/internal/+
4001@192.168.200.100 Regex (FAIL) [Recordings]
> destina
>
> tion_number(+9123) =~ /^\*(732673)$/ break=on-false
>
> 2011-05-07 22:48:05.727537 [DEBUG] switch_core_state_machine.c:119
> (sofia/intern
>
> al/+
4001@192.168.200.100) State Change CS_ROUTING -> CS_EXECUTE
>
> 2011-05-07 22:48:05.727537 [DEBUG] switch_core_session.c:1116 Send signal
> sofia/
>
> internal/+
4001@192.168.200.100 [BREAK]
>
> 2011-05-07 22:48:05.727537 [DEBUG] switch_core_state_machine.c:364
> (sofia/intern
>
> al/+
4001@192.168.200.100) State ROUTING going to sleep
>
> 2011-05-07 22:48:05.727537 [DEBUG] switch_core_state_machine.c:325
> (sofia/intern
>
> al/+
4001@192.168.200.100) Running State Change CS_EXECUTE
>
> 2011-05-07 22:48:05.727537 [DEBUG] switch_core_state_machine.c:371
> (sofia/intern
>
> al/+
4001@192.168.200.100) State EXECUTE
>
> 2011-05-07 22:48:05.727537 [DEBUG] mod_sofia.c:240
> sofia/internal/+4001@192.168.
>
> 200.100 SOFIA EXECUTE
>
> 2011-05-07 22:48:05.727537 [DEBUG] switch_core_state_machine.c:157
> sofia/interna
>
> l/+
4001@192.168.200.100 Standard EXECUTE
>
> EXECUTE sofia/internal/+
4001@192.168.200.100 set(destination_number=9123)
>
> 2011-05-07 22:48:05.728537 [DEBUG] mod_dptools.c:1060
> sofia/internal/+4001@192.1
>
> 68.200.100 SET [destination_number]=[9123]
>
> EXECUTE sofia/internal/+
4001@192.168.200.100
> set(effective_caller_id_name=4001)
>
> 2011-05-07 22:48:05.728537 [DEBUG] mod_dptools.c:1060
> sofia/internal/+4001@192.1
>
> 68.200.100 SET [effective_caller_id_name]=[4001]
>
> EXECUTE sofia/internal/+
4001@192.168.200.100
> set(effective_caller_id_number=4001
>
> )
>
> 2011-05-07 22:48:05.729537 [DEBUG] mod_dptools.c:1060
> sofia/internal/+4001@192.1
>
> 68.200.100 SET [effective_caller_id_number]=[4001]
>
> 2011-05-07 22:48:05.729537 [NOTICE] switch_core_state_machine.c:189
> sofia/intern
>
> al/+
4001@192.168.200.100 has executed the last dialplan instruction, hanging
> up.
>
>
>
> 2011-05-07 22:48:05.729537 [DEBUG] switch_channel.c:2563
> (sofia/internal/+4001@1
>
> 92.168.200.100) Callstate Change RINGING -> HANGUP
>
> 2011-05-07 22:48:05.729537 [NOTICE] switch_core_state_machine.c:191 Hangup
> sofia
>
> /internal/+
4001@192.168.200.100 [CS_EXECUTE] [NORMAL_CLEARING]
>
> 2011-05-07 22:48:05.730538 [DEBUG] switch_channel.c:2579 Send signal
> sofia/inter
>
> nal/+
4001@192.168.200.100 [KILL]
>
> 2011-05-07 22:48:05.730538 [DEBUG] switch_core_session.c:1116 Send signal
> sofia/
>
> internal/+
4001@192.168.200.100 [BREAK]
>
> 2011-05-07 22:48:05.730538 [DEBUG] switch_core_state_machine.c:371
> (sofia/intern
>
> al/+
4001@192.168.200.100) State EXECUTE going to sleep
>
> 2011-05-07 22:48:05.730538 [DEBUG] switch_core_state_machine.c:325
> (sofia/intern
>
> al/+
4001@192.168.200.100) Running State Change CS_HANGUP
>
> 2011-05-07 22:48:05.731538 [DEBUG] switch_core_state_machine.c:565
> (sofia/intern
>
> al/+
4001@192.168.200.100) State HANGUP
>
> 2011-05-07 22:48:05.732538 [DEBUG] mod_sofia.c:457 Channel
> sofia/internal/+4001@
>
> 192.168.200.100 hanging up, cause: NORMAL_CLEARING
>
> 2011-05-07 22:48:05.732538 [DEBUG] mod_sofia.c:519 Responding to INVITE
> with: 48
>
> 0
>
> 2011-05-07 22:48:05.732538 [DEBUG] switch_core_state_machine.c:46
> sofia/internal
>
> /+
4001@192.168.200.100 Standard HANGUP, cause: NORMAL_CLEARING
>
> 2011-05-07 22:48:05.732538 [DEBUG] switch_core_state_machine.c:565
> (sofia/intern
>
> al/+
4001@192.168.200.100) State HANGUP going to sleep
>
> 2011-05-07 22:48:05.732538 [DEBUG] switch_core_state_machine.c:356
> (sofia/intern
>
> al/+
4001@192.168.200.100) State Change CS_HANGUP -> CS_REPORTING
>
> 2011-05-07 22:48:05.732538 [DEBUG] switch_core_session.c:1116 Send signal
> sofia/
>
> internal/+
4001@192.168.200.100 [BREAK]
>
> 2011-05-07 22:48:05.732538 [DEBUG] switch_core_state_machine.c:325
> (sofia/intern
>
> al/+
4001@192.168.200.100) Running State Change CS_REPORTING
>
> 2011-05-07 22:48:05.732538 [DEBUG] switch_core_state_machine.c:625
> (sofia/intern
>
> al/+
4001@192.168.200.100) State REPORTING
>
> 2011-05-07 22:48:06.017554 [DEBUG] switch_core_state_machine.c:53
> sofia/internal
>
> /+
4001@192.168.200.100 Standard REPORTING, cause: NORMAL_CLEARING
>
> 2011-05-07 22:48:06.017554 [DEBUG] switch_core_state_machine.c:625
> (sofia/intern
>
> al/+
4001@192.168.200.100) State REPORTING going to sleep
>
> 2011-05-07 22:48:06.017554 [DEBUG] switch_core_state_machine.c:350
> (sofia/intern
>
> al/+
4001@192.168.200.100) State Change CS_REPORTING -> CS_DESTROY
>
> 2011-05-07 22:48:06.017554 [DEBUG] switch_core_session.c:1116 Send signal
> sofia/
>
> internal/+
4001@192.168.200.100 [BREAK]
>
> 2011-05-07 22:48:06.017554 [DEBUG] switch_core_session.c:1288 Session 2
> (sofia/i
>
> nternal/+
4001@192.168.200.100) Locked, Waiting on external entities
>
> 2011-05-07 22:48:06.017554 [NOTICE] switch_core_session.c:1306 Session 2
> (sofia/
>
> internal/+
4001@192.168.200.100) Ended
>
> 2011-05-07 22:48:06.017554 [NOTICE] switch_core_session.c:1308 Close Channel
> sof
>
> ia/internal/+
4001@192.168.200.100 [CS_DESTROY]
>
> 2011-05-07 22:48:06.018554 [DEBUG] switch_core_state_machine.c:454
> (sofia/intern
>
> al/+
4001@192.168.200.100) Callstate Change HANGUP -> DOWN
>
> 2011-05-07 22:48:06.018554 [DEBUG] switch_core_state_machine.c:457
> (sofia/intern
>
> al/+
4001@192.168.200.100) Running State Change CS_DESTROY
>
> 2011-05-07 22:48:06.018554 [DEBUG] switch_core_state_machine.c:467
> (sofia/intern
>
> al/+
4001@192.168.200.100) State DESTROY
>
> 2011-05-07 22:48:06.018554 [DEBUG] mod_sofia.c:362
> sofia/internal/+4001@192.168.
>
> 200.100 SOFIA DESTROY
>
> 2011-05-07 22:48:06.018554 [DEBUG] switch_core_state_machine.c:60
> sofia/internal
>
> /+
4001@192.168.200.100 Standard DESTROY
>
> 2011-05-07 22:48:06.018554 [DEBUG] switch_core_state_machine.c:467
> (sofia/intern
>
> al/+
4001@192.168.200.100) State DESTROY going to sleep
>