{"id":13650203,"url":"https://github.com/sems-server/sems","last_synced_at":"2025-10-22T02:50:19.599Z","repository":{"id":15693470,"uuid":"18431241","full_name":"sems-server/sems","owner":"sems-server","description":"Sip Express Media Server","archived":false,"fork":false,"pushed_at":"2025-04-03T16:23:34.000Z","size":13097,"stargazers_count":167,"open_issues_count":33,"forks_count":95,"subscribers_count":40,"default_branch":"master","last_synced_at":"2025-04-03T17:30:20.725Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sems-server.png","metadata":{"files":{"readme":"README","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2014-04-04T07:40:13.000Z","updated_at":"2025-04-03T16:23:39.000Z","dependencies_parsed_at":"2023-12-30T09:22:27.465Z","dependency_job_id":"a925fbc3-1729-48db-b43b-1969d501d5d3","html_url":"https://github.com/sems-server/sems","commit_stats":{"total_commits":4491,"total_committers":58,"mean_commits":77.43103448275862,"dds":0.5208194166109998,"last_synced_commit":"59bc218eb6adf73eaa1d79be8193284bdd388f2a"},"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sems-server%2Fsems","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sems-server%2Fsems/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sems-server%2Fsems/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sems-server%2Fsems/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sems-server","download_url":"https://codeload.github.com/sems-server/sems/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250297225,"owners_count":21407171,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T02:00:34.824Z","updated_at":"2025-10-22T02:50:18.510Z","avatar_url":"https://github.com/sems-server.png","language":"C++","funding_links":[],"categories":["Server Software","Interconnect"],"sub_categories":["Media Servers","SBC, IMS"],"readme":"\n          +------------------------------------+\n          | SIP Express Media Server  - README |\n          +------------------------------------+\n\n\nIntroduction:\n\n SEMS is a free, high performance, extensible media server \n for SIP (RFC3261) based VoIP services. \n\n It is intended to complement proxy/registrar servers\n in VoIP networks for all applications where server-\n side processing of audio is required, for example away \n or pre-call announcements, voicemail, or network side \n conferencing. Another use case is for interconnecting\n SIP networks, where a back-to-back user agent (B2BUA)\n is required.\n\n SEMS can be used to implement simple high performance \n components like announcement servers as building \n blocks of more complex applications, or, using its powerful \n framework for application development including back-to-back \n user agent (B2BUA) and state machine scripting functionality, \n complex VoIP services can be realized completely in SEMS. \n \n SEMS supports all important patent free codecs out of the\n box (g711u, g711a, GSM06.10, speex, G.726, L16, OPUS, iLBC etc).\n There is a wrapper for the IPP G.729 codec implementation\n available. Integrating other codecs in SEMS is very simple\n (patented or not).\n\n SEMS shows very good performance on current standard\n PC architecture based server systems. It has sucessfully\n been run with 1200 G.711 conference channels on a quad-core\n Intel(R) Xeon at 2GHz (700 GSM, 280 iLBC channels), and up to \n 5000 channels on a dual quad Xeon at 2.9GHz. Its back-to-back\n user agent has been run with up to 19000 TPS on the latter\n machine. On the other hand it also runs on very small devices -\n for example small embedded systems like routers running OpenWRT,\n for which of course the achievable channel count is not that\n high.\n\nLicense:\n\n SEMS is free (speech+beer) software. It is licensed under dual \n license terms, the GPL (v2+) and proprietary license. This\n program is released under the GPL with the additional exemption\n that compiling, linking, and/or using OpenSSL is allowed.\n\n For a license to use SEMS under non-GPL terms, please contact\n FRAFOS GmbH at info@frafos.com .\n \n See doc/COPYING for details.\n\nApplications:\n\n The following applications are shipped with SEMS :\n\n  Back-to-back User Agent\n  \n  * sbc            flexible SBC application, supports\n                    - identity change\n                    - header manipulation (filter etc)\n                    - (multihomed) RTP relay, NAT handling, transcoding\n                    - SIP authentication \n                    - Session timer, call timer, prepaid\n                    etc\n\n Announcements (Prompts, Ringbacktones, Pre-call-prompts):\n  * announcement   plays an announcement\n\n\n  * ann_b2b        pre-call-announcement, plays announcement \n                   before connecting the callee in B2BUA mode\n \n  * announce_transfer  pre-call-announcement, plays announcement \n                   and then transfers the caller to the callee \n                   using REFER\n\n  * early_announce (pre-call) announcement using early media (183),\n                   optionally continues the call in B2BUA mode\n\n  * precoded_announce plays preencoded announcements\n\n\n Voicemail/Mailbox\n  * voicebox       users can dial in to the voicebox to check\n                   their messages\n\n  * annrecorder    users can record their personal greeting \n                   message\n\n  * mailbox        auto-attendant that saves voicemails into\n                   an IMAP server. Users can dial in to check\n                   their messages (simpler version)\n\n  * voicemail      records voice messages and sends them \n                   as email, saves them to a voicebox, or\n                   both\n\n\n Conferencing\n\n  * conference     enables many people to talk together \n                   at the same time\n\n  * webconference  conference application that can be \n                   controlled from an external program, \n                   e.g. a website \n\n  * conf_auth      collect a PIN number, verify it against an \n                   XMLRPC authentication server and connects in \n                   B2BUA mode\n\n  * pin_collect    collect a PIN, optionally verify it, and transfer\n                   the call into a conference\n\n App development\n\n  * dsm            DSM state machine scripting (use this)\n\n  * ivr            embedded Python interpreter for simple apps\n  \n  * py_sems        another embedded Python interpreter\n\n Misc\n  * echo           test module to echo the caller's voice\n \n\n  * callback       reject the call, call back caller later and have \n                   her enter a number to call in b2bua with media relay\n                   mode\n\n  * reg_agent     SIP REGISTER to register SEMS' contact to an aor\n\n\nDeveloping and customizing Applications and services:\n\n SEMS comes with a set of example applications intended to help \n development of custom services, including a calling card \n application, a traffic generator, a component to control the \n media server via XMLRPC, and announcements played from DB.\n\n DSM state machine scripting is a powerful yet simple method\n to rapidly implement custom applications. With this method,\n the service logic is written as an easy to understand \n textual definition of a state machine, which is interpreted\n and executed for every call. The (domain specific) language \n for defining state machines can be extended by implementing\n modules. A set of useful modules are shipped with SEMS, \n including MySQL database access module, Python module, \n conference support, Amazon AWS and more. \n\n SEMS' core implements basic call and audio processing, \n and loads plug-ins which extend the system. Audio\n plug-ins enable new codecs and file formats, \n application plug-ins implement the services' logic.\n Other modules called component modules provide \n functionality for other modules to use.\n\n You can easily extend SEMS by creating your own plug-ins.\n Applications can be written using the SEMS framework API \n in C++, or in Python using an embedded python interpreter \n of the ivr or py_sems modules, or the DSM.\n\nRequirements:\n\n All requirements are optional.\n\n o Python for the ivr (embedded python interpreter) and py_sems\n o flite speech synthesizer for TTS in the ivr\n o lame \u003e= 3.95 for mp3 file output, mpg123 for mp3 playback\n o spandsp library for DTMF detection and PLC\n    (SEMS has its own implementations for both)\n o libZRTP SDK (http://zfoneproject.com) for ZRTP\n o libev for jsonrpc\n\nSupported environments:\n\n  SEMS server hes been tested with the following:\n    * RHEL 7 with Python 3\n    * RHEL 8 with Python 3\n    * RHEL 9 with Python 3\n    * Debian 11 with Python 3\n    * Debian 12 with Python 3\n\n  Please see appropriate Dockerfiles\n\nCreating packages on debian (ubuntu, ...):\n\n   install debian package build tools:\n   $ sudo apt-get install debhelper devscripts\n\n   install dependencies (those below or let dpkg-buildpackage below tell you\n   which ones):\n   $ sudo apt-get install debhelper g++ make libspandsp-dev flite1-dev \\\n         libspeex-dev libgsm1-dev libopus-dev libssl-dev python-dev \\\n\t python-sip-dev openssl libev-dev libmysqlcppconn-dev libevent-dev \\\n\t libxml2-dev libcurl4-openssl-dev libhiredis-dev\n   \n   get the source: \n   $ git clone https://github.com/sems-server/sems.git\n\n   $ cd sems; ln -s pkg/deb/buster ./debian\n\n   set version in changelog if not correct\n   $ dch -v x.y.z \"SEMS x.y.z release\"\n   or:\n   $ dch -b -v `git describe --always` \"sems git master\"\n   \n   build package:\n   $ dpkg-buildpackage -rfakeroot -us -uc\n\n   install sems and sems-python-modules packages in .. using dpkg.\n\n\nBuild and run in container\n\n   # build\n   docker build -t sems-rhel8 -f Dockerfile-rhel8 .\n   # test-run in foreground\n   podman run --rm -it --name sems sems-rhel8\n\n\nBuild in container and extract RPMs from the built container:\n\n   mkdir -p /tmp/sems-rpms\n   # build\n   docker build -t sems-rhel7 -f Dockerfile-rhel7 .\n   # create container instance from the image\n   docker create --name temp-sems-rhel7 sems-rhel7\n   # extract RPMs into host system\n   docker cp temp-sems-rhel7:/root/rpmbuild/RPMS /tmp/sems-rpms\n   # remove temporary container\n   docker rm temp-sems-rhel7\n   # list available SEMS RPMs\n   ls -al /tmp/sems-rpms/RPMS/x86_64/\n\n\nInstalled files using 'make install':\n\n    /usr/local/sbin/sems                 : SEMS executable\n    /usr/local/lib/sems/plug-in/*        : plug-ins\n    /usr/local/lib/sems/audio/*          : default path for audio files\n    /usr/local/lib/sems/ivr/*            : precompiled IVR scripts\n    /usr/local/etc/sems/sems.conf        : configuration file\n    /usr/local/etc/sems/etc/*            : modules configuration files\n    /usr/local/share/doc/sems/README     : this README.\n\n    source_path/scripts/sems[.redhat]    : example start-up scripts.\n    source_path/sems.conf.example        : example configuration file.\n\nDocumentation:\n\n  In the doc/ directory there is a set of files describing the\n  applications shipped with SEMS, alongside some more documentation.\n  Generate the doxygen documentation with 'make doc' in doc/doxygen_doc,\n  that contains all these files as well.\n\nSupport, mailing lists, bugs and contact:\n\n  Best-effort support is given through the mailing lists for SEMS,\n  sems-users@googlegroups.com and sems-dev@googlegroups.com, which are the\n  first address to ask for help, report bugs and improvements.\n\n  Bugs can be filed as issues on this site.  Please submit all bugs,\n  crashes and feature requests you encounter.\n\nAuthors:\n\n  Raphael Coeffic (rco@iptel.org), the father of SEMS, \n  Stefan Sayer (stefan.sayer@gmail.com), current lead developer,\n  and all contributors:\n    Alex Gradinar\n    Alfred E Heggestad\n    Andreas Granig\n    Andrey Samusenko\n    Andriy I Pylypenko\n    Anton Zagorskiy\n    B. Oldenburg\n    Balint Kovacs\n    Bogdan Pintea\n    Carsten Bock\n    Greger Viken Teigre\n    Grzegorz Stanislawski\n    Helmut Kuper\n    Jeremy A\n    Jiri Kuthan\n    Joe Stusick\n    Jose-Luis Millan\n    Juha Heinanen\n    Marcel Hecko\n    Matthew Williams\n    Michael Furmur\n    Ovidiu Sas\n    Pavel Kasparek\n    Peter Lemenkov\n    Peter Loeppky\n    Richard Newman\n    Robert Szokovacs\n    Rui Jin Zheng\n    Tom van der Geer\n    Ulrich Abend\n    Vaclav Kubart\n    Victor Seva\n   (if you feel you should be on this list, please mail to stefan.sayer@gmail.com)\n \n  Special thanks to FRAFOS GmbH, sipwise GmbH, IPTEGO GmbH, iptelorg GmbH and TelTech Systems Inc. for \n  sponsoring development of SEMS.\n\nContributions:\n\n  All kinds of contributions and bug fixes are very welcome, for \n  example new application or codec modules, documentation pages, howtos\n  etc. Please email one of the lists or the authors.\n\n  Please also have a look at the contributions license policy \n  (see doc/COPYING).\n  \nSEMS - the media-S in the SLAMP.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsems-server%2Fsems","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsems-server%2Fsems","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsems-server%2Fsems/lists"}