[Freeswitch-dev] Dialplan Defaults

Christian Jensen christian at jensenbox.com
Thu Sep 18 06:24:24 EDT 2008


Hi everyone,

I am in the process of doing something very straightforward - hooking up a
DID from Link2Voip into my FS instance (built from SVN Curent on Debian)

In an effort to only change as little as possible to get this baby to
respond to a phone call, I have simply added my provider into the
/conf/sip_profiles/external and also added in the extension file into
/conf/dialplan/extensions

I am able to get the system to Register and I am also able to get an
incoming call - however that is where the fun stops.

I hit F8 on my console and this is what I got:

2008-09-18 02:11:38 [INFO] mod_dialplan_xml.c:228 dialplan_hunt() Processing
6044880583->18665780244 in context public 2008-09-18 02:11:38 [DEBUG]
mod_dialplan_xml.c:113 parse_exten() test conditions ${unroll_loops}(true)
=~ /^true$/
2008-09-18 02:11:38 [DEBUG] mod_dialplan_xml.c:113 parse_exten() test
conditions ${sip_looped_call}() =~ /^true$/
2008-09-18 02:11:38 [DEBUG] mod_dialplan_xml.c:115 parse_exten() Regex
mismatch
2008-09-18 02:11:38 [DEBUG] mod_dialplan_xml.c:113 parse_exten() test
conditions destination_number(18665780244) =~ /^(10[01][0-9])$/
2008-09-18 02:11:38 [DEBUG] mod_dialplan_xml.c:115 parse_exten() Regex
mismatch
2008-09-18 02:11:38 [DEBUG] mod_dialplan_xml.c:113 parse_exten() test
conditions destination_number(18665780244) =~ /^(5551212)$/
2008-09-18 02:11:38 [DEBUG] mod_dialplan_xml.c:115 parse_exten() Regex
mismatch
2008-09-18 02:11:38 [INFO] switch_core_state_machine.c:114
switch_core_standard_on_routing() No Route, Aborting
 I *think* I understand what is going on here - but I *disagree* with
defaults.

For most users, I would expect them to do exactly what I just did - try to
change as little as possble and only add files as needed.

