[Freeswitch-users] Switch Gateway Routing
Brian West
brian.west at mac.com
Thu Sep 20 11:20:12 EDT 2007
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 at 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 at 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 at 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 at a.b.c.d:5060
> 2007-09-20 10:40:24 [DEBUG] sofia.c:1032 sofia_handle_sip_i_state()
> Channel sofia//777888888 at 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 at a.b.c.d:5060) State HANGUP
> 2007-09-20 10:40:24 [DEBUG] mod_sofia.c:217 sofia_on_hangup()
> Channel sofia//777888888 at 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 at 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 at 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 at 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 at 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 at 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 at 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20070920/b18d692e/attachment-0001.html
More information about the Freeswitch-users
mailing list