FreeSWITCH
Purpose
Section titled “Purpose”Describe FreeSWITCH’s role at the edge: bridging call legs, running AMD, recording, and playing prompts and voicemail.
Overview
Section titled “Overview”FreeSWITCH is the edge B2BUA and media engine, driven by the
call engine over ESL. It dials carriers for outbound
calls, bridges legs (caller ↔ agent), runs answering-machine detection
(mod_avmd), records calls (uuid_record), and plays prompts/voicemail from
synced media. It listens on 5066; OpenSIPS authenticates first, so its external
profile runs with auth-calls=false and only ever sees plain RTP (rtpengine
terminates the browser-side SRTP/DTLS/ICE).
The dialplan disambiguates by feature code on CHANNEL_PARK:
| Pattern | Handler |
|---|---|
*86<ext> |
queue entry |
*87<ext> |
IVR entry |
*88<group> |
ring group |
*99<mailbox> |
voicemail record |
<NNNN> |
bridge to a registered agent extension |
Configuration
Section titled “Configuration”The node agent renders per-carrier gateways and the outbound dialplan, and plays synced assets from the edge media root (which must match the control plane):
EDGE_MEDIA_ROOT=/var/lib/get2dial/mediaESL_PASSWORD=... # must match the call engine / node agentExamples
Section titled “Examples”On an answered outbound call FreeSWITCH runs AMD; a human (or AMD-timeout
unknown) answer is bridged to the agent, while a detected machine triggers a
voicemail drop from the audio library.
caller-id-in-fromis set unconditionally so the campaign CLI reaches the carrier in the SIPFromheader — otherwise sofia falls back to the gateway auth username and the real caller ID only rides inRemote-Party-ID(which most carriers ignore).- Gateways are reloaded via ESL (
reloadxml+sofia profile external rescan). A plain rescan picks up new gateways but may not refresh changed params on an existing one (recreate it). - The FreeSWITCH image is built from source (Signalwire moved the apt repos behind a paywall after 1.10.10).