[Freeswitch-users] Switch Gateway Routing

Michael Jerris mike at jerris.com
Thu Sep 20 11:43:15 EDT 2007


sofia//777888888@*a.b.c.d*:5060

that "//" looks not right.  But would need to see the log above the snipet
you put in to see what is going on for sure.

On 9/20/07, Brian West <brian.west at mac.com> wrote:
>
> Not Acceptable Here would indicate aa codec isssue.  As
> would  INCOMPATIBLE_DESTINATION as the hangup cause.  Can you verify the
> codec configs on each end?
> /b
>
> On Sep 20, 2007, at 12:19 AM, Pieter Eduard wrote:
>
> Hi,
>
> I just installed Freeswitch and my intention to use fs to route calls
> between gateways but am still stuck with the proper configuration.
> The simple diagram is like this :
>
>
> *subscriber A------> SIP Server A ------>Freeswitch----->SIP Server
> B-----> subscriber B*
> voip prefix                 ip a.b.c.d                  ip 1.2.3.4
>    ip w.x.y.z            voip prefix
> 777888x
>                                              999111x
>
> I tried to call subscriber B from subscriber A but getting this error :
>
> 2007-09-20 10:40:24 [NOTICE] sofia.c:1171 sofia_handle_sip_i_state()
> Hangup sofia//777888888@*a.b.c.d*:5060 [CS_NEW] [INCOMPATIBLE_DESTINATION]
> 2007-09-20 10:40:24 [DEBUG] switch_channel.c:1076
> switch_channel_perform_hangup() Kill sofia//777888888@*a.b.c.d:*5060
> [KILL]
> 2007-09-20 10:40:24 [DEBUG] switch_core_session.c:638
> switch_core_session_signal_state_change() Kill sofia//777888888@*a.b.c.d*:5060
> [BREAK]
> 2007-09-20 10:40:24 [DEBUG] sofia.c:71 sofia_event_callback() event
> [nua_i_state] status [488][Not Acceptable Here] session: sofia//777888888@
> *a.b.c.d*:5060
> 2007-09-20 10:40:24 [DEBUG] sofia.c:1032 sofia_handle_sip_i_state()
> Channel sofia//777888888@*a.b.c.d:*5060 entering state [terminated]
> 2007-09-20 10:40:24 [DEBUG] switch_core_state_machine.c:347
> switch_core_session_run() (sofia//777888888@*a.b.c.d*:5060) State HANGUP
> 2007-09-20 10:40:24 [DEBUG] mod_sofia.c:217 sofia_on_hangup() Channel
> sofia//777888888@*a.b.c.d*:5060 hanging up, cause:
> INCOMPATIBLE_DESTINATION
> 2007-09-20 10:40:24 [DEBUG] switch_core_state_machine.c:45
> switch_core_standard_on_hangup() Standard HANGUP sofia//777888888@*a.b.c.d
> *:5060, cause: INCOMPATIBLE_DESTINATION
> 2007-09-20 10:40:24 [DEBUG] switch_core_session.c:697
> switch_core_session_thread() Session 1 (sofia//777888888@*a.b.c.d*:5060)
> Locked, Waiting on external entities
> 2007-09-20 10:40:24 [INFO] switch_core_session.c:703
> switch_core_session_thread() Session 1 (sofia//777888888@*a.b.c.d*:5060)
> Ended
> 2007-09-20 10:40:24 [NOTICE] switch_core_session.c:705
> switch_core_session_thread() Close Channel sofia//777888888@*a.b.c.d*:5060
> [CS_HANGUP]
>
>
> Which configuration file should i edit so i could pass the traffic from A
> to B through fs?
>
> Here's my config at fs :
>
> *default_context.xml
>
> *<context name="default">
>
> <!--outgoing extension-->
> <extension name="test1">
>       <condition field="destination_number"
> expression="^(9991111[0-3]{3})$">
>               <action application="set" data="call_timeout=30"/>
>               <action application="set" data="continue_on_fail=true"/>
>               <action application="set" data="hangup_after_bridge=true"/>
>               <action application="bridge" data="sofia/gateway/test1/$1@*
> w.x.y.z*"/>
>             </condition>
>            </extension>
>
> <extension name="test2">
>        <condition field="destination_number"
> expression="^(777888[0-9]{3})$">
>             <action application="bridge" data="sofia/$${sip_profile}/$1@*
> a.b.c.d*"/>
>             </condition>
>         </extension>
>
>
> </context>
>
>
> *freeswitch.xml*
>
> <?xml version="1.0"?>
> <document type="freeswitch/xml">
>
>   <!-- Preprocessor Variables
>        These are introduced when configuration strings must be consistent
> across modules.
>    -->
>   <!-- sip_profile
>        Must be a domain name if you are being a registry server; otherwise
>        can be any string.
>        used by: sofia.conf.xml enum.conf.xml default_context.xml
> directory.xml
>   -->
>         #set "sip_profile=*1.2.3.4*"
>   <!-- xmpp_client_profile and xmpp_server_profile
>        xmpp_client_profile can be any string.
>        xmpp_server_profile is appended to "dingaling_" to form the
> database name
>        containing the "subscriptions" table.
>        used by: dingaling.conf.xml enum.conf.xml
>   -->
>         #set "global_codec_prefs=PCMU at 20i,G729 at 20"
>   <!--#set "xmpp_client_profile=xmppc"-->
>   <!--#set "xmpp_server_profile=xmpps"-->
>   <!-- bind_server_ip
>        Can be an ip address, a dns name, or "auto".
>        This determines an ip address available on this host to bind.
>        If you are separating RTP and SIP traffic, you will want to have
>        use different addresses where this variable appears.
>        Used by: sofia.conf.xml dingaling.conf.xml
>   -->
>   <!--#set "bind_server_ip=auto"-->
>   <!-- external_rtp_ip
>        Used as the public IP address for SDP.
>        Can be an ip address or a string like "stun:stun.server.com"
>        If unspecified, the bind_server_ip value is used.
>        Used by: sofia.conf.xml dingaling.conf.xml
>   -->
>   <!--#set "external_rtp_ip=stun:stun.server.com"-->
>   <!-- server_name
>        A public ip address or DNS name that is used when advertising
> conference
>        presence or registering sip.
>        Used by: conference.conf.xml
>   -->
>   <!-- outbound_caller_id and outbound_caller_name
>        The caller ID telephone number we should use when calling out.
>        Used by: conference.conf.xml
>   -->
>   <!--#set "outbound_caller_name=FreeSWITCH"-->
>   <!--#set "outbound_caller_id=8777423583"-->
>
>   <section name="configuration" description="Various Configuration">
>     <!--#include "switch.conf.xml"-->
>     <!--#include "modules.conf.xml"-->
>
> * *   <!-- Order doesn't matter, but for clarity these are in same order
> as modules.conf.xml.
>          If they aren't loaded by modules.conf.xml, then they are ignored.
>     -->
>     <!-- Loggers -->
>     <!--#include "console.conf.xml"-->
>     <!--#include "syslog.conf.xml"-->
>
>     <!-- Multi-Faceted -->
>     <!--#include "enum.conf.xml"-->
>
>     <!-- XML Interfaces -->
>     <!--#include "xml_rpc.conf.xml"-->
>     <!--#include "xml_cdr.conf.xml"-->
>     <!--#include "xml_curl.conf.xml"-->
>     <!-- none for mod_xml_cdr -->
>
>     <!-- Event Handlers -->
>     <!--#include "cdr.conf.xml"-->
>     <!--#include "event_multicast.conf.xml"-->
>     <!--#include "event_socket.conf.xml"-->
>     <!--#include "xmpp_event.conf.xml"-->
>     <!--#include "zeroconf.conf.xml"-->
>
>     <!-- Directory Interfaces -->
>     <!-- none for mod_ldap; dialplan_directory.conf.xml has ldap
> connection info -->
>
>     <!-- Endpoints -->
>     <!--#include "dingaling.conf.xml"-->
>     <!--#include "iax.conf.xml"-->
>     <!--#include "portaudio.conf.xml"-->
>     <!--#include "alsa.conf.xml"-->
>     <!--#include "sofia.conf.xml"-->
>     <!--#include "wanpipe.conf.xml"-->
>     <!--#include "woomera.conf.xml"-->
>
>     <!-- Applications -->
>     <!-- none for mod_bridgecall, mod_commands, mod_echo, mod_park,
> mod_playback -->
>     <!--#include "conference.conf.xml"-->
>     <!-- ivr.conf is used by mod_dptools -->
>     <!--#include "ivr.conf.xml"-->
>
>     <!-- Dialplan Interfaces -->
>     <!--#include "dialplan_directory.conf.xml"-->
>     <!-- mod_dialplan_xml is configured in the separate "dialplan"
> section. -->
>
>     <!-- Codec Interfaces -->
>     <!-- no configuration needed -->
>     <!-- File Format Interfaces -->
>     <!-- no configuration needed -->
>     <!-- Timers -->
>     <!-- no configuration needed -->
>
>     <!-- Languages -->
>     <!--#include "spidermonkey.conf.xml"-->
>     <!-- none for mod_perl -->
>
>     <!-- ASR /TTS -->
>     <!-- none for mod_cepstral -->
>     <!--#include "rss.conf.xml"-->
>     <!--#include "mod_openmrcp.conf.xml"-->
>
>     <!-- Say -->
>     <!-- none for mod_say_en -->
>     <!--#include "mod_cdr.conf.xml"-->
>     <!--#include "mod_local_stream.conf.xml"-->
>
> </section>
>   <section name="dialplan" description="Regex/XML Dialplan">
>     <!--#include "default_context.xml"-->
>   </section>
>
>   <!-- mod_dingaling is reliant on the vcard data in the "directory"
> section. -->
>   <!-- mod_sofia is reliant on the user data for authorization -->
>   <section name="directory" description="User Directory">
>     <!--#include "directory.xml"-->
>   </section>
>
>   <!-- phrases section (under development still) -->
>   <section name="phrases" description="Speech Phrase Management">
>     <macros>
>       <language name="en" sound_path="/snds" tts_engine="cepstral"
> tts_voice="david">
>         <!--#include "lang_en.xml"-->
>       </language>
>       <language name="fr" sound_path="/var/sounds/lang/fr/jean"
> tts_engine="cepstral" tts_voice="jean-pierre">
>         <!--#include "lang_fr.xml"-->
>       </language>
>     </macros>
>   </section>
>
> </document>
>
>
> *Sofia.conf.xml*
>
> <configuration name="sofia.conf" description="sofia Endpoint">
>   <profiles>
>     <profile name="test1">
>       <!--aliases are other names that will work as a valid profile name
> for this profile-->
>       <aliases>
>         <alias name="test1"/>
>       </aliases>
>       <!-- Outbound Registrations -->
>       <gateways>
>         <gateway name="test1">
>           <!--/// account username *required* ///-->
>           <param name="username" value="*myusername B*"/>
>           <!--/// auth realm: *optional* same as gateway name, if blank
> ///-->
>           <param name="realm" value="*1.2.3.4*"/>
>           <!--/// domain to use in from: *optional* same as  realm, if
> blank ///-->
>           <!--<param name="from-domain" value="asterlink.com"/>-->
>           <!--/// account password *required* ///-->
>           <param name="password" value="xxxx"/>
>           <!--/// replace the INVITE from user with the channel's
> caller-id ///-->
>           <!--<param name="caller-id-in-from" value="false"/>-->
>           <!--/// extension for inbound calls: *optional* same as
> username, if blank ///-->
>           <param name="extension" value="*myusername B*"/>
>           <!--/// proxy host: *optional* same as realm, if blank ///-->
>           <param name="proxy" value="*1.2.3.4*"/>
>           <!--/// expire in seconds: *optional* 3600, if blank ///-->
>           <param name="expire-seconds" value="60"/>
>           <!--/// do not register ///-->
>           <param name="register" value="true"/>
>           <!--How many seconds before a retry when a failure or timeout
> occurs -->
>           <param name="retry_seconds" value="30"/>
>           <!--Use the callerid of an inbound call in the from field on
> outbound calls via this gateway -->
>           <param name="disable-transcoding" value="true"/>
>           <param name="caller-id-in-from" value="false"/>
>         </gateway>
>       </gateways>
>
>       <domains>
>         <!-- indicator to parse the directory for domains with
> parse="true" to get gateways-->
>         <!--<domain name="$${domain}" parse="true"/>-->
>       </domains>
>
>       <settings>
>         <param name="debug" value="1"/>
>         <param name="rfc2833-pt" value="101"/>
>         <param name="sip-port" value="5060"/>
>         <param name="dialplan" value="XML"/>
>         <param name="dtmf-duration" value="100"/>
>         <param name="codec-prefs" value="$${global_codec_prefs}"/>
>         <param name="codec-ms" value="20"/>
>         <param name="use-rtp-timer" value="true"/>
>         <param name="rtp-timer-name" value="soft"/>
>         <param name="rtp-ip" value="$${bind_server_ip}"/>
>         <param name="sip-ip" value="$${bind_server_ip}"/>
>         <!--set to 'greedy' if you want your codec list to take precedence
> -->
>         <param name="inbound-codec-negotiation" value="generous"/>
>         <!-- if you want to send any special bind params of your own -->
>         <!--<param name="bind-params" value="transport=udp"/>-->
>
>         <!--If you don't want to pass through timestampes from 1 RTP call
> to another (on a per call basis with rtp_rewrite_timestamps chanvar)-->
>         <!--<param name="rtp-rewrite-timestampes" value="true"/>-->
>
>         <!--If you have ODBC support and a working dsn you can use it
> instead of SQLite-->
>         <!--<param name="odbc-dsn" value="dsn:user:pass"/>-->
>
>         <!--Uncomment to set all inbound calls to no media mode-->
>         <!--<param name="inbound-no-media" value="true"/>-->
>
>         <!--Uncomment to let calls hit the dialplan *before* you decide if
> the codec is ok-->
>         <!--<param name="inbound-late-negotiation" value="true"/>-->
>
>         <!-- this lets anything register -->
>         <!--  comment the next line and uncomment one or both of the other
> 2 lines for call authentication -->
>         <param name="accept-blind-reg" value="true"/>
>
>         <!--TTL for nonce in sip auth-->
>         <param name="nonce-ttl" value="60"/>
>         <!--Uncomment if you want to force the outbound leg of a bridge to
> only offer the codec
>             that the originator is using-->
>         <!--<param name="disable-transcoding" value="true"/>-->
>         <!--<param name="auth-calls" value="true"/>-->
>         <!-- on authed calls, authenticate *all* the packets not just
> invite -->
>         <!--<param name="auth-all-packets" value="true"/>-->
>
>         <!-- <param name="ext-rtp-ip" value="$${external_rtp_ip}"/>-->
>
>         <!-- <param name="ext-sip-ip" value="100.101.102.103"/> -->
>         <!-- VAD choose one (out is a good choice); -->
>         <!-- <param name="vad" value="in"/> -->
>         <!-- <param name="vad" value="out"/> -->
> *
> *      </settings>
>     </profile>
> <profiles>
>
> </profiles>
>     <profile name="test2">
>       <!--aliases are other names that will work as a valid profile name
> for this profile-->
>       <aliases>
>         <alias name="test2"/>
>       </aliases>
>         <gateways>
>           <gateway name="test2">
>           <!--/// account username *required*///-->
>           <param name="username" value="*username A*"/>
>           <!--/// auth realm: *optional* same as gateway name, if blank
> ///-->
>           <param name="realm" value="*a.b.c.d*"/>
>           <!--/// domain to use in from: *optional* same as  realm, if
> blank ///-->
>           <!--<param name="from-domain" value="asterlink.com"/>-->
>           <!--/// account password *required* ///-->
>           <param name="password" value="*password*"/>
>           <!--/// replace the INVITE from user with the channel's
> caller-id ///-->
>           <param name="caller-id-in-from" value="false"/>
>           <!--/// extension for inbound calls: *optional* same as
> username, if blank ///-->
>           <!--<param name="extension" value="cluecon"/>-->
>           <!--/// proxy host: *optional* same as realm, if blank ///-->
>           <param name="proxy" value="*a.b.c.d*"/>
>           <!--/// expire in seconds: *optional* 3600, if blank ///-->
>           <param name="expire-seconds" value="60"/>
>           <!--/// do not register ///-->
>           <param name="register" value="true"/>
>           <!--How many seconds before a retry when a failure or timeout
> occurs -->
>           <!--<param name="retry_seconds" value="30"/>-->
>           <!--Use the callerid of an inbound call in the from field on
> outbound calls via this gateway -->
>           -<param name="caller-id-in-from" value="false"/>
>           <param name="disable-transcoding" value="true"/>
>         </gateway>
>       </gateways>
>
>  <settings>
>         <param name="debug" value="1"/>
>         <param name="rfc2833-pt" value="101"/>
>         <param name="sip-port" value="5061"/>
>         <param name="dialplan" value="XML"/>
>         <param name="dtmf-duration" value="100"/>
>         <param name="codec-prefs" value="$${global_codec_prefs}"/>
>         <param name="codec-ms" value="20"/>
>         <param name="use-rtp-timer" value="true"/>
>         <param name="rtp-timer-name" value="soft"/>
>         <param name="rtp-ip" value="$${bind_server_ip}"/>
>         <param name="sip-ip" value="$${bind_server_ip}"/>
>         <!--set to 'greedy' if you want your codec list to take precedence
> -->
>         <param name="inbound-codec-negotiation" value="generous"/>
>         <!-- if you want to send any special bind params of your own -->
>         <!--<param name="bind-params" value="transport=udp"/>-->
>
>         <!--If you don't want to pass through timestampes from 1 RTP call
> to another (on a per call basis with rtp_rewrite_timestamps chanvar)-->
>         <!--<param name="rtp-rewrite-timestampes" value="true"/>-->
>
>         <!--If you have ODBC support and a working dsn you can use it
> instead of SQLite-->
>         <!--<param name="odbc-dsn" value="dsn:user:pass"/>-->
>
>         <!--Uncomment to set all inbound calls to no media mode-->
>         <!--<param name="inbound-no-media" value="true"/>-->
>
>         <!--Uncomment to let calls hit the dialplan *before* you decide if
> the codec is ok-->
>         <!--<param name="inbound-late-negotiation" value="true"/>-->
>
>         <!-- this lets anything register -->
>         <!--  comment the next line and uncomment one or both of the other
> 2 lines for call authentication -->
>         <param name="accept-blind-reg" value="true"/>
>
>         <!--TTL for nonce in sip auth-->
>         <param name="nonce-ttl" value="60"/>
>         <!--Uncomment if you want to force the outbound leg of a bridge to
> only offer the codec
>             that the originator is using-->
>         <!--<param name="disable-transcoding" value="true"/>-->
>         <!--<param name="auth-calls" value="true"/>-->
>         <!-- on authed calls, authenticate *all* the packets not just
> invite -->
>         <!--<param name="auth-all-packets" value="true"/>-->
>
>         <!-- <param name="ext-rtp-ip" value="$${external_rtp_ip}"/>-->
>
>         <!-- <param name="ext-sip-ip" value="100.101.102.103"/> -->
>         <!-- VAD choose one (out is a good choice); -->
>         <!-- <param name="vad" value="in"/> -->
>         <!-- <param name="vad" value="out"/> -->
>         <!-- <param name="vad" value="both"/> -->
>         <!-- <param name="ext-sip-ip" value="100.101.102.103"/> -->
>         <!-- VAD choose one (out is a good choice); -->
>         <!-- <param name="vad" value="in"/> -->
>         <!-- <param name="vad" value="out"/> -->
>         <!-- <param name="vad" value="both"/> -->
>         <!--<param name="alias" value="sip:10.0.1.251:5555"/>-->
>       </settings>
>     </profile>
>   </profiles>
> </configuration>
>
>
>  appreciate it if anybody could give me clue
>
> Thx,
>
> ~pieter~
>
>
>
> *
>
>
>
> *
> _______________________________________________
> Freeswitch-users mailing list
> Freeswitch-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
>
>
>
> _______________________________________________
> Freeswitch-users mailing list
> Freeswitch-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20070920/d6a09c5e/attachment-0001.html 


More information about the Freeswitch-users mailing list