So finding that the initial root of the dialplan matching happens within
public.xml, I attempted to see if there was a better regex match (better
than the 5551212 :) and tried ^\d{10,15}$ - basically any number between 10
and 15 digits, good for most of the planet generically. I got no matches, so
I though maybe the syntax was strange and went for something simpler -
^[0-9]{10,15}$ - still no matches. Then I brute forced it - ^(18665780244)$
- got a match! yay! - Fun stops again :(

Just to be sure my custom extension matcher in the /conf/dialplan/extensions
did not interfere with anything, I renamed it to get it from loading.

here is the other fun stopper:

My default context starts to be processed and here is the end of it....

2008-09-18 02:52:29 [DEBUG] mod_dialplan_xml.c:113 parse_exten() test
conditions destination_number(18665780244) =~ /^9997$/ 2008-09-18 02:52:29
[DEBUG] mod_dialplan_xml.c:115 parse_exten() Regex mismatch
2008-09-18 02:52:29 [DEBUG] mod_dialplan_xml.c:113 parse_exten() test
conditions destination_number(18665780244) =~ /^9998$/
2008-09-18 02:52:29 [DEBUG] mod_dialplan_xml.c:115 parse_exten() Regex
mismatch
2008-09-18 02:52:29 [DEBUG] mod_dialplan_xml.c:113 parse_exten() test
conditions destination_number(18665780244) =~ /^9999$/
2008-09-18 02:52:29 [DEBUG] mod_dialplan_xml.c:115 parse_exten() Regex
mismatch
2008-09-18 02:52:29 [DEBUG] mod_dialplan_xml.c:113 parse_exten() test
conditions destination_number(18665780244) =~ /^(pizza|74992)$/
2008-09-18 02:52:29 [DEBUG] mod_dialplan_xml.c:115 parse_exten() Regex
mismatch
2008-09-18 02:52:29 [DEBUG] mod_dialplan_xml.c:113 parse_exten() test
conditions ${module_exists(mod_enum)}(true) =~ /true/
2008-09-18 02:52:29 [DEBUG] mod_dialplan_xml.c:113 parse_exten() test
conditions destination_number(18665780244) =~ /^(.*)$/
2008-09-18 02:52:29 [DEBUG] switch_core_state_machine.c:97
switch_core_standard_on_routing()
sofia/external/6045151148 at 66.51.127.163State Change CS_ROUTING ->
CS_EXECUTE
2008-09-18 02:52:29 [DEBUG] switch_core_session.c:727
switch_core_session_signal_state_change() Kill
sofia/external/6045151148 at 66.51.127.163 [BREAK]
2008-09-18 02:52:29 [DEBUG] switch_core_state_machine.c:420
switch_core_session_run() (sofia/external/6045151148 at 66.51.127.163) State
ROUTING going to sleep
2008-09-18 02:52:29 [DEBUG] switch_core_state_machine.c:365
switch_core_session_run() sofia/external/6045151148 at 66.51.127.163 Running
State Change CS_EXECUTE
2008-09-18 02:52:29 [DEBUG] switch_core_state_machine.c:430
switch_core_session_run() (sofia/external/6045151148 at 66.51.127.163) State
EXECUTE
2008-09-18 02:52:29 [DEBUG] mod_sofia.c:156 sofia_on_execute()
sofia/external/6045151148 at 66.51.127.163 SOFIA EXECUTE
2008-09-18 02:52:29 [DEBUG] switch_core_state_machine.c:129
switch_core_standard_on_execute() Standard EXECUTE
2008-09-18 02:52:29 [DEBUG] switch_core_state_machine.c:140
switch_core_standard_on_execute()
sofia/external/6045151148 at 66.51.127.163Execute
set(use_profile=${cond(${acl(${network_addr} rfc1918)} == true ? nat
: default)})
2008-09-18 02:52:29 [DEBUG] switch_core_session.c:1059
switch_core_session_execute_application()
sofia/external/6045151148 at 66.51.127.163 Expanded String
set(use_profile=default)
2008-09-18 02:52:29 [DEBUG] mod_dptools.c:703 set_function() SET
[use_profile]=[default]
2008-09-18 02:52:29 [DEBUG] switch_core_state_machine.c:140
switch_core_standard_on_execute()
sofia/external/6045151148 at 66.51.127.163Execute set_user(
default@${domain <default@$%7Bdomain>})
2008-09-18 02:52:29 [DEBUG] switch_core_session.c:1059
switch_core_session_execute_application()
sofia/external/6045151148 at 66.51.127.163 Expanded String set_user(
default at 192.168.1.66)
2008-09-18 02:52:29 [DEBUG] switch_core_state_machine.c:140
switch_core_standard_on_execute()
sofia/external/6045151148 at 66.51.127.163Execute
db(insert/spymap/${caller_id_number}/${uuid})
2008-09-18 02:52:29 [DEBUG] switch_core_session.c:1059
switch_core_session_execute_application()
sofia/external/6045151148 at 66.51.127.163 Expanded String
db(insert/spymap/6045151148/81684762-8567-11dd-967a-a76d8ceadf4f)
2008-09-18 02:52:29 [DEBUG] sofia.c:332 sofia_event_callback() nua_r_cancel:
unknown event 32: 200 canceling
2008-09-18 02:52:29 [DEBUG] sofia.c:200 sofia_event_callback() event
[nua_r_invite] status [500][Server error occurred (1/SL)] session: n/a
2008-09-18 02:52:29 [DEBUG] sofia.c:200 sofia_event_callback() event
[nua_i_state] status [487][Request Terminated] session:
sofia/external/6045151148 at 66.51.127.163
2008-09-18 02:52:29 [DEBUG] sofia.c:2183 sofia_handle_sip_i_state() Channel
sofia/external/6045151148 at 66.51.127.163 entering state [terminated]
2008-09-18 02:52:29 [NOTICE] sofia.c:2611 sofia_handle_sip_i_state() Hangup
sofia/external/6045151148 at 66.51.127.163 [CS_EXECUTE] [ORIGINATOR_CANCEL]
2008-09-18 02:52:29 [DEBUG] switch_channel.c:1381
switch_channel_perform_hangup() Kill
sofia/external/6045151148 at 66.51.127.163[KILL]
2008-09-18 02:52:29 [DEBUG] switch_core_session.c:727
switch_core_session_signal_state_change() Kill
sofia/external/6045151148 at 66.51.127.163 [BREAK]
2008-09-18 02:52:29 [NOTICE] switch_ivr_originate.c:1321
switch_ivr_originate() Hangup
sofia/internal/18665780244 at vgw1.link2voip.com[CS_CONSUME_MEDIA]
[ORIGINATOR_CANCEL]
2008-09-18 02:52:29 [DEBUG] switch_channel.c:1381
switch_channel_perform_hangup() Kill
sofia/internal/18665780244 at vgw1.link2voip.com [KILL]
2008-09-18 02:52:29 [DEBUG] switch_core_session.c:727
switch_core_session_signal_state_change() Kill
sofia/internal/18665780244 at vgw1.link2voip.com [BREAK]
2008-09-18 02:52:29 [DEBUG] switch_ivr_originate.c:1444
switch_ivr_originate() Originate Cancelled by originator termination Cause:
487 [ORIGINATOR_CANCEL]
2008-09-18 02:52:29 [INFO] mod_dptools.c:1814 audio_bridge_function()
Originate Failed.  Cause: ORIGINATOR_CANCEL
 Notice the ultra generic destination number matcher getting matched? At
this point it seems there is some sort of infinite loop that would keep
going until I hung up the phone. I hunt down where the matcher is getting
matched and find that it is in the same folder as my custom matcher inside
99999_enum.xml

So at this point, I go ahead and add back in my custom extension file - I
get the same result - what the hell? why is my matcher not getting fired? -
because its name is "link2voip.xml" which comes AFTER 99999:

-rw-r--r-- 1 root root 373 2008-09-18 01:27 00_pizza_demo.xml -rw-r--r-- 1
root root 266 2008-09-18 01:27 99999_enum.xml
-rw-r--r-- 1 root root 177 2008-09-18 03:01 link2voip.xml

I then rename it so it comes up sooner:

-rw-r--r-- 1 root root 177 2008-09-18 03:01 00_link2voip.xml -rw-r--r-- 1
root root 373 2008-09-18 01:27 00_pizza_demo.xml
-rw-r--r-- 1 root root 266 2008-09-18 01:27 99999_enum.xml
server-06:/usr/local/freeswitch/conf/dialplan/extensions#

Tada! I get my wish and I can now route to where I want to! Now if I can
only get the voice mail app to think I am actually saying something - I
think I need to route to the echo app to see what I am saying :)

