Learn FreeSWITCH part 7 How to add SIP Trunk ( Gateway) - Omid-Mohajerani/freeswitch GitHub Wiki
PowerPoint: https://github.com/Omid-Mohajerani/freeswitch/blob/main/Slides/Freeswitch_training_part7_gateways.pptx
Video on Youtube: https://www.youtube.com/watch?v=JaLZQy-r5SE
vim /etc/freeswitch/sip_profiles/omid.xml
<profile name="omid">
<aliases></aliases>
<gateways>
<X-PRE-PROCESS cmd="include" data="gateways/*.xml"/>
</gateways>
<domains>
<domain name="all" alias="true" parse="false"/>
</domains>
<settings>
<param name="sip-ip" value="139.59.210.202"/>
<param name="rtp-ip" value="139.59.210.202"/>
<param name="sip-port" value="5070"/>
<param name="context" value="public"/>
<param name="auth-calls" value="true"/>
<param name="apply-inbound-acl" value="domains"/>
</settings>
</profile>
Note: Change 139.59.210.202 to your freeSWITCH Server IP Address.
mkdir /etc/freeswitch/sip_profiles/gateways
vim /etc/freeswitch/sip_profiles/gateways/signalwire.xml
<gateway name="SignalWire">
<param name="username" value="freeswitch"/>
<param name="password" value="mypasshere"/>
<param name="sip-port" value="5070"/>
<param name="proxy" value="omid-3b54775746f0.sip.signalwire.com"/>
<param name="realm" value="omid-3b54775746f0.sip.signalwire.com"/>
<param name="register" value="true"/>
<param name="context" value="SignalWire-Inbound"/>
<param name="extension" value="1000"/>
</gateway>
Allow SignalWire IPs in ACL
vim /etc/freeswitch/autoload_configs/acl.conf.xml
<configuration name="acl.conf" description="Network Lists">
<network-lists>
<list name="lan" default="allow">
<node type="deny" cidr="192.168.42.0/24"/>
<node type="allow" cidr="192.168.42.42/32"/>
</list>
<list name="domains" default="deny">
<node type="allow" cidr="23.146.240.70/32"/>
<node type="allow" cidr="188.166.126.7/32"/>
<node type="allow" cidr="167.99.198.84/32"/>
<node type="allow" domain="$${domain}"/>
</list>
</network-lists>
</configuration>
vim /etc/freeswitch/dialplan/company-a.xml
<?xml version="1.0" encoding="utf-8"?>
<include>
<context name="company-a">
<extension name="hello_world">
<condition field ="destination_number" expression "^(123456)$">
<action application="log" data="- ${caller_id_number} from Comapny A called ${destination_number} -"/>
<action application="playback" data="misc/misc-fss_contact_us.wav"/>
</condition>
</extension>
<extension name="Internal Call">
<condition field="destination_number" expression="^(100[0-9])$">
<action application="set" data="dialed_extension=$1"/>
<action application="bridge" data="user/${dialed_extension}@${domain_name}"/>
</condition>
</extension>
<!-- Dial to pstn starting with 9-->
<extension name="pstn">
<condition field="destination_number" expression="^(60175649736)$">
<action application="bridge" data="sofia/gateway/SignalWire/+$1"/>
</condition>
</extension>
</context>
<context name="SignalWire-Inbound">
<extension name="FromSignalWire1000">
<condition field="${destination_number}" expression="^1000$">
<action application="log" data="- ${caller_id_number} called ${destination_number} -"/>
<action application="answer"/>
<action application="sleep" data="1000"/>
<action application="playback" data="misc/misc-fss_contact_us.wav"/>
</condition>
</extension>
</context>
</include>
fs_cli
reloadxml
sofia profile omid start
To verify of the trunk is registered use "sofia status" command in freeswitch console