2 * Asterisk -- An open source telephony toolkit.
4 * Copyright (C) 1999 - 2012, Digium, Inc.
6 * See http://www.asterisk.org for more information about
7 * the Asterisk project. Please do not directly contact
8 * any of the maintainers of this project for assistance;
9 * the project provides a web site, mailing lists and IRC
10 * channels for your use.
12 * This program is free software, distributed under the terms of
13 * the GNU General Public License Version 2. See the LICENSE file
14 * at the top of the source tree.
20 * This is the main header file used for generating miscellaneous documentation
21 * using Doxygen. This also utilizes the documentation in
22 * include/asterisk/doxygen/ header files.
26 * The following is for Doxygen Developer's documentation generated
27 * by running "make progdocs" with doxygen installed on your
32 * \page DevDoc Asterisk Developer's Documentation - Appendices
34 * \section devpolicy Development and Release Policies
35 * \arg \ref CodeGuide : The must-read document for all developers
36 * \arg \ref CommitMessages : Information on formatting and special tags for commit messages
37 * \arg \ref ReleaseStatus : The current support level for various Asterisk releases
38 * \arg \ref ReleasePolicies : Asterisk Release and Commit Policies
39 * \arg \ref Reviewboard : Reviewboard Usage and Guidelines
40 * \arg \ref MantisWorkflow : Workflow Guidelines for Asterisk Open Source Issue Tracker
41 * \arg \ref AsteriskGitHowto : How to setup a local GIT mirror of the Asterisk SVN repository
42 * \arg \ref AstCREDITS : A Thank You to contributors (unfortunately out of date)
44 * \section apisandinterfaces Asterisk APIs and Interfaces
46 * \arg \ref AstAPIChanges
47 * \arg \ref Def_Channel : What's a channel, anyway?
48 * \arg \ref channel_drivers : Existing channel drivers
49 * \arg \ref AstAMI : The Call management socket API
50 * \arg \ref AstARA : A generic data storage and retrieval API for Asterisk
51 * \arg \ref AstDUNDi : A way to find phone services dynamically by using the DUNDi protocol
52 * \arg \ref AJI_intro : The Asterisk Jabber Interface
56 * \arg \ref AstENUM : The IETF way to redirect from phone numbers to VoIP calls
60 * \section debugconfig Debugging and Configuration References
61 * \arg \ref AstREADME : General Administrator README file
62 * \arg \ref AstDebug : Hints on debugging
64 * \arg \ref ConfigFiles
65 * \arg \ref SoundFiles included in the Asterisk distribution
67 * \section weblinks Web sites
68 * \arg \b Main: Asterisk Developer's website http://www.asterisk.org/developers/
69 * \arg \b Bugs: The Issue Tracker https://issues.asterisk.org
70 * \arg \b Lists: List Server http://lists.digium.com
71 * \arg \b Wiki: The Asterisk Wiki http://wiki.asterisk..org
72 * \arg \b Docs: The Asterisk Documentation Project http://www.asteriskdocs.org
73 * \arg \b Digium: The Asterisk Company http://www.digium.com
77 * \page CodeGuide Coding Guidelines
78 * \AsteriskTrunkWarning
79 * \section Coding Guidelines
80 * This file is in the /doc directory in your Asterisk source tree.
81 * Make sure to stay up to date with the latest guidelines.
82 * \verbinclude CODING-GUIDELINES
86 * \page AstAPI Asterisk API
87 * \section Asteriskapi Asterisk API
88 * Some generic documents on the Asterisk architecture
90 * \arg \ref AstThreadStorage
91 * \arg \ref DataStores
92 * \arg \ref AstExtState
93 * \arg \ref AstDataRetrieval
95 * \subsection channel_txt Channels
96 * \arg See \ref Def_Channel
100 * \page AstAPIChanges Asterisk API Changes
102 * \section Changes161 Version 1.6.1
103 * \li ast_install_vm_functions()
104 * \li vmwi_generate()
105 * \li ast_channel_datastore_alloc()
106 * \li ast_channel_datastore_free()
107 * \li ast_channel_cmpwhentohangup()
108 * \li ast_channel_setwhentohangup()
109 * \li ast_settimeout()
110 * \li ast_datastore_alloc()
111 * \li ast_datastore_free()
112 * \li ast_device_state_changed()
113 * \li ast_device_state_changed_literal()
114 * \li ast_dnsmgr_get()
115 * \li ast_dnsmgr_lookup()
116 * \li ast_dsp_set_digitmode()
118 * \li ast_event_unsubscribe()
119 * \li localized_context_find_or_create()
120 * \li localized_merge_contexts_and_delete()
121 * \li ast_console_puts_mutable()
122 * \li ast_rtp_get_quality()
123 * \li ast_tcptls_client_start()
124 * \li ast_tcptls_server_start()
125 * \li ast_tcptls_server_stop()
127 * \section Changes162 Version 1.6.2
129 * \section Changes18 Version 1.8
130 * \li ast_channel_alloc()
134 * \page AstDebug Debugging
135 * \section debug Debugging
136 * \todo include backtrace txt that was removed
140 * \page AstSpeech The Generic Speech Recognition API
141 * \section debug The Generic Speech Recognition API
142 * \todo include missing speechrec txt
146 * \page DataStores Channel Data Stores
147 * \section debug Channel Data Stores
148 * \todo include missing datastores txt
152 * \page AstAMI AMI - The Manager Interface
153 * \section ami AMI - The manager Interface
154 * \arg \link Config_ami Configuration file \endlink
155 * \arg \ref manager.c
156 * \todo include missing manager txt
160 * \page AstARA ARA - The Asterisk Realtime Interface
161 * \section realtime ARA - a generic API to storage and retrieval
162 * Implemented in \ref config.c
163 * Implemented in \ref pbx_realtime.c
164 * \todo include missing realtime txt
165 * \todo include missing extconfig txt
169 * \page AstDUNDi DUNDi
171 * DUNDi is a peer-to-peer system for locating Internet gateways to telephony
172 * services. Unlike traditional centralized services (such as the remarkably
173 * simple and concise ENUM standard), DUNDi is fully-distributed with no
174 * centralized authority whatsoever.
176 * DUNDi is not itself a Voice-over IP signaling or media protocol. Instead,
177 * it publishes routes which are in turn accessed via industry standard
178 * protocols such as IAX, SIP and H.323.
181 * \arg DUNDi is documented at http://www.dundi.com
182 * \arg Implemented in \ref pbx_dundi.c and \ref dundi-parser.c
183 * \arg Configuration in \link Config_dun dundi.conf \endlink
187 * \page AstCDR CDR - Call Data Records and billing
188 * \section cdr Call Data Records
191 * \arg \ref cdr_drivers
192 * \arg \ref Config_cdr CDR configuration files
194 * \todo include missing cdrdriver txt
198 * \page AstREADME README
199 * \verbinclude README
203 * \page AstCREDITS CREDITS
204 * \verbinclude CREDITS
208 * \page AstVideo Video support in Asterisk
209 * \section sectAstVideo Video support in Asterisk
210 * \todo include missing video txt
214 * \page AstVar Globally predefined channel variables
215 * \section globchan Globally predefined channel variables
217 * More and more of these variables are being replaced by dialplan functions.
218 * Some still exist though and some that does still exist needs to move to
219 * dialplan functions.
222 * - \ref pbx_retrieve_variable()
228 * \page AstChanVar Asterisk Dialplan Variables
229 * Asterisk Dialplan variables are divided into three groups:
230 * - Predefined global variables, handled by the PBX core
231 * - Global variables, that exist for the duration of the pbx execution
232 * - Channel variables, that exist during a channel
234 * Global variables are reachable in all channels, all of the time.
235 * Channel variables are only reachable within the channel.
237 * For more information on the predefined variables, see \ref AstVar
239 * Global and Channel variables:
240 * - Names are Case insensitive
241 * - Names that start with a character, but are alphanumeric
242 * - Global variables are defined and reached with the GLOBAL() dialplan function
243 * and the set application, like
245 * exten => 1234,1,set(GLOBAL(myvariable)=tomteluva)
247 * - \ref func_global.c
249 * - Channel variables are defined with the set() dialplan application
251 * exten => 1234,1,set(xmasattribute=tomtegröt)
253 * - Some channels also supports setting channel variables with the \b setvar=
254 * configuraiton option for a device or line.
256 * \section AstChanVar_globalvars Global Variables
257 * Global variables can also be set in the [globals] section of extensions.conf. The
258 * setting \b clearglobalvars in extensions.conf [general] section affects whether
259 * or not the global variables defined in \b globals are reset at dialplan reload.
261 * There are CLI commands to change and read global variables. This can be handy
262 * to reset counters at midnight from an external script.
264 * \section AstChanVar_devnotes Developer notes
265 * Variable handling is managed within \ref pbx.c
266 * You need to include pbx.h to reach these functions.
267 * - \ref pbx_builtin_setvar_helper()
268 * - \ref pbx_builtin_getvar_helper()
270 * The variables is a linked list stored in the channel data structure
271 * with the list starting at varshead in struct ast_channel
276 * \section enumreadme ENUM
277 * \arg Configuration: \ref Config_enum
279 * \arg \ref func_enum.c
284 * \page ConfigFiles Configuration files
285 * \section config Main configuration files
286 * \arg \link Config_ast asterisk.conf - the main configuration file \endlink
287 * \arg \link Config_ext extensions.conf - The Dial Plan \endlink
288 * \arg \link Config_mod modules.conf - which modules to load and not to load \endlink
289 * \arg \link Config_fea features.conf - call features (transfer, parking, etc) \endlink
290 * \section chanconf Channel configuration files
291 * \arg \link Config_iax IAX2 configuration \endlink
292 * \arg \link Config_sip SIP configuration \endlink
293 * \arg \link Config_mgcp MGCP configuration \endlink
294 * \arg \link Config_rtp RTP configuration \endlink
295 * \arg \link Config_dahdi DAHDI configuration \endlink
296 * \arg \link Config_oss OSS (sound card) configuration \endlink
297 * \arg \link Config_alsa ALSA (sound card) configuration \endlink
298 * \arg \link Config_agent Agent (proxy channel) configuration \endlink
299 * \arg \link Config_misdn MISDN Experimental ISDN BRI channel configuration \endlink
300 * \arg \link Config_h323 H.323 configuration \endlink
301 * \section appconf Application configuration files
302 * \arg \link Config_mm Meetme (conference bridge) configuration \endlink
303 * \arg \link Config_qu Queue system configuration \endlink
304 * \arg \link Config_vm Voicemail configuration \endlink
305 * \arg \link Config_followme Followme configuration \endlink
306 * \section cdrconf CDR configuration files
307 * \arg \link Config_cdr CDR configuration \endlink
308 * \arg \link cdr_csv Default CDR driver configuration \endlink
309 * \arg \link cdr_custom Custom CDR driver configuration \endlink
310 * \arg \link cdr_ami Manager CDR driver configuration \endlink
311 * \arg \link cdr_odbc ODBC CDR driver configuration \endlink
312 * \arg \link cdr_adaptive_odbc Adaptive ODBC CDR driver configuration \endlink
313 * \arg \link cdr_pgsql PostgreSQL CDR driver configuration \endlink
314 * \arg \link cdr_radius RADIUS CDR driver configuration \endlink
315 * \arg \link cdr_sqlite SQLite 2 CDR driver configuration \endlink
316 * \arg \link cdr_sqlite3_custom SQLite 3 CDR driver configuration \endlink
317 * \arg \link cdr_syslog Syslog CDR driver configuration \endlink
318 * \arg \link cdr_tds FreeTDS CDR driver configuration (Microsoft SQL Server) \endlink
319 * \section miscconf Miscellenaous configuration files
320 * \arg \link Config_adsi ADSI configuration \endlink
321 * \arg \link Config_ami AMI - Manager configuration \endlink
322 * \arg \link Config_ara Realtime configuration \endlink
323 * \arg \link Config_codec Codec configuration \endlink
324 * \arg \link Config_dun DUNDi configuration \endlink
325 * \arg \link Config_enum ENUM configuration \endlink
326 * \arg \link Config_moh Music on Hold configuration \endlink
327 * \arg \link Config_vm Voicemail configuration \endlink
328 * \arg \link res_config_sqlite SQLite Resource driver configuration \endlink
332 * \page Config_ast Asterisk.conf
336 * \page Config_mod Modules configuration
337 * All res_ resource modules are loaded with globals on, which means
338 * that non-static functions are callable from other modules.
340 * If you want your non res_* module to export functions to other modules
341 * you have to include it in the [global] section.
342 * \verbinclude modules.conf.sample
346 * \page Config_fea Call features configuration
348 * \arg \ref features.c : Call feature implementation
349 * \section featconf features.conf
350 * \verbinclude features.conf.sample
354 * \page Config_followme Followme: An application for simple follow-me calls
355 * \section followmeconf Followme.conf
356 * - See app_followme.c
357 * \verbinclude followme.conf.sample
361 * \page Config_ext Extensions.conf - the Dial Plan
362 * \section dialplan Extensions.conf
363 * \verbinclude extensions.conf.sample
367 * \page Config_iax IAX2 configuration
368 * IAX2 is implemented in \ref chan_iax2.c
369 * \arg \link Config_iax iax.conf Configuration file example \endlink
370 * \section iaxreadme IAX readme file
371 * \section Config_iax IAX Configuration example
372 * \verbinclude iax.conf.sample
373 * \section iaxjitter IAX Jitterbuffer information
377 * \page Config_iax IAX configuration
378 * \arg Implemented in \ref chan_iax2.c
379 * \section iaxconf iax.conf
380 * \verbinclude iax.conf.sample
384 * \page Config_sip SIP configuration
385 * Also see \ref Config_rtp RTP configuration
386 * \arg Implemented in \ref chan_sip.c
387 * \section sipconf sip.conf
388 * \verbinclude sip.conf.sample
390 * \arg \b Back \ref chanconf
394 * \page Config_mgcp MGCP configuration
395 * Also see \ref Config_rtp RTP configuration
396 * \arg Implemented in \ref chan_mgcp.c
397 * \section mgcpconf mgcp.conf
398 * \verbinclude mgcp.conf.sample
402 * \page README_misdn MISDN documentation
403 * \arg See \ref Config_misdn
404 * \section mISDN configuration
408 * \page Config_misdn MISDN configuration
409 * \arg Implemented in \ref chan_misdn.c
410 * \arg \ref README_misdn
411 * \arg See the mISDN home page: http://www.isdn4linux.de/mISDN/
412 * \section misdnconf misdn.conf
413 * \verbinclude misdn.conf.sample
417 * \page Config_vm VoiceMail configuration
418 * \section vmconf voicemail.conf
419 * \arg Implemented in \ref app_voicemail.c
420 * \verbinclude voicemail.conf.sample
424 * \page Config_dahdi DAHDI configuration
425 * \section dahdiconf dahdi.conf
426 * \arg Implemented in \ref chan_dahdi.c
427 * \verbinclude dahdi.conf.sample
431 * \page Config_h323 H.323 channel driver information
432 * This is the configuration of the H.323 channel driver within the Asterisk
433 * distribution. There's another one, called OH323, in asterisk-addons
434 * \arg Implemented in \ref chan_h323.c
435 * \section h323conf h323.conf
440 * \page Config_oss OSS configuration
441 * \section ossconf oss.conf
442 * \arg Implemented in \ref chan_oss.c
443 * \verbinclude oss.conf.sample
447 * \page Config_alsa ALSA configuration
448 * \section alsaconf alsa.conf
449 * \arg Implemented in \ref chan_alsa.c
450 * \verbinclude alsa.conf.sample
454 * \page Config_agent Agent configuration
455 * \section agentconf agents.conf
456 * The agent channel is a proxy channel for queues
457 * \arg Implemented in \ref chan_agent.c
458 * \verbinclude agents.conf.sample
462 * \page Config_rtp RTP configuration
463 * \arg Implemented in \ref rtp.c
464 * Used in \ref chan_sip.c and \ref chan_mgcp.c (and various H.323 channels)
465 * \section rtpconf rtp.conf
466 * \verbinclude rtp.conf.sample
470 * \page Config_dun DUNDi Configuration
471 * \arg See also \ref AstDUNDi
472 * \section dundiconf dundi.conf
473 * \verbinclude dundi.conf.sample
477 * \page Config_enum ENUM Configuration
478 * \section enumconf enum.conf
479 * \arg See also \ref enumreadme
480 * \arg Implemented in \ref func_enum.c and \ref enum.c
481 * \verbinclude enum.conf.sample
485 * \page cdr_csv Default CDR driver configuration
488 * \arg Implemented in \ref cdr_csv.c
489 * \verbinclude cdr.conf.sample
493 * \page cdr_custom Custom CDR Configuration
496 * \arg Implemented in \ref cdr_custom.c
497 * \verbinclude cdr_custom.conf.sample
501 * \page cdr_ami Manager CDR driver configuration
505 * \arg Implemented in \ref cdr_manager.c
506 * \verbinclude cdr_manager.conf.sample
510 * \page cdr_odbc ODBC CDR driver configuration
511 * \arg See also \ref cdrconf
512 * \arg Implemented in \ref cdr_odbc.c
513 * \verbinclude cdr_odbc.conf.sample
515 * \arg http://www.unixodbc.org
519 * \page cdr_odbc Adaptive ODBC CDR driver configuration
520 * \li See also \ref cdrconf
521 * \verbinclude cdr_adaptive_odbc.conf.sample
523 * \arg http://www.unixodbc.org
527 * \page cdr_pgsql PostgreSQL CDR driver configuration
528 * \arg See also \ref cdrconf
529 * \arg Implemented in \ref cdr_pgsql.c
531 * \arg http://www.postgresql.org
532 * \verbinclude cdr_pgsql.conf.sample
536 * \page cdr_sqlite SQLite 2 CDR driver configuration
537 * \arg See also \ref cdrconf
538 * \arg Implemented in \ref cdr_sqlite.c
540 * \arg http://www.sqlite.org
544 * \page cdr_sqlite3_custom SQLite 3 CDR driver configuration
545 * \arg See also \ref cdrconf
546 * \arg Implemented in \ref cdr_sqlite3_custom.c
548 * \arg http://www.sqlite.org
549 * \verbinclude cdr_sqlite3_custom.conf.sample
553 * \page cdr_syslog Syslog CDR driver configuration
554 * \arg See also \ref cdrconf
555 * \arg \ref cdr_syslog.c
556 * \verbinclude cdr_syslog.conf.sample
560 * \page cdr_tds FreeTDS CDR driver configuration
561 * \arg See also \ref cdrconf
563 * \arg http://www.freetds.org
564 * \verbinclude cdr_tds.conf.sample
568 * \page Config_cdr CDR configuration
570 * \arg \ref cdr_drivers
571 * \arg \link Config_cdr CDR configuration \endlink
572 * \arg \link cdr_csv Default CDR driver configuration \endlink
573 * \arg \link cdr_custom Custom CDR driver configuration \endlink
574 * \arg \link cdr_ami Manager CDR driver configuration \endlink
575 * \arg \link cdr_odbc ODBC CDR driver configuration \endlink
576 * \arg \link cdr_adaptive_odbc Adaptive ODBC CDR driver configuration \endlink
577 * \arg \link cdr_pgsql PostgreSQL CDR driver configuration \endlink
578 * \arg \link cdr_radius RADIUS CDR driver configuration \endlink
579 * \arg \link cdr_sqlite SQLite 2 CDR driver configuration \endlink
580 * \arg \link cdr_sqlite3_custom SQLite 3 CDR driver configuration \endlink
581 * \arg \link cdr_syslog Syslog CDR driver configuration \endlink
582 * \arg \link cdr_tds FreeTDS CDR driver configuration (Microsoft SQL Server) \endlink
583 * \verbinclude cdr.conf.sample
587 * \page Config_moh Music on Hold Configuration
588 * \arg Implemented in \ref res_musiconhold.c
589 * \section mohconf musiconhold.conf
590 * \verbinclude musiconhold.conf.sample
594 * \page Config_adsi ADSI Configuration
595 * \section adsiconf adsi.conf
596 * \verbinclude adsi.conf.sample
600 * \page Config_codec CODEC Configuration
601 * \section codecsconf codecs.conf
602 * \verbinclude codecs.conf.sample
606 * \page Config_ara REALTIME Configuration
607 * \arg See also: \arg \link AstARA \endlink
608 * \section extconf extconfig.conf
609 * \verbinclude extconfig.conf.sample
613 * \page Config_ami AMI configuration
614 * \arg See also: \arg \link AstAMI \endlink
615 * \section amiconf manager.conf
616 * \verbinclude manager.conf.sample
620 * \page Config_qu ACD - Queue system configuration
621 * \arg Implemented in \ref app_queue.c
622 * \section quconf queues.conf
623 * \verbinclude queues.conf.sample
627 * \page Config_mm Meetme - The conference bridge configuration
628 * \arg Implemented in \ref app_meetme.c
629 * \section mmconf meetme.conf
630 * \verbinclude meetme.conf.sample
634 * \page SoundFiles Sound files
635 * \section SecSound Asterisk Sound files
636 * Asterisk includes a large number of sound files. Many of these
637 * are used by applications and demo scripts within asterisk.
639 * Additional sound files are available in the asterisk-addons
640 * repository on svn.digium.com
644 * \page AstHTTP AMI over HTTP support
645 * The http.c file includes support for manager transactions over
647 * \section ami AMI - The manager Interface
648 * \arg \link Config_ami Configuration file \endlink
652 * \page res_config_sqlite SQLite Resource driver configuration
653 * \arg Implemented in \ref res_config_sqlite.c
654 * \arg Configuration file:
655 * \verbinclude res_config_sqlite.conf
658 * http://www.sqlite.org
666 * \addtogroup cdr_drivers Module: CDR Drivers
667 * \section CDR_generic Asterisk CDR Drivers
668 * \brief CDR drivers are loaded dynamically, each loaded CDR driver produce
669 * a billing record for each call.
670 * \arg \ref Config_mod "Modules Configuration"
671 * \arg \ref Config_cdr "CDR Configuration"
675 * \addtogroup channel_drivers Module: Asterisk Channel Drivers
676 * \section channel_generic Asterisk Channel Drivers
677 * \brief Channel drivers are loaded dynamically.
678 * \arg \ref Config_mod "Modules Configuration"
682 * \addtogroup applications Module: Dial plan applications
683 * \section app_generic Asterisk Dial Plan Applications
684 * \brief Applications support the dialplan. They register dynamically with
685 * \see ast_register_application() and unregister with
686 * \see ast_unregister_application()
688 * \arg \ref functions
692 * \addtogroup functions Module: Dial plan functions
693 * \section func_generic Asterisk Dial Plan Functions
694 * \brief Functions support the dialplan. They do not change any property of a channel
695 * or touch a channel in any way.
697 * \arg \ref applications
702 * \addtogroup codecs Module: Codecs
703 * \section codec_generic Asterisk Codec Modules
704 * Codecs are referenced in configuration files by name
710 * \addtogroup formats Module: Media File Formats
711 * \section codec_generic Asterisk Format drivers
712 * Formats are modules that read or write media files to disk.
718 * \addtogroup rtp_engines Module: RTP Engines
719 * \section rtp_engine_blah Asterisk RTP Engines