[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