[Freeswitch-users] Switch Gateway Routing
Pieter Eduard
pieter_eduard at biznetnetworks.com
Wed Sep 19 22:19:50 PDT 2007
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~
/_
_
/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freeswitch.org/pipermail/freeswitch-users/attachments/20070920/3df39a35/attachment-0002.html
More information about the FreeSWITCH-users
mailing list