Learn FreeSWITCH Part 9 Bridge Application - Omid-Mohajerani/freeswitch GitHub Wiki
Link to Video Training on Youtube: https://www.youtube.com/watch?v=OzdEY6lNfYE&list=PLcrU7LQXdqpezY3jiVuKMQhbd0Brafz1D&index=9
<extension name="pstn">
<condition field="destination_number" expression="^(60175649736)$">
<action application="bridge" data="sofia/gateway/signalwire/+$1"/>
</condition>
</extension>
<extension name="Brige Call to a User">
<condition field="destination_number" expression="^1000$">
<action application="bridge" data="user/[email protected]"/>
</condition>
</extension>
By using commas to separate the addresses, bridge will dial them simultaneously. no limit to concurrency, first one to answer wins.
<extension name="Dial Multiple Contacts at once">
<condition field="destination_number" expression="^10000$">
<action application="bridge" data="user/[email protected],user/[email protected]"/>
</condition>
</extension>
Multiple endpoints sequential -- no limit to failover number. Using pipes, it'll dial one at a time.
<extension name="Bridge multiple at once">
<condition field="destination_number" expression="^1231003$">
<action application="bridge" data="sofia/gateway/signalwire/+60171212334,sofia/gateway/SignalWire2/+60171212335"/>
</condition>
</extension>
Failover for your outbound gateway is easy to implement at bridge time using the | separator.
<extension name="PSTN with failover">
<condition field="destination_number" expression="^(60175649736)$">
<action application="bridge" data="sofia/gateway/signalwire/+$1|sofia/gateway/telnyx/+$1"/>
</condition>
</extension>
The maximum number of seconds to wait for an answer state from a remote endpoint.
<extension name="Brige Call to a User">
<condition field="destination_number" expression="^1000$">
<action application="set" data="call_timeout=10"/>
<action application="bridge" data="user/[email protected]"/>
<action application="hangup" data="NO_ANSWER"/>
</condition>
</extension>
Timeout calculates from invite packet to cancel packet.
The group special channel will dynamically create a dial string to reach all endpoints defined as part of a group in the directory.
<extension name="Dial TechSupport Group">
<condition field="destination_number" expression="^30000$">
<action application="bridge" data="group/[email protected]"/>
</condition>
</extension>
Or
<extension name="Dial TechSupport Group">
<condition field="destination_number" expression="^40000$">
<action application="bridge" data="${group_call([email protected])}"/>
</condition>
</extension>
You may want to simulate ringback to your internal users while you dial a provider, or you may need to force a ringback back upstream when you are dialing multiple extensions.
<extension name="pstn">
<condition field="destination_number" expression="^(60175649736)$">
<action application="set" data="ringback=${us-ring}" />
<action application="bridge" data="sofia/gateway/signalwire/+$1"/>
</condition>
</extension>
<extension name="pstn">
<condition field="destination_number" expression="^(60175649736)$">
<action application="set" data="effective_caller_id_name=Omid Mohajerani"/>
<action application="set" data="effective_caller_id_number=+12062108909"/>
<action application="bridge" data="sofia/gateway/signalwire/+$1"/>
</condition>
</extension>
No media mode is an SDP Passthrough feature that permits two endpoints that can see each other (no N.A.T.) to connect their media sessions directly while FreeSWITCH maintains control of the SIP signaling.
When set, the media (RTP) from the originating endpoint is sent directly to the destination endpoint and vice versa. The signaling (SIP) for both endpoints still goes through FreeSWITCH, but the media is point-to-point.
<extension name="Bridge Call to a User">
<condition field="destination_number" expression="^1000$">
<action application="set" data="bypass_media=true"/>
<action application="bridge" data="user/[email protected]"/>
</condition>
</extension>
Source: https://freeswitch.org/confluence/display/FREESWITCH/mod_dptools%3A+bridge