2008-09-18 03:08:28 [DEBUG] mod_dialplan_xml.c:113 parse_exten() test
conditions destination_number(18665780244) =~ /^9996$/ 2008-09-18 03:08:28
[DEBUG] mod_dialplan_xml.c:115 parse_exten() Regex mismatch
2008-09-18 03:08:28 [DEBUG] mod_dialplan_xml.c:113 parse_exten() test
conditions destination_number(18665780244) =~ /^9997$/
2008-09-18 03:08:28 [DEBUG] mod_dialplan_xml.c:115 parse_exten() Regex
mismatch
2008-09-18 03:08:28 [DEBUG] mod_dialplan_xml.c:113 parse_exten() test
conditions destination_number(18665780244) =~ /^9998$/
2008-09-18 03:08:28 [DEBUG] mod_dialplan_xml.c:115 parse_exten() Regex
mismatch
2008-09-18 03:08:28 [DEBUG] mod_dialplan_xml.c:113 parse_exten() test
conditions destination_number(18665780244) =~ /^9999$/
2008-09-18 03:08:28 [DEBUG] mod_dialplan_xml.c:115 parse_exten() Regex
mismatch
2008-09-18 03:08:28 [DEBUG] mod_dialplan_xml.c:113 parse_exten() test
conditions destination_number(18665780244) =~ /18665780244/
2008-09-18 03:08:28 [DEBUG] switch_core_state_machine.c:97
switch_core_standard_on_routing()
sofia/external/6045151148 at 66.51.127.163State Change CS_ROUTING ->
CS_EXECUTE
2008-09-18 03:08:28 [DEBUG] switch_core_session.c:727
switch_core_session_signal_state_change() Kill
sofia/external/6045151148 at 66.51.127.163 [BREAK]
2008-09-18 03:08:28 [DEBUG] switch_core_state_machine.c:420
switch_core_session_run() (sofia/external/6045151148 at 66.51.127.163) State
ROUTING going to sleep
2008-09-18 03:08:28 [DEBUG] switch_core_state_machine.c:365
switch_core_session_run() sofia/external/6045151148 at 66.51.127.163 Running
State Change CS_EXECUTE
2008-09-18 03:08:28 [DEBUG] switch_core_state_machine.c:430
switch_core_session_run() (sofia/external/6045151148 at 66.51.127.163) State
EXECUTE
2008-09-18 03:08:28 [DEBUG] mod_sofia.c:156 sofia_on_execute()
sofia/external/6045151148 at 66.51.127.163 SOFIA EXECUTE
2008-09-18 03:08:28 [DEBUG] switch_core_state_machine.c:129
switch_core_standard_on_execute() Standard EXECUTE
2008-09-18 03:08:28 [DEBUG] switch_core_state_machine.c:140
switch_core_standard_on_execute()
sofia/external/6045151148 at 66.51.127.163Execute
set(use_profile=${cond(${acl(${network_addr} rfc1918)} == true ? nat
: default)})
2008-09-18 03:08:28 [DEBUG] switch_core_session.c:1059
switch_core_session_execute_application()
sofia/external/6045151148 at 66.51.127.163 Expanded String
set(use_profile=default)
2008-09-18 03:08:28 [DEBUG] mod_dptools.c:703 set_function() SET
[use_profile]=[default]
2008-09-18 03:08:28 [DEBUG] switch_core_state_machine.c:140
switch_core_standard_on_execute()
sofia/external/6045151148 at 66.51.127.163Execute set_user(
default@${domain <default@$%7Bdomain>})
2008-09-18 03:08:28 [DEBUG] switch_core_session.c:1059
switch_core_session_execute_application()
sofia/external/6045151148 at 66.51.127.163 Expanded String set_user(
default at 192.168.1.66)
2008-09-18 03:08:28 [DEBUG] switch_core_state_machine.c:140
switch_core_standard_on_execute()
sofia/external/6045151148 at 66.51.127.163Execute
db(insert/spymap/${caller_id_number}/${uuid})
2008-09-18 03:08:28 [DEBUG] switch_core_session.c:1059
switch_core_session_execute_application()
sofia/external/6045151148 at 66.51.127.163 Expanded String
db(insert/spymap/6045151148/bd8aaddc-8569-11dd-bca0-bfa449b5017d)
2008-09-18 03:08:28 [DEBUG] switch_core_state_machine.c:140
switch_core_standard_on_execute()
sofia/external/6045151148 at 66.51.127.163Execute
db(insert/last_dial/${caller_id_number}/${destination_number})
2008-09-18 03:08:28 [DEBUG] switch_core_session.c:1059
switch_core_session_execute_application()
sofia/external/6045151148 at 66.51.127.163 Expanded String
db(insert/last_dial/6045151148/18665780244)
2008-09-18 03:08:29 [DEBUG] switch_core_state_machine.c:140
switch_core_standard_on_execute()
sofia/external/6045151148 at 66.51.127.163Execute
db(insert/last_dial/global/${uuid})
2008-09-18 03:08:29 [DEBUG] switch_core_session.c:1059
switch_core_session_execute_application()
sofia/external/6045151148 at 66.51.127.163 Expanded String
db(insert/last_dial/global/bd8aaddc-8569-11dd-bca0-bfa449b5017d)
2008-09-18 03:08:29 [DEBUG] switch_core_state_machine.c:140
switch_core_standard_on_execute()
sofia/external/6045151148 at 66.51.127.163Execute transfer(1001 XML
default)
2008-09-18 03:08:29 [DEBUG] switch_ivr.c:1092 switch_ivr_session_transfer()
sofia/external/6045151148 at 66.51.127.163 State Change CS_EXECUTE ->
CS_ROUTING
2008-09-18 03:08:29 [DEBUG] switch_core_session.c:727
switch_core_session_signal_state_change() Kill
sofia/external/6045151148 at 66.51.127.163 [BREAK]
2008-09-18 03:08:29 [DEBUG] switch_core_session.c:435
switch_core_session_receive_message() Kill
sofia/external/6045151148 at 66.51.127.163 [BREAK]
2008-09-18 03:08:29 [NOTICE] switch_ivr.c:1098 switch_ivr_session_transfer()
Transfer sofia/external/6045151148 at 66.51.127.163 to XML[1001 at default]
2008-09-18 03:08:29 [DEBUG] switch_core_state_machine.c:430
switch_core_session_run() (sofia/external/6045151148 at 66.51.127.163) State
EXECUTE going to sleep
2008-09-18 03:08:29 [DEBUG] switch_core_state_machine.c:365
switch_core_session_run() sofia/external/6045151148 at 66.51.127.163 Running
State Change CS_ROUTING
2008-09-18 03:08:29 [DEBUG] switch_core_state_machine.c:420
switch_core_session_run() (sofia/external/6045151148 at 66.51.127.163) State
ROUTING
2008-09-18 03:08:29 [DEBUG] mod_sofia.c:119 sofia_on_routing()
sofia/external/6045151148 at 66.51.127.163 SOFIA ROUTING
2008-09-18 03:08:29 [DEBUG] switch_core_state_machine.c:64
switch_core_standard_on_routing() Standard ROUTING
sofia/external/6045151148 at 66.51.127.163
2008-09-18 03:08:29 [INFO] mod_dialplan_xml.c:228 dialplan_hunt() Processing
6045151148->1001 in context default

So as a Recap, here is what I would like to have changed if possible:

   1. A better regex for the default DID install
   2. Fix the regex on the enum extension OR remove it OR Better
   documentation surrounding the name of a file for custom extensions
   3. It would be awesome to see the dialplan hunt debugs indicate the name
   of the extension of the match it is currently looking at, for example
      - 2008-09-18 03:08:28 [DEBUG] mod_dialplan_xml.c:113 parse_exten()
      test conditions destination_number(18665780244) =~ /^9998$/
      - would become:
      - 2008-09-18 03:08:28 [DEBUG] mod_dialplan_xml.c:113 parse_exten() *
      {tone_stream}* test conditions destination_number(18665780244) =~
      /^9998$/
   4. Fix the infinite loop on the enum extension

Thanks for listening!
Christian

P.S. I originally tried this out on Windows and instead of my destination
number getting set correctly, the destination number kept coming back as the
username I used to log in with. Is this a known issue or shall I debug?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-dev/attachments/20080918/3e342b31/attachment-0001.html 


More information about the Freeswitch-dev mailing list