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.
sems/doc/doc_exampleapps.h

204 lines
8.1 KiB

/*! \page AppDocExample Example Applications
*
* 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.
*
*
* \section exampleappb2bapps Back-to-back user agent applications
*
* 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.
*
* \ref ModuleDoc_b2b_connect
*
* \section exampleapptutorialdoc The examples from the tutorial
*
* The <a href="http://www.iptel.org/sems/sems_application_development_tutorial">
* application development tutorial</a> has some useful examples and
* also some useful templates to start development of applications.
*
* myapp (\ref ModuleDoc_myapp) is just an empty template of a SEMS application.
* myconfigurableapp (\ref ModuleDoc_myconfigurableapp) adds configurability and shows how to read the
* config parameters from the module config file. myannounceapp (\ref ModuleDoc_myannounceapp) then
* plays an announcement to the caller, similar to the announcement plugin, but
* without searching paths etc.
*
* The myjukebox (\ref ModuleDoc_myjukebox) 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 (\ref ModuleDoc_mycc), and the accounting for this is done in
* and extra module, cc_acc (\ref ModuleDoc_cc_acc), which is used via the internal
* DI interface. Another implementation, the cc_acc_xmlrpc (\ref ModuleDoc_cc_acc_xmlrpc),
* asks an external xmlrpc accounting server.
*
* Python examples are two in the tutorial: One is a "hello world" (\ref ModuleDoc_ivr_announce),
* and the other is (a part of) RFC4240 announcement service, annc_service (\ref ModuleDoc_annc_service).
*
* \section otherexampleappdoc Other example applications
*
* di_dial (\ref ModuleDoc_di_dialer) triggers outgoing calls, i.e. calls that originate from SEMS.
* It can provide credentials from dialout PINs for authentication.
*
* announce_auth (\ref ModuleDoc_announce_auth) 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 (\ref ModuleDoc_db_announce) and cacheannounce (\ref ModuleDoc_cacheannounce) 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 (\ref ModuleDoc_di_log) 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 (\ref ModuleDoc_call_gen) is a call generator, e.g. a load generator for testing SEMS.
*
* jukecall (\ref ModuleDoc_jukecall) 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.
*
* mixin_announce (\ref ModuleDoc_mixin_announce) periodically mixes a second file into an
* announcement played, an example on how to use AmAudioMixIn.
*
* simple_conference (\ref ModuleDoc_simple_conference) and pinauthconference
* (\ref ModuleDoc_pinauthconference) 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 (\ref ModuleDoc_serviceline) 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 (\ref ModuleDoc_early_record) is an example on how to receive and use early media.
*
* dtmftester (\ref ModuleDoc_dtmftester) just records the file and plays the digits, to check whether
* DTMF detection is working.
*
*/
// -------------------- example apps
/*! \page ModuleDoc_conf_auth Module Documentation: conf_auth Application
* \section Readme_conf_auth Readme file
* \verbinclude Readme.conf_auth
*
* \section Links
* Back to \ref AppDoc, to \ref AppDocExample.
*/
/*! \page ModuleDoc_pin_collect Module Documentation: pin_collect Application
* \section Readme_pin_collect Readme file
* \verbinclude Readme.pin_collect
*
* \section Links
* Back to \ref AppDoc, to \ref AppDocExample.
*/
/*! \page ModuleDoc_cacheannounce Module Documentation: cacheannounce Application
* \section Readme_cacheannounce Readme file
* \verbinclude Readme.cacheannounce
*
* \section Links
* Back to \ref AppDoc, to \ref AppDocExample.
*/
/*! \page ModuleDoc_db_announce Module Documentation: db_announce Application
* \section Readme_db_announce Readme file
* \verbinclude Readme.db_announce
*
* \section Links
* Back to \ref AppDoc, to \ref AppDocExample.
*/
/*! \page ModuleDoc_di_dialer Module Documentation: di_dialer Application
* \section Readme_di_dialer Readme file
* \verbinclude Readme.di_dial
*
* \section Links
* Back to \ref AppDoc, to \ref AppDocExample.
*/
/*! \page ModuleDoc_di_log Module Documentation: di_log Application
* \section Readme_di_log Readme file
* \verbinclude Readme.di_log
*
* \section Links
* Back to \ref AppDoc, to \ref AppDocExample.
*/
/*! \page ModuleDoc_call_gen Module Documentation: call_gen Application
* \section Readme_call_gen Readme file
* \verbinclude Readme.call_gen
*
* \section Links
* Back to \ref AppDoc, to \ref AppDocExample.
*/
/*! \page ModuleDoc_jukecall Module Documentation: jukecall Application
* \section Readme_jukecall Readme file
* \verbinclude Readme.jukecall
*
* \section Links
* Back to \ref AppDoc, to \ref AppDocExample.
*/
/*! \page ModuleDoc_mixin_announce Module Documentation: mixin_announce Application
* \section Readme_mixin_announce Readme file
* \verbinclude Readme.mixin_announce
*
* \section Links
* Back to \ref AppDoc, to \ref AppDocExample.
*/
/*! \page ModuleDoc_pinauthconference Module Documentation: pinauthconference example Application
* \section Readme_pinauthconference Readme file
* \verbinclude Readme.pinauthconference
*
* \section Links
* Back to \ref AppDoc, to \ref AppDocExample.
*/
/*! \page ModuleDoc_serviceline Module Documentation: serviceline example Application
* \section Readme_serviceline Readme file
* \verbinclude Readme.serviceline
*
* \section Links
* Back to \ref AppDoc, to \ref AppDocExample.
*/
/*! \page ModuleDoc_early_record Module Documentation: early_record example Application
* \section Readme_early_record Readme file
* \verbinclude Readme.earlyrecord
*
* \section Links
* Back to \ref AppDoc, to \ref AppDocExample.
*/
/*! \page ModuleDoc_dtmftester Module Documentation: dtmftester example Application
* \section Readme_dtmftester Readme file
* \verbinclude Readme.dtmftester
*
* \section Links
* Back to \ref AppDoc, to \ref AppDocExample.
*/
/*! \page ModuleDoc_simple_conference Module Documentation: simple_conference example Application
* \section Readme_simple_conference Readme file
* \verbinclude Readme.simple_conference
*
* \section Links
* Back to \ref AppDoc, to \ref AppDocExample.
*/