mirror of https://github.com/sipwise/sems.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
283 lines
11 KiB
283 lines
11 KiB
|
|
+------------------------------------+
|
|
| SIP express media server - README |
|
|
+------------------------------------+
|
|
|
|
|
|
Introduction:
|
|
|
|
SEMS is a free, high performance, extensible media server
|
|
for SIP (RFC3261) based VoIP services.
|
|
|
|
It is intended to complement proxy/registrar servers
|
|
in VoIP networks for all applications where server-
|
|
side processing of audio is required, for example away
|
|
or pre-call announcements, voicemail, or network side
|
|
conferencing.
|
|
|
|
SEMS can be used to implement simple high performance
|
|
components like announcement servers as building
|
|
blocks of more complex applications, or, using its powerful
|
|
framework for application development including back-to-back
|
|
user agent (B2BUA) functionality, complex VoIP services
|
|
can be realized completely in SEMS.
|
|
|
|
The following applications are shipped with SEMS :
|
|
|
|
* announcement: plays an announcement
|
|
|
|
* voicemail: records voice messages and sends them
|
|
as email
|
|
|
|
* conference: enables many people to talk together
|
|
at the same time
|
|
|
|
* webconference: conference application that can be
|
|
controlled from an external program,
|
|
e.g. a website
|
|
|
|
* echo: test module to echo the caller's voice
|
|
|
|
* mailbox: auto-attendant that saves voicemails into
|
|
an IMAP server. Users can dial in to check
|
|
their messages
|
|
|
|
* ann_b2b: pre-call-announcement, plays announcement
|
|
before connecting the callee in B2BUA mode
|
|
|
|
* announce_transfer: pre-call-announcement, plays announcement
|
|
and then transfers the caller to the callee
|
|
using REFER
|
|
|
|
* early_announce: (pre-call) announcement using early media (183)
|
|
|
|
* conf_auth: collect a PIN number, verify it against an
|
|
XMLRPC authentication server and connects in
|
|
B2BUA mode
|
|
|
|
* pin_collect: collect a PIN, optionally verify it, and transfer
|
|
the call into a conference
|
|
|
|
* callback: reject the call, call back caller later and have
|
|
her enter a number to call in b2bua with media relay
|
|
mode
|
|
|
|
alongside a set of example applications intended to help
|
|
development of custom services, including a calling card
|
|
application, a traffic generator, a component to control the
|
|
media server via XMLRPC, and announcements played from DB.
|
|
|
|
SEMS' core implements basic call and audio processing,
|
|
and loads plug-ins which extend the system. Audio
|
|
plug-ins enable new codecs and file formats,
|
|
application plug-ins implement the services' logic.
|
|
Other modules called component modules provide
|
|
functionality for other modules to use.
|
|
|
|
You can easily extend SEMS by creating your own plug-ins.
|
|
Applications can be written using the SEMS framework API
|
|
in C++, or in Python using an embedded python interpreter
|
|
of the ivr or py_sems modules.
|
|
|
|
SEMS only supports patent free codecs. That means that codecs
|
|
like g729 won't be supported. On the other hand, SEMS supports
|
|
all important patent free codecs out of the box (g711u, g711a,
|
|
GSM06.10, speex, G726 and iLBC). Integrating other codecs in SEMS
|
|
is very simple.
|
|
|
|
SEMS shows very good performance on current standard
|
|
PC architecture based server systems. It has sucessfully
|
|
been run with 1200 G.711 conference channels on a quad-core
|
|
Intel(R) Xeon at 2GHz (700 GSM, 280 iLBC channels). On the
|
|
other hand it also runs on very small devices - for example
|
|
small embedded systems like routers running OpenWRT, for which
|
|
of course the achievable channel count is not that high.
|
|
|
|
Requirements:
|
|
|
|
1. SER version 0.9.6-sems: SIP Epress Router (www.iptel.org/ser)
|
|
|
|
SEMS uses SER as its SIP stack. SEMS & SER communicate
|
|
through unix socket, which means that a SER instance is
|
|
mandatory on every host using SEMS.
|
|
|
|
2. Python version >= 2.3 for the ivr (embedded python interpreter)
|
|
and py_sems, optional
|
|
|
|
3. flite speech synthesizer for TTS in the ivr, optional
|
|
|
|
4. lame >= 3.95 for mp3 file output, optional. mpg123 for mp3 playback,
|
|
optional
|
|
|
|
5. xmlrpcpp for XMLRPC control, optional
|
|
|
|
How to get started with SEMS:
|
|
|
|
To try out SEMS, the easiest is to get the bundle and install it:
|
|
wget http://ftp.iptel.org/pub/sems/sems-0.10.0-bundle.tar.gz
|
|
tar xzvf sems-0.10.0-bundle.tar.gz ; cd sems-0.10.0-bundle
|
|
make install PREFIX=~/sems-0.10.0-install SERPREFIX=~/sems-0.10.0-install
|
|
This gets you the default set of applications installed in that
|
|
directory, and in the end prints the commands to start it.
|
|
|
|
You can also follow one of the tutorials
|
|
linked from the SEMS homepage
|
|
(e.g. http://www.iptel.org/howto_sems_voicemail).The Application
|
|
Modules Documentation page then gives an overview of the application
|
|
modules that come with SEMS
|
|
(http://ftp.iptel.org/pub/sems/doc/current/AppDoc.html).
|
|
|
|
If you are interested in writing your own applications, the
|
|
application development tutorial is a good start
|
|
(http://www.iptel.org/sems/sems_application_development_tutorial),
|
|
together with the design overview
|
|
(http://www.iptel.org/files/semsng-designoverview.pdf) and the example
|
|
applications (apps/examples/).
|
|
|
|
Installation:
|
|
|
|
1. Download SEMS
|
|
Download the source tarball from ftp://ftp.iptel.org/pub/sems,
|
|
or get the newest version through svn:
|
|
$ svn checkout svn://svn.berlios.de/sems/trunk
|
|
-or-
|
|
$ svn checkout http://svn.berlios.de/svnroot/repos/sems/trunk
|
|
|
|
2. Compile SEMS
|
|
|
|
$ make all
|
|
$ make install
|
|
|
|
Notice: you don't need to execute 'make install' if you want to
|
|
run SEMS from the source tree, but in this case some paths
|
|
in the config files will need to be adapted.
|
|
If you want to install to a different prefix than /usr/local,
|
|
use PREFIX=/some/other/prefix
|
|
|
|
For detailed instructions for some modules, have a look at
|
|
doc/COMPILING as well.
|
|
|
|
3. Look at the default configuration file whether it fits your need:
|
|
|
|
If you installed SEMS with 'make install', the configuration
|
|
is at '/usr/local/etc/sems/sems.conf'.
|
|
Else make your own using sems.conf.sample.
|
|
|
|
4. Get and start SER as SIP stack for SEMS:
|
|
|
|
To install the ser-0.9.6-sems into the directory /some/dir the
|
|
following commands can used:
|
|
|
|
$ wget http://ftp.iptel.org/pub/sems/ser-0.9.6-sems_src.tar.gz
|
|
$ tar xzvf ser-0.9.6-sems_src.tar.gz
|
|
$ cd ser-0.9.6-sems
|
|
$ make install PREFIX=/some/dir
|
|
|
|
With the install target install-ser-cfg, e.g. using
|
|
$ make install-ser-cfg SERPREFIX=/some/dir
|
|
you can install a general ser-sems.cfg which will work with
|
|
ser-0.9.6-sems and make SER to act only as SIP stack for SEMS, i.e.
|
|
direct every request to SEMS. Then
|
|
$ /some/dir/sbin/ser -f /some/dir/etc/ser/ser-sems.cfg
|
|
runs SER on port 5070. This way, several versions of SER can be
|
|
used on the same server, e.g. a different version of SER as Registrar
|
|
server.
|
|
|
|
5. Start SEMS:
|
|
|
|
If you installed SEMS with 'make install', sems can be
|
|
found at '/usr/local/sbin/sems'.
|
|
If you need help starting 'sems', try 'sems -h'.
|
|
|
|
6. Using SEMS
|
|
|
|
SEMS needs to be told from the many possible applications that are
|
|
loaded which one to run. You can simply set the application
|
|
in sems.conf, e.g. application=conference. You can also define an
|
|
application mapping, i.e. numbers (R-URIs) that will be mapped to
|
|
applications, see the explanation of 'application' parameter in
|
|
sems.conf.
|
|
|
|
Alternatively, the SIP-stack-SER can be configured in ser-sems.cfg
|
|
to send all calls directly to one application, in that case the line
|
|
if(!t_write_unix("/tmp/sems_sock","sems/app_headers"))
|
|
in ser-sems.cfg could be changed to e.g.
|
|
if(!t_write_unix("/tmp/sems_sock","conference"))
|
|
A sample ser.cfg file in this style can be found at
|
|
http://ftp.iptel.org/pub/sems/ser.cfg
|
|
|
|
For more information please refer to doc/Configure-SEMS-Ser-HOWTO and
|
|
the SER User's guide.
|
|
|
|
Installed files using 'make install':
|
|
|
|
/usr/local/sbin/sems : SEMS executable
|
|
/usr/local/lib/sems/plug-in/* : plug-ins
|
|
/usr/local/lib/sems/audio/* : default path for audio files
|
|
/usr/local/lib/sems/ivr/* : precompiled IVR scripts
|
|
/usr/local/etc/sems/sems.conf : configuration file
|
|
/usr/local/etc/sems/etc/* : modules configuration files
|
|
/usr/local/share/doc/sems/README : this README.
|
|
|
|
source_path/scripts/sems[.redhat] : example start-up scripts.
|
|
source_path/sems.conf.example : example configuration file.
|
|
|
|
Documentation:
|
|
|
|
In the doc/ directory there is a set of files describing the
|
|
applications shipped with SEMS, alongside some more documentation.
|
|
Generate the doxygen documentation with 'make doc' in doc/doxygen_doc,
|
|
that contains all these files as well.
|
|
|
|
All this and more documentation is available online linked from
|
|
the SEMS homepage:
|
|
http://www.iptel.org/sems.
|
|
|
|
Support, mailing lists, bugs and contact:
|
|
|
|
Please have a look at the documentation and other information on
|
|
the SEMS homepage (www.iptel.org/sems).
|
|
|
|
Best-effort support is given through the mailing lists for SEMS,
|
|
sems@iptel.org and semsdev@iptel.org, which are the first address
|
|
to ask for help, report bugs and improvements. You need to be
|
|
subscribed to be able to post to the lists: http://lists.iptel.org.
|
|
The mailing list archives at http://lists.iptel.org/pipermail/sems/
|
|
and http://lists.iptel.org/pipermail/semsdev/ can be a great help as
|
|
well (especially with google site search on lists.iptel.org, e.g.
|
|
http://www.google.com/coop/cse?cx=006590474108803368786%3A158hxzctv4u ).
|
|
|
|
The bug tracker for SEMS is at http://tracker.iptel.org/browse/SEMS
|
|
Please submit all bugs, crashes and feature requests you encounter.
|
|
|
|
Authors:
|
|
|
|
Raphael Coeffic (rco@iptel.org), the father of SEMS,
|
|
Stefan Sayer (stefan.sayer@iptego.de), current lead developer,
|
|
and all contributors.
|
|
|
|
Contributions:
|
|
|
|
All kinds of contributions and bug fixes are very welcome, for
|
|
example new application or codec modules, documentation pages, howtos
|
|
etc. Please email one of the lists or the authors.
|
|
|
|
Special thanks goes to:
|
|
|
|
* Juha Heinanen
|
|
for numerous bug reports, improvements and contributions
|
|
|
|
* Ulrich Abend (ullstar@iptel.org)
|
|
for his great debuging work and ISDN gateway which
|
|
unfortunately did not make it into this version yet.
|
|
|
|
* Jiri Kuthan (jiri@iptel.org)
|
|
for the debuging work and help to implement
|
|
the first communicating part between Ser & SEMS ('vm' module).
|
|
|
|
* iptego GmbH and iptelorg for sponsoring development and improvement
|
|
of SEMS.
|
|
|
|
* All the others who helped during test session and reported bugs :-)
|
|
|
|
SEMS - the media-S in the SLAMP. |