SipX and FreeSWITCH integration
From SIPfoundry sipx, The Open Source SIP PBX for Linux - Calivia
Contents |
Introduction
FreeSWITCH
FreeSWITCH is an open source telephony application written in C, built from the ground up and designed to take advantage of as many existing software libraries as possible. FreeSWITCH makes it possible to build an open source PBX system or an open source voip switching platform as well as unite various technologies such as SIP H.323, IAX2, LDAP, Zeroconf, XMPP / Jingle etc. FreeSWITCH can also be used to interface with other open source PBX systems such as OpenPBX, Bayonne, YATE or Asterisk.
sipX & FreeSWITCH
The sipX & FreeSWITCH integration project glues the sipX PBX and FreeSWITCH projects together. Today, the combination of these projects adds audio conference support to the sipX PBX and the first partial configuration GUI to FreeSWITCH.
Further integration can bring endless new possibilities in media processing to sipX ranging from Paging support to a Media Gateway supporting H.323, Woomera, IAX2, Google TALK and BRI/PRI.
Conference Bridge
The FreeSWITCH Conference Bridge was merged into the sipX main line development tree after the sipX 3.10 release. Look for RPMs in the next major release of the sipX.
Features
- SIP conference support
- sipXconfig-based configuration
- Participant authentication through PINs
- English voice prompts
- Per-conference maximum leg limits
- DTMF keycodes to control participant volume, gain, and hangup the call.
- G711, speex, G722, and L16 audio codecs
Todo
- Authentication is not enabled by default for remote FreeSWITCH XML/RPC provisioning.
- Voice prompts need to be localized.
- The .spec file used to create the FreeSWITCH RPMs needs cleaned up
- The bridge-wide max participant limit is not implemented. Only individual conference participant limits are implemented.
How does it work?
Right now it's quite straight forward.
- FreeSWITCH gets installed on the same machine that runs your sipX setup and is managed by sipX's watchdog the same way other services are. The default installation is /usr/local/freeswitch. You can see and control FreeSWITCH process status on the services page.
- sipXconfig generates dialplan information for FreeSWITCH and tells FreeSWITCH via XML/RPC to reload the config every time there is a change in conference bridge setup.
- See conference service configuration page for details on conference setup.
Cavetas
- FreeSWITCH is started as sipx user not as root. You can fix permission errors that You might get during sipXpbx startup by running a special command as a root user.
freeswitch.sh --configtest
This happens only if you play with freeswitch as a root user.
- FreeSWITCH RPM building process is not endorsed by FreeSWITCH authors
More
Feel free to share new ideas on the subject on sipx-dev@list.sipfoundry.org. :)
Source Code
FreeSWITCH integration project was moved to the sipX main line of development after the 3.10 release. Integration has been tested against FreeSWITCH v1.0RC3.
- Latest FreeSWITCH sources: http://svn.freeswitch.org/svn/freeswitch/trunk
- Latest sipX sources: http://sipxecs.sipfoundry.org/rep/sipXecs/main
The integration sources are located in a few places in the sipX repository:
- Scripts to build FreeSWITCH RPMs: lib/freeswitch (browse)
- Bootstrap configuration files: sipXconfig/conference (browse)
- Conference configuration sources: sipXconfig/neoconf/src/org/sipfoundry/sipxconfig/conference (browse)
Building RPMs
Follow the usual RPM build instructions for your platform. FreeSWITCH integration requires both the FreeSWITCH RPMs from SIPfoundry and the sipXconfig conference bridge provisioning RPMs.
FreeSWITCH RPMs
Official FreeSWITCH RPMs are not yet available. You can either build your own or download them from the nightly builds on SIPfoundry.
FreeSWITCH RPMs:
- sipX-freeswitch-<VERSION>.<ARCH>.rpm
- Optional: sipX-freeswitch-codec-passthru-amr-<VERSION>.<ARCH>.rpm
- Optional: sipX-freeswitch-codec-passthru-<VERSION>.<ARCH>.rpm
- Optional: sipX-freeswitch-codec-passthru-<VERSION>.<ARCH>.rpm
- Optional: sipX-freeswitch-devel-<VERSION>.<ARCH>.rpm
sipX conference provisioning RPM:
- sipxconfig-conference-<VERSION>.<ARCH>.rpm
Building FreeSWITCH RPMs from source
From your sipX source tree:
cd lib/freeswitch autoreconf -if ./configure sudo make
Download RPMs via Nightly Builds
http://sipxecs.sipfoundry.org/temp/sipXecs/main/
Building FreeSWITCH configuration module from source
When you configure your source for building, add a "--enable-conference" option. For example:
... autoreconf -if ./configure --enable-conference make ...
Download RPMs via Nightly Builds
http://sipxecs.sipfoundry.org/temp/sipXecs/main/
