diff --git a/README b/README index 59d1e206..2b726553 100644 --- a/README +++ b/README @@ -13,7 +13,9 @@ Introduction: 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. + conferencing. Another use case is for interconnecting + SIP networks, where a back-to-back user agent (B2BUA) + is required. SEMS can be used to implement simple high performance components like announcement servers as building @@ -22,27 +24,29 @@ Introduction: user agent (B2BUA) and state machine scripting functionality, complex VoIP services can be realized completely in SEMS. - 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, L16 and iLBC). Integrating other codecs - in SEMS is very simple (patented or not). + SEMS supports all important patent free codecs out of the + box (g711u, g711a, GSM06.10, speex, G.726, L16 and iLBC). + There is a wrapper for the IPP G.729 codec implementation + available. Integrating other codecs in SEMS is very simple + (patented or not). 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), and up to - 5000 channels on a dual quad Xeon at 2.9GHz. 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. + 5000 channels on a dual quad Xeon at 2.9GHz. Its back-to-back + user agent has been run with up to 19000 TPS on the latter + machine. 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. License: SEMS is free (speech+beer) software. It is licensed under dual - license terms, the GPL (v2+) and proprietary license. This program - is released under the GPL with the additional exemption that - compiling, linking, and/or using OpenSSL is allowed. + license terms, the GPL (v2+) and proprietary license. This + program is released under the GPL with the additional exemption + that compiling, linking, and/or using OpenSSL is allowed. See doc/COPYING for details. @@ -50,21 +54,24 @@ Applications: The following applications are shipped with SEMS : + Announcements (Prompts, Ringbacktones, Pre-call-prompts): * announcement plays an announcement - * voicemail records voice messages and sends them - as email, saves them to a voicebox, or - both - * conference enables many people to talk together - at the same time + * 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 - * webconference conference application that can be - controlled from an external program, - e.g. a website + * early_announce (pre-call) announcement using early media (183), + optionally continues the call in B2BUA mode - * echo test module to echo the caller's voice - + * precoded_announce plays preencoded announcements + + + Voicemail/Mailbox * voicebox users can dial in to the voicebox to check their messages @@ -75,18 +82,19 @@ Applications: an IMAP server. Users can dial in to check their messages (simpler version) - * 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 + * voicemail records voice messages and sends them + as email, saves them to a voicebox, or + both - * early_announce (pre-call) announcement using early media (183), - optionally continues the call in B2BUA mode - * auth_b2b B2BUA app that changes identity and authenticates - second call leg + Conferencing + + * 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 * conf_auth collect a PIN number, verify it against an XMLRPC authentication server and connects in @@ -95,18 +103,33 @@ Applications: * pin_collect collect a PIN, optionally verify it, and transfer the call into a conference + Back-to-back User Agent + + * sbc flexible SBC application, supports + - identity change + - header manipulation (filter etc) + - (multihomed) RTP relay + - SIP authentication + - Session timer, call timer, prepaid + etc + App development + + * dsm DSM state machine scripting (use this) + + * ivr embedded Python interpreter for simple apps + + * py_sems another embedded Python interpreter + + Misc + * echo test module to echo the caller's voice + + * callback reject the call, call back caller later and have her enter a number to call in b2bua with media relay mode * reg_agent SIP REGISTER to register SEMS' contact to an aor - * sw_prepaid_sip prepaid application - - * call_timer B2BUA, ends the call after a certain time - - * precoded_announce plays preencoded announcements - Developing and customizing Applications and services: @@ -141,22 +164,14 @@ Requirements: All requirements are optional. - 1. Python version >= 2.3 for the ivr (embedded python interpreter) - and py_sems, optional - - 2. flite speech synthesizer for TTS in the ivr, optional - - 3. lame >= 3.95 for mp3 file output, optional. mpg123 for mp3 playback, - optional - - 4. xmlrpcpp for XMLRPC control, optional - - 5. spandsp library for DTMF detection and PLC, optional + o Python version >= 2.3 for the ivr (embedded python interpreter) + and py_sems + o flite speech synthesizer for TTS in the ivr + o lame >= 3.95 for mp3 file output, mpg123 for mp3 playback + o spandsp library for DTMF detection and PLC (SEMS has its own implementations for both) - - 6. libZRTP SDK (http://zfoneproject.com) for ZRTP, optional - - 7. libev for jsonrpc, optional + o libZRTP SDK (http://zfoneproject.com) for ZRTP + o libev for jsonrpc How to get started with SEMS: @@ -164,85 +179,41 @@ How to get started with SEMS: http://ftp.iptel.org/pub/sems/, unpack and install it using the usual make && make install. After installation, the configuration file /usr/local/etc/sems/sems.conf needs to be - adapted. + adapted, especially the parameters "sip_ip", "media_ip", + "load_plugins", "application". - On debian, you can add the iptel.org SEMS repository to + On Debian and Ubuntu, add the SEMS repository from OBS to /etc/apt/sources.list: - deb http://ftp.iptel.org/pub/sems/debian lenny free - deb-src http://ftp.iptel.org/pub/sems/debian lenny free - and install SEMS from binary packages with: - $ apt-get install sems sems-python-modules - If you want to build SEMS from source on debian, see below. - - On Fedora, simply do + deb http://download.opensuse.org/repositories/home:/team-sems/Debian_5.0 ./ + and install SEMS packages with: + wget http://download.opensuse.org/repositories/home:/team-sems/Debian_5.0/Release.key \ + -O - |apt-key add - + apt-get update && apt-get install sems + If you want to build SEMS from source on debian/derivatives, see below. + + On Fedora/CentOS, simply do $ sudo yum install sems and sems package will be installed. - 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 + You can also follow one of the tutorials linked from the SEMS homepage + (e.g. http://ftp.iptel.org/pub/sems/doc/current/howtostart_noproxy.html). + 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 + 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. 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'. - - 5. 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 + 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. Creating packages on debian (ubuntu, ...): @@ -316,6 +287,7 @@ Authors: Andreas Granig Andrey Samusenko Andriy I Pylypenko + Anton Zagorskiy B. Oldenburg Balint Kovacs Bogdan Pintea @@ -325,6 +297,7 @@ Authors: Jeremy A Jiri Kuthan Juha Heinanen + Matthew Williams Ovidiu Sas Peter Lemenkov Peter Loeppky @@ -333,9 +306,10 @@ Authors: Rui Jin Zheng Tom van der Geer Ulrich Abend - (if you want to be added or removed from this list, please mail to stefan.sayer@gmail.com) + (if you feel you should be on this list, please mail to stefan.sayer@gmail.com) - Special thanks to IPTEGO GmbH and iptelorg GmbH for sponsoring development of SEMS. + Special thanks to IPTEGO GmbH, iptelorg GmbH and TelTech Systems Inc. for + sponsoring development of SEMS. Contributions: diff --git a/doc/src/doc_applications.h b/doc/src/doc_applications.h index dcb201c9..0d9a5aa0 100644 --- a/doc/src/doc_applications.h +++ b/doc/src/doc_applications.h @@ -52,6 +52,12 @@ * *