These are examples that illustrate how to make use certain aspects of the SEMS framework rather than be complete ready-to-use applications. The examples given here can be a good start for further development, though, and some, like the xmlrpc2di, cacheannounce, db_announce, serviceline and the calling card application might be used right out of the box.
The b2b_connect is a transparent back-to-back user agent application, that optionally authenticates the second call leg. If can be used as kind of simple SBC and for other such purposes.
The application development tutorial has some useful examples and also some useful templates to start development of applications.
myapp (Module Documentation: myapp example Application) is just an empty template of a SEMS application. myconfigurableapp (Module Documentation: myconfigurableapp example Application) adds configurability and shows how to read the config parameters from the module config file. myannounceapp (Module Documentation: myannounceapp example Application) then plays an announcement to the caller, similar to the announcement plugin, but without searching paths etc.
The myjukebox (Module Documentation: myjukebox example Application) is an example how to get DTMF input and react on it. It plays the corresponding file if a key is pressed on the telephone.
The calling card example then implements a calling card service - the caller enters a PIN number, and then the number to call, is connected in b2bua mode, and if the credit is expired the call is disconnected. The application is the mycc application (Module Documentation: mycc example Application), and the accounting for this is done in and extra module, cc_acc (Module Documentation: cc_acc example Application), which is used via the internal DI interface. Another implementation, the cc_acc_xmlrpc (Module Documentation: cc_acc_xmlrpc example Application), asks an external xmlrpc accounting server.
Python examples are two in the tutorial: One is a "hello world" (Module Documentation: ivr_announce example Application), and the other is (a part of) RFC4240 announcement service, annc_service (Module Documentation: annc_service example Application).
di_dial (Module Documentation: di_dialer Application) triggers outgoing calls, i.e. calls that originate from SEMS. It can provide credentials from dialout PINs for authentication.
announce_auth (Module Documentation: announce_auth Application) makes an authenticated call and plays, like the announcement module, a sound file. It is a simple example of how to use the uac_auth for authentication.
db_announce (Module Documentation: db_announce Application) and cacheannounce (Module Documentation: cacheannounce Application) are replacements for the announcement application: db_announce get the announcement file it plays from DB via SQL query, cacheannounce loads the announcement to play at startup, and plays it from memory.
di_log (Module Documentation: di_log Application) implements the logging interface - it saves the last n log lines in an in-memory ring buffer, which can be retrieved via DI (using xmlrpc2di via XMLRPC).
call_gen (Module Documentation: call_gen Application) is a call generator, e.g. a load generator for testing SEMS.
jukecall (Module Documentation: jukecall Application) does a b2bua call to the callee with SEMS in the media path, to be able to play a file into the call when the caller presses a button. This demonstrates how to use the so called b2abua session type.
simple_conference (Module Documentation: simple_conference example Application) and pinauthconference (Module Documentation: pinauthconference example Application) are simpler versions of the conference plugin, which are good templates to start with programming if a special conference service should be implemented. simple_conference is just plain conference mixer/bridge (without dialout etc), pinauthconference asks the conference room first.
The serviceline (Module Documentation: serviceline example Application) is an application implementing a service line (press one to get to A, two for B, ...) with ivr, b2bua and SIP auth.
The py_sems_ex directory contains some example for the py_sems embedded Python interpreter, namely an early media announcement implementation, and the jukecall example as py_sems application.
The early_record (Module Documentation: early_record example Application) is an example on how to receive and use early media.
dtmftester (Module Documentation: dtmftester example Application) just records the file and plays the digits, to check whether DTMF detection is working.