Application Modules in Asterisk

Application Modules in Asterisk

Dialplan applications are used in extensions.conf to define the various actions that can be applied to a call. The Dial() application, for example, is responsible for making outgoing connections to external resources and is arguably the most important dialplan application.

NamePurposePopularity/Status
app_adsiprogLoads Analog Display Services Interface (ADSI) scripts into compatible analog phonesInsignificant
app_alarmreceiverSupports receipt of reports from alarm equipmentInsignificant
app_amdDetects answering machinesUnreliable
app_authenticateCompares dual-tone multi-frequency (DTMF) input against a provided string (password)Useful
app_cdrWrites ad hoc record to CDRUseful
app_celgenusereventGenerates user-defined events for CELNew
app_chanisavailChecks the status of a channelUnreliable
app_channelredirectForces another channel into a different part of the dialplanUseful
app_chanspyAllows a channel to listen to audio on another channelUseful
app_confbridgeProvides conferencing (new version)New—not fully featured yet
app_controlplaybackPlays back a prompt and offers fast forward and rewind functionsUseful
app_dahdibargeAllows barging in on a DAHDI channelDeprecated—see app_chanspy
app_dahdirasCreates a RAS server over a DAHDI channel (no modem emulation)Insignificant
app_dbUsed to add/change/delete records in Asterisk’s built-in Berkeley databaseDeprecated—see func_db
app_dialUsed to connect channels together (i.e., make phone calls)Essential
app_dictatePlays back a recording and offers start/stop functionsUseful
app_directed_pickupAnswers a call for another extensionUseful
app_directoryPresents the list of names from voicemail.confUseful
app_disaProvides dialtone and accepts DTMF inputUseful
app_dumpchanDumps channel variables to Asterisk command-line interface (CLI)Useful
app_echoLoops received audio back to source channelUseful
app_execContains Exec()TryExec(), and ExecIf(); executes a dialplan application based on conditionsUseful
app_externalivrControls Asterisk as with an AGI, only asynchronouslyUseful
app_faxProvides SendFax() and ReceiveFax()Useful
app_festivalEnables basic text to speech using Festival TTS engineUsable
app_flashPerforms a hook-switch flash on channels (primarily analog)Useful
app_followmePerforms find me/follow me functionality based on followme.confUseful
app_forkcdrStarts new CDR record on current callUsable
app_getcpeidGets the ADSI CPE IDInsignificant
app_icesSends audio to an Icecast serverUsable
app_imageTransmits an image to supported devicesLimited
app_ivrdemoSample application for developersInsignificant
app_jackWorks with JACK Audio Connection Kit to share audio between compatible applicationsUseful
app_macroTriggers dialplan macrosDeprecated—see GoSub()
app_meetmeProvides multiparty conferencingUseful—fully featured
app_milliwattGenerates 1004-Hz tone for testing loss on analog circuitsUseful
app_minivmProvides primitive functions to allow you to build your own voicemail application in dialplanUsable
app_mixmonitorRecords both sides of a call and mixes them togetherUseful
app_morsecodeGenerates Morse codeUsable
app_mp3Uses mpg123 to play an MP3Insignificant
app_nbscatStreams audio from Network Broadcast Stream (NBS)Insignificant
app_originateAllows origination of a callUseful
app_osplookupPerforms Open Settlement Protocol (OSP) lookupUsable
app_pageCreates multiple audio connections to specified devices for public address (paging)Useful
app_parkandannounceEnables automated announcing of parked callsUsable
app_playbackPlays a file to the channel (does not accept input)Useful
app_playtonesPlays pairs of tones of specified frequenciesUseful
app_privacyRequests input of caller’s phone number if no CallerID is receivedInsignificant
app_queueProvides Automatic Call Distribution (ACD)Useful
app_readRequests input of digits from callers and assigns input to a variableUseful
app_readextenRequests input of digits from callers and passes call to a designated extension and contextUsable
app_readfileLoads contents of a text file into a channel variableDeprecated—see the FILE() function infunc_env
app_recordRecords received audio to a fileUseful
app_rptProvides a method to interface with an audio board for the app_rpt projectLimited
app_sayunixtimePlays back time in specified formatUseful
app_senddtmfTransmits DTMF to calling partyUseful
app_sendtextSends a text string to compatible channelsInsignificant
app_setcalleridSets CallerID on a channelDeprecated—seefunc_callerid
app_skelSample application for developersUseful
app_smsSends SMS message in compatible countriesLimited
app_softhangupRequests hangup of channelUseful
app_speech_utilsProvides utilities relating to speech recognitionUseful
app_stackProvides Gosub()GoSubIf()Return()StackPop()LOCAL(), and LOCAL_PEEK()Essential
app_systemExecutes commands in a Linux shellUseful
app_talkdetectSimilar to app_background, but allows for any received audio to interrupt playbackUseful
app_testClient/server testing applicationUsable
app_transferPerforms a transfer on the current channelUseful
app_urlPasses a URI to the called channelLimited
app_usereventGenerates a custom event in the Asterisk Manager Interface (AMI)Useful
app_verboseGenerates a custom event in the Asterisk CLIUseful
app_voicemailProvides voicemailEssential
app_waitforringWaits for a RING signaling event (not to be confused with RINGING); most likely unnecessary, as only chan_dahdi with analog channels where ringing is received (such as an FXO port) generates the RING signaling eventInsignificant
app_waitforsilenceIncludes WaitForSilence() and WaitForNoise(); listens to the incoming channel for a specified number of milliseconds of noise/silenceUseful
app_waituntilWaits until current Linux epoch matches specified epochUseful
app_whileIncludes While()EndWhile()ExitWhile(), and ContinueWhile(); provides while-loop functionality in the dialplanUseful
app_zapatellerGenerates SIT tone to discourage telemarketersUsable

 

Bridging Modules

Bridging modules are new in Asterisk 1.8: they perform the actual bridging of channels in the new bridging API. Each provides different features, which get used in different situations depending on what a bridge needs.

 

NamePurposePopularity/Status
bridge_builtin_featuresPerforms bridging when utilizing built-in user features (such as those found in features.conf).New
bridge_multiplexedPerforms complex multiplexing, as would be required in a large conference room (multiple participants). Currently only used by app_confbridge.New
bridge_simplePerforms simple channel-to-channel bridging.New
bridge_softmixPerforms simple multiplexing, as would be required in a large conference room (multiple participants). Currently only used by app_confbridge.New