The intention is to have a place to ask Elixir/Erlang-related questions regarding FreeSWICH.
The thread is named FreeSWITCH and not telephony on purpose, because it is a huge topic (there is also Asterisk, for example). See also the split of Nix and Guix threads even though the main concepts are the same.
From the FreeSWITCH wiki:
What is FreeSWITCH?
FreeSWITCH is a Software Defined Telecom Stack enabling the digital transformation from proprietary telecom switches to a versatile software implementation that runs on any commodity hardware. From a Raspberry PI to a multi-core server, FreeSWITCH can unlock the telecommunications potential of any device. Combined with our hosted cloud platform, SignalWire, FreeSWITCH can interconnect with the outside world and scale to any size. (Visit https://signalwire.com for more info)
FreeSWITCH can handle voice, video and text communications from an IP Network (VoIP) and the PSTN(Public Switched Telephone Network - regular landlines). FreeSWITCH supports all popular VoIP protocols as well as interfacing with PRIs. For a full listing of supported protocols see the Endpoints page. Some common capacities that FreeSWITCH is used for include
- PBX (Office phone system)
- Class 5 Softswitch (Telephone carrier)
- Application server such as Voicemail, conferencing, IVR
- Softphone
This list is by no means comprehensive, FreeSWITCH is extremely flexible and can be used in any way you can imagine.
Manage FreeSWITCH via events
FreeSWITCH can be controlled by events using external applications. The below FreeSWITCH modules can be used to do so:
-
is a TCP based interface to control FreeSWITCH
-
is a derivative of
mod_event_socket
that sends events and receives commands in erlangās binary term format. This allows FreeSWITCH⢠to behave like just another erlang node (albeit a hidden one). -
is an API-based platform that lets you use your existing phones, programming languages and IT skills to build voice, video and SMS services.
Erlang/Elixir libraries building on one of the above modules:
-
fswitch
(erlang, supportsmod_erlang_event
) -
freeswitch-outboundsocket
(elixir, supportsmod_event_socket
(?)) -
elixir_mod_event
(elixir, supportsmod_event_socket
andmod_erlang_event
) -
kazoo
(erlang, supportsmod_kazoo
)This is more like a platform, and using FreeSWITCH only for āāCall Pickupā, āCall Hangupā and āTranscodingāā (see KAZOO Overview and Architecture). Also not sure how
mod_kazoo
is different from the other two.