Return a dial string for dialing all contacts on an AOR.
Name of the endpointName of an AOR to use, if not specified the configured AORs on the endpoint are usedOptional request user to use in the request URIReturns a properly formatted dial string for dialing all contacts on an AOR.
Media and codec offerings to be set on an outbound SIP channel prior to dialing.
types of media offeredWhen read, returns the codecs offered based upon the media choice.When written, sets the codecs to offer when an outbound dial attempt is made,
or when a session refresh is sent using PJSIP_SEND_SESSION_REFRESH.
PJSIP_SEND_SESSION_REFRESH
Get or change the DTMF mode for a SIP call.
When read, returns the current DTMF modeWhen written, sets the current DTMF modeThis function uses the same DTMF mode naming as the dtmf_mode configuration option
W/O: Initiate a session refresh via an UPDATE or re-INVITE on an established media session
The type of update to send. Default is invite.Send the session refresh as a re-INVITE.Send the session refresh as an UPDATE.This function will cause the PJSIP stack to immediately refresh
the media session for the channel. This will be done using either a
re-INVITE (default) or an UPDATE request.
This is most useful when combined with the PJSIP_MEDIA_OFFER
dialplan function, as it allows the formats in use on a channel to be
re-negotiated after call setup.The formats the endpoint supports are not
checked or enforced by this function. Using this function to offer
formats not supported by the endpoint may result
in a loss of media.
; Within some existing extension on an answered channel
same => n,Set(PJSIP_MEDIA_OFFER(audio)=!all,g722)
same => n,Set(PJSIP_SEND_SESSION_REFRESH()=invite)
PJSIP_MEDIA_OFFERR/O Retrieve media related information.When rtp is specified, the
type parameter must be provided. It specifies
which RTP parameter to read.Retrieve the local address for RTP.Retrieve the remote address for RTP.If direct media is enabled, this address is the remote address
used for RTP.Whether or not the media stream is encrypted.The media stream is not encrypted.The media stream is encrypted.Whether or not the media stream is currently restricted
due to a call hold.The media stream is not held.The media stream is held.When rtp is specified, the
media_type parameter may be provided. It specifies
which media stream the chosen RTP parameter should be retrieved
from.Retrieve information from the audio media stream.If not specified, audio is used
by default.Retrieve information from the video media stream.R/O Retrieve RTCP statistics.When rtcp is specified, the
statistic parameter must be provided. It specifies
which RTCP statistic parameter to read.Retrieve a summary of all RTCP statistics.The following data items are returned in a semi-colon
delineated list:Our Synchronization Source identifierTheir Synchronization Source identifierOur lost packet countReceived packet jitterReceived packet countTransmitted packet jitterTransmitted packet countRemote lost packet countRound trip timeRetrieve a summary of all RTCP Jitter statistics.The following data items are returned in a semi-colon
delineated list:Our minimum jitterOur max jitterOur average jitterOur jitter standard deviationTheir minimum jitterTheir max jitterTheir average jitterTheir jitter standard deviationRetrieve a summary of all RTCP packet loss statistics.The following data items are returned in a semi-colon
delineated list:Our minimum lost packetsOur max lost packetsOur average lost packetsOur lost packets standard deviationTheir minimum lost packetsTheir max lost packetsTheir average lost packetsTheir lost packets standard deviationRetrieve a summary of all RTCP round trip time information.The following data items are returned in a semi-colon
delineated list:Minimum round trip timeMaximum round trip timeAverage round trip timeStandard deviation round trip timeTransmitted packet countReceived packet countTransmitted packet jitterReceived packet jitterTheir max jitterTheir minimum jitterTheir average jitterTheir jitter standard deviationOur max jitterOur minimum jitterOur average jitterOur jitter standard deviationTransmitted packet lossReceived packet lossTheir max lost packetsTheir minimum lost packetsTheir average lost packetsTheir lost packets standard deviationOur max lost packetsOur minimum lost packetsOur average lost packetsOur lost packets standard deviationRound trip timeMaximum round trip timeMinimum round trip timeAverage round trip timeStandard deviation round trip timeOur Synchronization Source identifierTheir Synchronization Source identifierWhen rtcp is specified, the
media_type parameter may be provided. It specifies
which media stream the chosen RTCP parameter should be retrieved
from.Retrieve information from the audio media stream.If not specified, audio is used
by default.Retrieve information from the video media stream.R/O The name of the endpoint associated with this channel.
Use the PJSIP_ENDPOINT function to obtain
further endpoint related information.R/O The name of the contact associated with this channel.
Use the PJSIP_CONTACT function to obtain
further contact related information. Note this may not be present and if so
is only available on outgoing legs.R/O The name of the AOR associated with this channel.
Use the PJSIP_AOR function to obtain
further AOR related information. Note this may not be present and if so
is only available on outgoing legs.R/O Obtain information about the current PJSIP channel and its
session.When pjsip is specified, the
type parameter must be provided. It specifies
which signalling parameter to read.The SIP call-id.Whether or not the signalling uses a secure transport.The signalling uses a non-secure transport.The signalling uses a secure transport.The contact URI where requests are sent.The local URI.Tag in From headerThe remote URI.Tag in To headerThe request URI of the incoming INVITE
associated with the creation of this channel.The current state of any T.38 fax on this channel.T.38 faxing is disabled on this channel.Asterisk has sent a re-INVITE to the remote end to initiate a T.38 fax.The remote end has sent a re-INVITE to Asterisk to initiate a T.38 fax.A T.38 fax session has been enabled.A T.38 fax session was attempted but was rejected.On inbound calls, the full IP address and port number that
the INVITE request was received on. On outbound
calls, the full IP address and port number that the INVITE
request was transmitted from.On inbound calls, the full IP address and port number that
the INVITE request was received from. On outbound
calls, the full IP address and port number that the INVITE
request was transmitted to.
; Log the current Call-ID
same => n,Log(NOTICE, ${CHANNEL(pjsip,call-id)})
; Log the destination address of the audio stream
same => n,Log(NOTICE, ${CHANNEL(rtp,dest)})
; Store the round-trip time associated with a
; video stream in the CDR field video-rtt
same => n,Set(CDR(video-rtt)=${CHANNEL(rtcp,rtt,video)})
R/O Get the IP address of the peer.R/O Get the source IP address of the peer.R/O Get the source port of the peer.R/O Get the URI from the From: header.R/O Get the URI from the Contact: header.R/O Get the Request-URI from the INVITE header.R/O Get the useragent.R/O Get the name of the peer.R/O 1 if T38 is offered or enabled in this channel,
otherwise 0R/O Get QOS information about the RTP stream This option takes two additional arguments: Argument 1:audio Get data about the audio streamvideo Get data about the video streamtext Get data about the text stream Argument 2:local_ssrc Local SSRC (stream ID)local_lostpackets Local lost packetslocal_jitter Local calculated jitterlocal_maxjitter Local calculated jitter (maximum)local_minjitter Local calculated jitter (minimum)local_normdevjitterLocal calculated jitter (normal deviation)local_stdevjitter Local calculated jitter (standard deviation)local_count Number of received packetsremote_ssrc Remote SSRC (stream ID)remote_lostpacketsRemote lost packetsremote_jitter Remote reported jitterremote_maxjitter Remote calculated jitter (maximum)remote_minjitter Remote calculated jitter (minimum)remote_normdevjitterRemote calculated jitter (normal deviation)remote_stdevjitterRemote calculated jitter (standard deviation)remote_count Number of transmitted packetsrtt Round trip timemaxrtt Round trip time (maximum)minrtt Round trip time (minimum)normdevrtt Round trip time (normal deviation)stdevrtt Round trip time (standard deviation)all All statistics (in a form suited to logging,
but not for parsing)R/O Get remote RTP destination information. This option takes one additional argument: Argument 1:audio Get audio destinationvideo Get video destinationtext Get text destination Defaults to audio if unspecified.R/O Get source RTP destination information. This option takes one additional argument: Argument 1:audio Get audio destinationvideo Get video destinationtext Get text destination Defaults to audio if unspecified.
Send digits out of band over a PRI.
This application will send the given string of digits in a Keypad
Facility IE over the current channel.
Send an ISDN call rerouting/deflection facility message.
Destination number.Original called number.Diversion reason, if not specified defaults to unknownThis application will send an ISDN switch specific call
rerouting/deflection facility message over the current channel.
Supported switches depend upon the version of libpri in use.
Accept an R2 call if its not already accepted (you still need to answer it)
Yes or No.Whether you want to accept the call with charge or without charge.This application will Accept the R2 call either with charge or no charge.R/O DAHDI channel related to this channel.R/O DAHDI span related to this channel.R/O DAHDI channel type, one of:R/O PRI Keypad digits that came in with the SETUP message.R/O PRI Reverse Charging Indication, one of:NoneReverse Charging RequestedR/O PRI Nonzero if the channel has no B channel.
The channel is either on hold or a call waiting call.W/O Change the channel's buffer policy (for the current call only)This option takes two arguments: Number of buffers, Buffer policy being one of:fullimmediatehalfW/O Change the configuration of the active echo
canceller on the channel (if any), for the current call
only.Possible values are:on Normal mode (the echo canceller is actually reinitalized)off Disabledfax FAX/data mode (NLP disabled if possible, otherwise
completely disabled)voice Voice mode (returns from FAX mode, reverting the changes that were made)
Transfer DAHDI Channel.
DAHDI channel number to transfer.Simulate a flash hook event by the user connected to the channel.Valid only for analog channels.
Hangup DAHDI Channel.
DAHDI channel number to hangup.Simulate an on-hook event by the user connected to the channel.Valid only for analog channels.
Dial over DAHDI channel while offhook.
DAHDI channel number to dial digits.Digits to dial.Generate DTMF control frames to the bridged peer.
Toggle DAHDI channel Do Not Disturb status ON.
DAHDI channel number to set DND on.Equivalent to the CLI command "dahdi set dnd channel on".Feature only supported by analog channels.
Toggle DAHDI channel Do Not Disturb status OFF.
DAHDI channel number to set DND off.Equivalent to the CLI command "dahdi set dnd channel off".Feature only supported by analog channels.
Show status of DAHDI channels.
Specify the specific channel number to show. Show all channels if zero or not present.Similar to the CLI command "dahdi show channels".
Fully Restart DAHDI channels (terminates calls).
Equivalent to the CLI command "dahdi restart".
Show status of PRI spans.
Specify the specific span to show. Show all spans if zero or not present.Similar to the CLI command "pri show spans".
Set PRI debug levels for a span
Which span to affect.What debug level to set. May be a numerical value or a text value from the list belowEquivalent to the CLI command "pri set debug <level> span <span>".
Set the file used for PRI debug message output
Path of file to write debug output.Equivalent to the CLI command "pri set debug file <output-file>"
Disables file output for PRI debug messages
Raised when an alarm is cleared on a DAHDI channel.The DAHDI channel on which the alarm was cleared.This is not an Asterisk channel identifier.Raised when an alarm is cleared on a DAHDI span.The span on which the alarm was cleared.Raised when the Do Not Disturb state is changed on a DAHDI channel.The DAHDI channel on which DND status changed.This is not an Asterisk channel identifier.Raised when an alarm is set on a DAHDI channel.The channel on which the alarm occurred.This is not an Asterisk channel identifier.A textual description of the alarm that occurred.Raised when an alarm is set on a DAHDI span.The span on which the alarm occurred.A textual description of the alarm that occurred.Raised when a DAHDI channel is created or an underlying technology is associated with a DAHDI channel.The DAHDI span associated with this channel.The DAHDI channel associated with this channel.
Change the dtmfmode for a SIP call.
Changes the dtmfmode for a SIP call.
Add a SIP header to the outbound call.
Adds a header to a SIP call placed with DIAL.Remember to use the X-header if you are adding non-standard SIP
headers, like X-Asterisk-Accountcode:. Use this with care.
Adding the wrong headers may jeopardize the SIP dialog.Always returns 0.
Remove SIP headers previously added with SIPAddHeader
SIPRemoveHeader() allows you to remove headers which were previously
added with SIPAddHeader(). If no parameter is supplied, all previously added
headers will be removed. If a parameter is supplied, only the matching headers
will be removed.For example you have added these 2 headers:SIPAddHeader(P-Asserted-Identity: sip:foo@bar);SIPAddHeader(P-Preferred-Identity: sip:bar@foo);// remove all headersSIPRemoveHeader();// remove all P- headersSIPRemoveHeader(P-);// remove only the PAI header (note the : at the end)SIPRemoveHeader(P-Asserted-Identity:);Always returns 0.
Send a custom INFO frame on specified channels.
SIPSendCustomINFO() allows you to send a custom INFO message on all
active SIP channels or on channels with the specified User Agent. This
application is only available if TEST_FRAMEWORK is defined.
Gets the specified SIP header from an incoming INVITE message.
If not specified, defaults to 1.Since there are several headers (such as Via) which can occur multiple
times, SIP_HEADER takes an optional second argument to specify which header with
that name to retrieve. Headers start at offset 1.Please observe that contents of the SDP (an attachment to the
SIP request) can't be accessed with this function.
Gets SIP peer information.
(default) The IP address.The port number.The configured mailbox.The configured context.The epoch time of the next expire.Is it dynamic? (yes/no).The configured Caller ID name.The configured Caller ID number.The configured Callgroup.The configured Pickupgroup.The configured Named Callgroup.The configured Named Pickupgroup.The configured codecs.Status (if qualify=yes).Extension activated at registration.Call limit (call-limit).Configured call level for signalling busy.Current amount of calls. Only available if call-limit is set.Default language for peer.Account code for this peer.Current user agent header used by peer.The value used for SIP loop prevention in outbound requestsA channel variable configured with setvar for this peer.Preferred codec index number x (beginning with zero).
Checks if domain is a local domain.
This function checks if the domain in the argument is configured
as a local SIP domain that this Asterisk server is configured to handle.
Returns the domain name if it is locally handled, otherwise an empty string.
Check the domain= configuration in sip.conf.
List SIP peers (text format).
Lists SIP peers in text format with details on current status.
Peerlist will follow as separate events, followed by a final event called
PeerlistComplete.
show SIP peer (text format).
The peer name you want to check.Show one SIP peer with details on current status.
Qualify SIP peers.
The peer name you want to qualify.Qualify a SIP peer.SIPQualifyPeerDone
Show SIP registrations (text format).
Lists all registration requests and status. Registrations will follow as separate
events followed by a final event called RegistrationsComplete.
Send a SIP notify.
Peer to receive the notify.At least one variable pair must be specified.
name=valueSends a SIP Notify event.All parameters for this event must be specified in the body of this request
via multiple Variable: name=value sequences.
Show the status of one or all of the sip peers.
The peer name you want to check.Retrieves the status of one or all of the sip peers. If no peer name is specified, status
for all of the sip peers will be retrieved.The from parameter can be a configured peer name
or in the form of "display-name" <URI>.Specifying a prefix of sip: will send the
message as a SIP MESSAGE request.Raised when SIPQualifyPeer has finished qualifying the specified peer.The name of the peer.This is only included if an ActionID Header was sent with the action request, in which case it will be that ActionID.SIPqualifypeerRaised when a SIP session times out.The source of the session timeout.Published when a malicious call ID request arrives.
Provision a calling IAXy with a given template.
If not specified, defaults to default.Provisions the calling IAXy (assuming the calling entity is in fact an IAXy) with the
given template. Returns -1 on error
or 0 on success.
Gets IAX peer information.
If peername is specified to this value, return the IP address of the
endpoint of the current channelIf peername is specified, valid items are:(default) The IP address.The peer's status (if qualify=yes)The configured mailbox.The configured context.The epoch time of the next expire.Is it dynamic? (yes/no).The configured Caller ID name.The configured Caller ID number.The configured codecs.Preferred codec index number x (beginning
with 0)Gets information associated with the specified IAX2 peer.SIPPEER
Sets or retrieves a remote variable.
Gets or sets a variable that is sent to a remote IAX2 peer during call setup.R/O Get the peer's osptoken.R/O Get the peer's ip address.R/O Get the peer's username.R/O Get the if the IAX channel is secured.R/O Get the if the IAX channel is secured.
List IAX peers.
List IAX Peers.
List all the IAX peers.
Show IAX Netstats.
Show IAX channels network statistics.
Show IAX registrations.
Show IAX registrations.Jingle Channel DriverTransportsThere are three different transports and protocol derivatives
supported by chan_motif. They are in order of
preference: Jingle using ICE-UDP, Google Jingle, and Google-V1.Jingle as defined in XEP-0166 supports the widest range of
features. It is referred to as ice-udp. This is
the specification that Jingle clients implement.Google Jingle follows the Jingle specification for signaling
but uses a custom transport for media. It is supported by the
Google Talk Plug-in in Gmail and by some other Jingle clients. It
is referred to as google in this file.Google-V1 is the original Google Talk signaling protocol
which uses an initial preliminary version of Jingle. It also uses
the same custom transport as Google Jingle for media. It is
supported by Google Voice, some other Jingle clients, and the
Windows Google Talk client. It is referred to as google-v1
in this file.Incoming sessions will automatically switch to the correct
transport once it has been determined.Outgoing sessions are capable of determining if the target
is capable of Jingle or a Google transport if the target is in the
roster. Unfortunately it is not possible to differentiate between
a Google Jingle or Google-V1 capable resource until a session
initiate attempt occurs. If a resource is determined to use a
Google transport it will initially use Google Jingle but will fall
back to Google-V1 if required.If an outgoing session attempt fails due to failure to
support the given transport chan_motif will
fall back in preference order listed previously until all
transports have been exhausted.Dialing and Resource Selection StrategyPlacing a call through an endpoint can be accomplished using the
following dial string:Motif/[endpoint name]/[target]When placing an outgoing call through an endpoint the requested
target is searched for in the roster list. If present the first Jingle
or Google Jingle capable resource is specifically targeted. Since the
capabilities of the resource are known the outgoing session initiation
will disregard the configured transport and use the determined one.If the target is not found in the roster the target will be used
as-is and a session will be initiated using the transport specified
in this configuration file. If no transport has been specified the
endpoint defaults to ice-udp.Video SupportSupport for video does not need to be explicitly enabled.
Configuring any video codec on your endpoint will automatically enable
it.DTMFThe only supported method for DTMF is RFC2833. This is always
enabled on audio streams and negotiated if possible.Incoming CallsIncoming calls will first look for the extension matching the
name of the endpoint in the configured context. If no such extension
exists the call will automatically fall back to the s extension.CallerIDThe incoming caller id number is populated with the username of
the caller and the name is populated with the full identity of the
caller. If you would like to perform authentication or filtering
of incoming calls it is recommended that you use these fields to do so.Outgoing caller id can not be set.Multiple endpoints using the
same connection is NOT supported. Doing so
may result in broken calls.The configuration for an endpoint.Default dialplan context that incoming sessions will be routed toA callgroup to assign to this endpoint.A pickup group to assign to this endpoint.The default language for this endpoint.Default music on hold class for this endpoint.Default parking lot for this endpoint.Accout code for CDR purposesCodecs to allowCodecs to disallowConnection to accept traffic on and on which to send traffic outThe transport to use for the endpoint.The default outbound transport for this endpoint. Inbound
messages are inferred. Allowed transports are ice-udp,
google, or google-v1. Note
that chan_motif will fall back to transport
preference order if the transport value chosen here fails.The Jingle protocol, as defined in XEP 0166.The Google Jingle protocol, which follows the Jingle
specification for signaling but uses a custom transport for
media.Google-V1 is the original Google Talk signaling
protocol which uses an initial preliminary version of Jingle.
It also uses the same custom transport as google for media.Maximum number of ICE candidates to offerMaximum number of pyaloads to offer
List SKINNY devices (text format).
Lists Skinny devices in text format with details on current status.
Devicelist will follow as separate events, followed by a final event called
DevicelistComplete.
Show SKINNY device (text format).
The device name you want to check.Show one SKINNY device with details on current status.
List SKINNY lines (text format).
Lists Skinny lines in text format with details on current status.
Linelist will follow as separate events, followed by a final event called
LinelistComplete.
Show SKINNY line (text format).
The line name you want to check.Show one SKINNY line with details on current status.
Do a DUNDi lookup of a phone number.
If not specified the default will be e164.This will do a DUNDi lookup of the given phone number.This function will return the Technology/Resource found in the first result
in the DUNDi lookup. If no results were found, the result will be blank.
Initiate a DUNDi query.
If not specified the default will be e164.This will do a DUNDi lookup of the given phone number.The result of this function will be a numeric ID that can be used to retrieve
the results with the DUNDIRESULT function.
Retrieve results from a DUNDIQUERY.
The identifier returned by the DUNDIQUERY function.This function will retrieve results from a previous use\n"
of the DUNDIQUERY function.
Launch subroutine built with AEL
Named subroutine to execute.Execute the named subroutine, defined in AEL, from another dialplan
language, such as extensions.conf, Realtime extensions, or Lua.The purpose of this application is to provide a sane entry point into
AEL subroutines, the implementation of which may change from time to time.
Add an extension to the dialplan
Context where the extension will be created. The context will
be created if it does not already exist.Name of the extension that will be created (may include callerid match by separating
with '/')Priority being added to this extension. Must be either hint or a
numerical value.The application to use for this extension at the requested priorityArguments to the application.If set to 'yes', '1', 'true' or any of the other values we evaluate as true, then
if an extension already exists at the requested context, extension, and priority it will
be overwritten. Otherwise, the existing extension will remain and the action will fail.
Remove an extension from the dialplan
Context of the extension being removedName of the extension being removed (may include callerid match by separating with '/')If provided, only remove this priority from the extension instead of all
priorities in the extension.
Originate a call.
Channel technology and data for creating the outbound channel.
For example, SIP/1234.This should be app or exten, depending on whether the outbound channel should be connected to an application or extension.If the type is app, then this is the application name. If the type is exten, then this is the context that the channel will be sent to.If the type is app, then this is the data passed as arguments to the application. If the type is exten, then this is the extension that the channel will be sent to.If the type is exten, then this is the priority that the channel is sent to. If the type is app, then this parameter is ignored.Timeout in seconds. Default is 30 seconds.This application originates an outbound call and connects it to a specified extension or application. This application will block until the outgoing call fails or gets answered. At that point, this application will exit with the status variable set and dialplan processing will continue.This application sets the following channel variable before exiting:This indicates the result of the call origination.
In practice, you should never see this value. Please report it to the issue tracker if you ever see it.
Create a Speech Structure.
This application creates information to be used by all the other applications.
It must be called before doing any speech recognition activities such as activating a grammar.
It takes the engine name to use as the argument, if not specified the default engine will be used.Sets the ERROR channel variable to 1 if the engine cannot be used.
Activate a grammar.
This activates the specified grammar to be recognized by the engine.
A grammar tells the speech recognition engine what to recognize, and how to portray it back to you
in the dialplan. The grammar name is the only argument to this application.Hangs up the channel on failure. If this is not desired, use TryExec.
Start recognizing voice in the audio stream.
Tell the speech recognition engine that it should start trying to get results from audio being
fed to it.Hangs up the channel on failure. If this is not desired, use TryExec.
Play a sound file and wait for speech to be recognized.
Timeout integer in seconds. Note the timeout will only start
once the sound file has stopped playing.This application plays a sound file and waits for the person to speak. Once they start speaking playback
of the file stops, and silence is heard. Once they stop talking the processing sound is played to indicate
the speech recognition engine is working. Once results are available the application returns and results
(score and text) are available using dialplan functions.The first text and score are ${SPEECH_TEXT(0)} AND ${SPEECH_SCORE(0)} while the second are ${SPEECH_TEXT(1)}
and ${SPEECH_SCORE(1)}.The first argument is the sound file and the second is the timeout integer in seconds.Hangs up the channel on failure. If this is not desired, use TryExec.
Deactivate a grammar.
The grammar name to deactivateThis deactivates the specified grammar so that it is no longer recognized.Hangs up the channel on failure. If this is not desired, use TryExec.
Change background processing sound.
This changes the processing sound that SpeechBackground plays back when the speech recognition engine is
processing and working to get results.Hangs up the channel on failure. If this is not desired, use TryExec.
End speech recognition.
This destroys the information used by all the other speech recognition applications.
If you call this application but end up wanting to recognize more speech, you must call SpeechCreate()
again before calling any other application.Hangs up the channel on failure. If this is not desired, use TryExec.
Load a grammar.
Load a grammar only on the channel, not globally.Hangs up the channel on failure. If this is not desired, use TryExec.
Unload a grammar.
Unload a grammar.Hangs up the channel on failure. If this is not desired, use TryExec.
Gets the confidence score of a result.
Gets the confidence score of a result.
Gets the recognized text of a result.
Gets the recognized text of a result.
Gets the matched grammar of a result if available.
Gets the matched grammar of a result if available.
Get or change a speech engine specific attribute.
Changes a speech engine specific attribute.
Sets the type of results that will be returned.
Sets the type of results that will be returned. Valid options are normal or nbest.
Gets information about speech recognition results.
Returns 1 upon speech object existing,
or 0 if notReturns 1 if spoker spoke,
or 0 if notReturns number of results that were recognized.Gets information about speech recognition results.
Play a tone list.
Arg is either the tone name defined in the indications.conf
configuration file, or a directly specified list of frequencies and durations.Plays a tone list. Execution will continue with the next step in the dialplan
immediately while the tones continue to play.See the sample indications.conf for a description of the
specification of a tonelist.StopPlayTones
Stop playing a tone list.
Stop playing a tone list, initiated by PlayTones().PlayTones
Waits for a specified amount of silence.
If not specified, defaults to 1000 milliseconds.If not specified, defaults to 1.Is specified only to avoid an infinite loop in cases where silence is never achieved.Waits for up to silencerequired milliseconds of silence,
iterations times. An optional timeout
specified the number of seconds to return after, even if we do not receive the specified amount of silence.
Use timeout with caution, as it may defeat the purpose of this application, which
is to wait indefinitely until silence is detected on the line. This is particularly useful for reverse-911-type
call broadcast applications where you need to wait for an answering machine to complete its spiel before
playing a message.Typically you will want to include two or more calls to WaitForSilence when dealing with an answering
machine; first waiting for the spiel to finish, then waiting for the beep, etc.Examples:WaitForSilence(500,2) will wait for 1/2 second of silence, twiceWaitForSilence(1000) will wait for 1 second of silence, onceWaitForSilence(300,3,10) will wait for 300ms silence, 3 times, and returns after 10 sec, even if silence
is not detectedSets the channel variable WAITSTATUS to one of these values:
if exited with silence detected.
if exited without silence detected after timeout.
WaitForNoise
Waits for a specified amount of noise.
If not specified, defaults to 1000 milliseconds.If not specified, defaults to 1.Is specified only to avoid an infinite loop in cases where silence is never achieved.Waits for up to noiserequired milliseconds of noise,
iterations times. An optional timeout
specified the number of seconds to return after, even if we do not receive the specified amount of noise.
Use timeout with caution, as it may defeat the purpose of this application, which
is to wait indefinitely until noise is detected on the line.WaitForSilence
Block telemarketers with SIT.
Comma delimited list of options.Generates special information tone to block telemarketers from calling you.This application will set the following channel variable upon completion:This will contain the last action accomplished by the
Zapateller application. Possible values include:
Execute Interface Test Server.
Perform test server function and write call report. Results stored in
/var/log/asterisk/testreports/<testid>-server.txtTestClient
Execute Interface Test Client.
An ID to identify this test.Executes test client with given testid. Results stored in
/var/log/asterisk/testreports/<testid>-client.txtTestServer
Read a variable.
The input digits will be stored in the given variable
name.file(s) to play before reading digits or tone with option iMaximum acceptable number of digits. Stops reading after
maxdigits have been entered (without
requiring the user to press the # key).Defaults to 0 - no limit - wait for the
user press the # key. Any value below
0 means the same. Max accepted value is
255.If greater than 1, that many
attempts will be made in the
event no data is entered.The number of seconds to wait for a digit response. If greater
than 0, that value will override the default timeout.
Can be floating point.Reads a #-terminated string of digits a certain number of times from the
user in to the given variable.This application sets the following channel variable upon completion:This is the status of the read operation.SendDTMF
Sends arbitrary DTMF digits
List of digits 0-9,*#,a-d,A-D to send also w for a half second pause,
W for a one second pause, and f or F for a flash-hook if the channel supports
flash-hook.Amount of time to wait in ms between tones. (defaults to .25s)Duration of each digitChannel where digits will be playedIt will send all digits or terminate if it encounters an error.Read
Play DTMF signal on a specific channel.
Channel name to send digit to.The DTMF digit to play.The duration, in milliseconds, of the digit to be played.Plays a dtmf digit on the specified channel.
Authenticate a user
Password the user should knowmaximum acceptable number of digits. Stops reading after
maxdigits have been entered (without requiring the user to press the # key).
Defaults to 0 - no limit - wait for the user press the # key.Override the agent-pass prompt file.This application asks the caller to enter a given password in order to continue dialplan execution.If the password begins with the / character,
it is interpreted as a file which contains a list of valid passwords, listed 1 password per line in the file.When using a database key, the value associated with the key can be anything.Users have three attempts to authenticate before the channel is hung up.VMAuthenticateDISA
Play a file.
Comma separated list of optionsPlays back given filenames (do not put extension of wav/alaw etc).
The playback command answer the channel if no options are specified.
If the file is non-existant it will failThis application sets the following channel variable upon completion:The status of the playback attempt as a text string.See Also: Background (application) -- for playing sound files that are interruptibleWaitExten (application) -- wait for digits from caller, optionally play music on holdBackgroundWaitExtenControlPlaybackstream filecontrol stream fileControlPlayback
Flashes a DAHDI Trunk.
Performs a flash on a DAHDI trunk. This can be used to access features
provided on an incoming analogue circuit such as conference and call waiting.
Use with SendDTMF() to perform external transfers.SendDTMF
Put a call into the holding bridge.
Name of the holding bridge to join. This is a handle for BridgeWait
only and does not affect the actual bridges that are created. If not provided,
the reserved name default will be used.
Defines the channel's purpose for entering the holding bridge. Values are case sensitive.
The channel will enter the holding bridge to be placed on hold
until it is removed from the bridge for some reason. (default)The channel will enter the holding bridge to make announcements
to channels that are currently in the holding bridge. While an
announcer is present, holding for the participants will be
suspended.This application places the incoming channel into a holding bridge.
The channel will then wait in the holding bridge until some event occurs
which removes it from the holding bridge.This application will answer calls which haven't already
been answered.
Record a call and mix the audio during the recording. Use of StopMixMonitor is required
to guarantee the audio file is available for processing during dialplan execution.
If filename is an absolute path, uses that path, otherwise
creates the file in the configured monitoring directory from asterisk.conf.Will be executed when the recording is over.Any strings matching ^{X} will be unescaped to X.All variables will be evaluated at the time MixMonitor is called.Do not use untrusted strings such as CALLERID(num)
or CALLERID(name) as part of the command parameters. You
risk a command injection attack executing arbitrary commands if the untrusted
strings aren't filtered to remove dangerous characters. See function
FILTER().Records the audio on the current channel to the specified file.This application does not automatically answer and should be preceeded by
an application such as Answer or Progress().MixMonitor runs as an audiohook.Will contain the filename used to record.Do not use untrusted strings such as CALLERID(num)
or CALLERID(name) as part of ANY of the application's
parameters. You risk a command injection attack executing arbitrary commands
if the untrusted strings aren't filtered to remove dangerous characters. See
function FILTER().MonitorStopMixMonitorPauseMonitorUnpauseMonitorAUDIOHOOK_INHERIT
Stop recording a call through MixMonitor, and free the recording's file handle.
If a valid ID is provided, then this command will stop only that specific
MixMonitor.Stops the audio recording that was started with a call to MixMonitor()
on the current channel.MixMonitor
Mute / unMute a Mixmonitor recording.
Used to specify the channel to mute.Which part of the recording to mute: read, write or both (from channel, to channel or both channels).Turn mute on or off : 1 to turn on, 0 to turn off.This action may be used to mute a MixMonitor recording.
Record a call and mix the audio during the recording. Use of StopMixMonitor is required
to guarantee the audio file is available for processing during dialplan execution.
Used to specify the channel to record.Is the name of the file created in the monitor spool directory.
Defaults to the same name as the channel (with slashes replaced with dashes).
This argument is optional if you specify to record unidirectional audio with
either the r(filename) or t(filename) options in the options field. If
neither MIXMONITOR_FILENAME or this parameter is set, the mixed stream won't
be recorded.Options that apply to the MixMonitor in the same way as they
would apply if invoked from the MixMonitor application. For a list of
available options, see the documentation for the mixmonitor application. Will be executed when the recording is over.
Any strings matching ^{X} will be unescaped to X.
All variables will be evaluated at the time MixMonitor is called.Do not use untrusted strings such as CALLERID(num)
or CALLERID(name) as part of the command parameters. You
risk a command injection attack executing arbitrary commands if the untrusted
strings aren't filtered to remove dangerous characters. See function
FILTER().This action records the audio on the current channel to the specified file.Will contain the filename used to record the mixed stream.
Stop recording a call through MixMonitor, and free the recording's file handle.
The name of the channel monitored.If a valid ID is provided, then this command will stop only that specific
MixMonitor.This action stops the audio recording that was started with the MixMonitor
action on the current channel.
Retrieve data pertaining to specific instances of MixMonitor on a channel.
The unique ID of the MixMonitor instance. The unique ID can be retrieved through the channel
variable used as an argument to the i option to MixMonitor.The piece of data to retrieve from the MixMonitor.
Conference bridge application.
Name of the conference bridge. You are not limited to just
numbers.The bridge profile name from confbridge.conf. When left blank,
a dynamically built bridge profile created by the CONFBRIDGE dialplan
function is searched for on the channel and used. If no dynamic
profile is present, the 'default_bridge' profile found in
confbridge.conf is used. It is important to note that while user profiles may be unique
for each participant, mixing bridge profiles on a single conference
is _NOT_ recommended and will produce undefined results.The user profile name from confbridge.conf. When left blank,
a dynamically built user profile created by the CONFBRIDGE dialplan
function is searched for on the channel and used. If no dynamic
profile is present, the 'default_user' profile found in
confbridge.conf is used.The name of the DTMF menu in confbridge.conf to be applied to
this channel. When left blank, a dynamically built menu profile
created by the CONFBRIDGE dialplan function is searched for on
the channel and used. If no dynamic profile is present, the
'default_menu' profile found in confbridge.conf is used.Enters the user into a specified conference bridge. The user can
exit the conference by hangup or DTMF menu option.This application sets the following channel variable upon completion:The channel encountered an error and could not enter the conference.The channel exited the conference by hanging up.The channel was kicked from the conference.The channel left the conference as a result of the last marked user leaving.The channel pressed a DTMF sequence to exit the conference.The channel reached its configured timeout.ConfBridgeCONFBRIDGECONFBRIDGE_INFO
Set a custom dynamic bridge, user, or menu profile on a channel for the
ConfBridge application using the same options available in confbridge.conf.
To what type of conference profile the option applies.Option refers to a confbridge.conf option
that is being set dynamically on this channel, or clear
to remove already applied profile options from the channel.A custom profile uses the default profile type settings defined in
confbridge.conf as defaults if the profile template
is not explicitly specified first.For bridge profiles the default template is default_bridge.For menu profiles the default template is default_menu.For user profiles the default template is default_user.---- Example 1 ----In this example the custom user profile set on the channel will
automatically be used by the ConfBridge application.exten => 1,1,Answer(); In this example the effect of the following line is; implied:; same => n,Set(CONFBRIDGE(user,template)=default_user)same => n,Set(CONFBRIDGE(user,announce_join_leave)=yes)same => n,Set(CONFBRIDGE(user,startmuted)=yes)same => n,ConfBridge(1) ---- Example 2 ----This example shows how to use a predefined user profile in
confbridge.conf as a template for a dynamic profile.
Here we make an admin/marked user out of the my_user
profile that you define in confbridge.conf.exten => 1,1,Answer()same => n,Set(CONFBRIDGE(user,template)=my_user)same => n,Set(CONFBRIDGE(user,admin)=yes)same => n,Set(CONFBRIDGE(user,marked)=yes)same => n,ConfBridge(1)
Get information about a ConfBridge conference.
What conference information is requested.Get the number of admin users in the conference.Determine if the conference is locked. (0 or 1)Get the number of marked users in the conference.Determine if the conference is muted. (0 or 1)Get the number of users in the conference.The name of the conference being referenced.This function returns a non-negative integer for valid conference
names and an empty string for invalid conference names.
List participants in a conference.
Conference number.Lists all users in a particular ConfBridge conference.
ConfbridgeList will follow as separate events, followed by a final event called
ConfbridgeListComplete.Raised as part of the ConfbridgeList action response list.The name of the Confbridge conference.Identifies this user as an admin user.Identifies this user as a marked user.Must this user wait for a marked user to join?Does this user get kicked after the last marked user leaves?Is this user waiting for a marked user to join?The current mute status.The number of seconds the channel has been up.
List active conferences.
Lists data about all active conferences.
ConfbridgeListRooms will follow as separate events, followed by a final event called
ConfbridgeListRoomsComplete.
Mute a Confbridge user.
If this parameter is not a complete channel name, the first channel with this prefix will be used.If this parameter is "all", all channels will be muted.If this parameter is "participants", all non-admin channels will be muted.
Unmute a Confbridge user.
If this parameter is not a complete channel name, the first channel with this prefix will be used.If this parameter is "all", all channels will be unmuted.If this parameter is "participants", all non-admin channels will be unmuted.
Kick a Confbridge user.
If this parameter is "all", all channels will be kicked from the conference.If this parameter is "participants", all non-admin channels will be kicked from the conference.
Lock a Confbridge conference.
Unlock a Confbridge conference.
Start recording a Confbridge conference.
Start recording a conference. If recording is already present an error will be returned. If RecordFile is not provided, the default record file specified in the conference's bridge profile will be used, if that is not present either a file will automatically be generated in the monitor directory.
Stop recording a Confbridge conference.
Set a conference user as the single video source distributed to all other participants.
If this parameter is not a complete channel name, the first channel with this prefix will be used.
Provide directory of voicemail extensions.
This is the context within voicemail.conf to use for the Directory. If not
specified and searchcontexts=no in
voicemail.conf, then default
will be assumed.This is the dialplan context to use when looking for an
extension that the user has selected, or when jumping to the
o or a extension. If not
specified, the current context will be used.Only one of the f, l, or b
options may be specified. If more than one is specified, then Directory will act as
if b was specified. The number
of characters for the user to type defaults to 3.This application will present the calling channel with a directory of extensions from which they can search
by name. The list of names and corresponding extensions is retrieved from the
voicemail configuration file, voicemail.conf.This application will immediately exit if one of the following DTMF digits are
received and the extension to jump to exists:0 - Jump to the 'o' extension, if it exists.* - Jump to the 'a' extension, if it exists.This application will set the following channel variable before completion:Reason Directory application exited.User requested operatorUser requested assistantUser allowed DTMF wait duration to pass without sending DTMFThe channel hung up before the application finishedUser selected a user to call from the directoryUser exited with '#' during selectionThe application failed
Page series of phones
Specification of the device(s) to dial. These must be in the format of
Technology/Resource, where Technology
represents a particular channel driver, and Resource represents a resource
available to that particular channel driver.Optional extra devices to dial in parallelIf you need more than one, enter them as Technology2/Resource2&
Technology3/Resource3&.....Specify the length of time that the system will attempt to connect a call.
After this duration, any page calls that have not been answered will be hung up by the
system.Places outbound calls to the given technology/resource
and dumps them into a conference bridge as muted participants. The original
caller is dumped into the conference as a speaker and the room is
destroyed when the original caller leaves.ConfBridge
Send an arbitrary user-defined event to parties interested in a channel (AMI users and relevant res_stasis applications).
Sends an arbitrary event to interested parties, with an optional
body representing additional arguments. The
body may be specified as
a , delimited list of key:value pairs.For AMI, each additional argument will be placed on a new line in
the event and the format of the event will be: Event: UserEvent UserEvent: <specified event name> [body]If no body is specified, only Event and
UserEvent headers will be present.For res_stasis applications, the event will be provided as a JSON
blob with additional arguments appearing as keys in the object and the
eventname under the
eventname key.UserEventUserEvent
Transfer caller to remote extension.
Requests the remote caller be transferred
to a given destination. If TECH (SIP, IAX2, LOCAL etc) is used, only
an incoming call with the same channel technology will be transferred.
Note that for SIP, if you transfer before call is setup, a 302 redirect
SIP message will be returned to the caller.The result of the application will be reported in the TRANSFERSTATUS
channel variable:
Transfer succeeded.
Transfer failed.
Transfer unsupported by channel driver.
Executes dialplan application.
Application name and arguments of the dialplan application to execute.Allows an arbitrary application to be invoked even when not
hard coded into the dialplan. If the underlying application
terminates the dialplan, or if the application cannot be found,
Exec will terminate the dialplan.To invoke external applications, see the application System.
If you would like to catch any error instead, see TryExec.
Executes dialplan application, always returning.
Allows an arbitrary application to be invoked even when not
hard coded into the dialplan. To invoke external applications
see the application System. Always returns to the dialplan.
The channel variable TRYSTATUS will be set to one of:
If the application returned zero.
If the application returned non-zero.
If the application was not found or was not specified.
Executes dialplan application, conditionally.
If expr is true, execute and return the
result of appiftrue(args).If expr is true, but appiftrue is not found,
then the application will return a non-zero value.
Play a file with fast forward and rewind.
This is number of milliseconds to skip when rewinding or
fast-forwarding.Fast-forward when this DTMF digit is received. (defaults to #)Rewind when this DTMF digit is received. (defaults to *)Stop playback when this DTMF digit is received.Pause playback when this DTMF digit is received.Restart playback when this DTMF digit is received.This application will play back the given filename.It sets the following channel variables upon completion:Contains the status of the attempt as a text stringContains the offset in ms into the file where playback
was at when it stopped. -1 is end of file.If the playback is stopped by the user this variable contains
the key that was pressed.
Control the playback of a file being played to a channel.
The name of the channel that currently has a file being played back to it.Stop the playback operation.Move the current position in the media forward. The amount
of time that the stream moves forward is determined by the
skipms value passed to the application
that initiated the playback.The default skipms value is 3000 ms.Move the current position in the media backward. The amount
of time that the stream moves backward is determined by the
skipms value passed to the application
that initiated the playback.The default skipms value is 3000 ms.Pause/unpause the playback operation, if supported.
If not supported, stop the playback.Restart the playback operation, if supported.
If not supported, stop the playback.Control the operation of a media file being played back to a channel.
Note that this AMI action does not initiate playback of media to channel, but
rather controls the operation of a media operation that was already initiated
on the channel.The pause and restartControl options will stop a playback
operation if that operation was not initiated from the
ControlPlayback application or the
control stream file AGI command.PlaybackControlPlaybackstream filecontrol stream file
Attempt to connect to another device or endpoint and bridge the call.
Specification of the device(s) to dial. These must be in the format of
Technology/Resource, where Technology
represents a particular channel driver, and Resource
represents a resource available to that particular channel driver.Optional extra devices to dial in parallelIf you need more than one enter them as
Technology2/Resource2&Technology3/Resource3&.....Specifies the number of seconds we attempt to dial the specified devices.If not specified, this defaults to 136 years.The optional URL will be sent to the called party if the channel driver supports it.This application will place calls to one or more specified channels. As soon
as one of the requested channels answers, the originating channel will be
answered, if it has not already been answered. These two channels will then
be active in a bridged call. All other channels that were requested will then
be hung up.Unless there is a timeout specified, the Dial application will wait
indefinitely until one of the called channels answers, the user hangs up, or
if all of the called channels are busy or unavailable. Dialplan execution will
continue if no requested channels can be called, or if the timeout expires.
This application will report normal termination if the originating channel
hangs up, or if the call is bridged and either of the parties in the bridge
ends the call.If the OUTBOUND_GROUP variable is set, all peer channels created by this
application will be put into that group (as in Set(GROUP()=...).
If the OUTBOUND_GROUP_ONCE variable is set, all peer channels created by this
application will be put into that group (as in Set(GROUP()=...). Unlike OUTBOUND_GROUP,
however, the variable will be unset after use.
same => n,Dial(PJSIP/alice,30)
same => n,Dial(PJSIP/alice&PJIP/bob,45)
same => n,Dial(PJSIP/alice,,g)
same => n,Log(NOTICE, Alice call result: ${DIALSTATUS})
same => n,Dial(PJSIP/alice,,TX)
same => n,Dial(PJSIP/alice,,L(60000:30000:10000))
same => n,Dial(PJSIP/alice&PJSIP/bob,,Q(NO_ANSWER))
[default]
exten => callee_channel,1,NoOp()
same => n,Log(NOTICE, I'm called on channel ${CHANNEL} prior to it starting the dial attempt)
same => n,Return()
exten => called_channel,1,NoOp()
same => n,Log(NOTICE, I'm called on outbound channel ${CHANNEL} prior to it being used to dial someone)
same => n,Return()
exten => _X.,1,NoOp()
same => n,Dial(PJSIP/alice,,b(default^called_channel^1)B(default^callee_channel^1))
same => n,Hangup()
[default]
exten => called_channel,1,NoOp()
same => n,Playback(hello)
same => n,Return()
exten => _X.,1,NoOp()
same => n,Dial(PJSIP/alice,,U(default^called_channel^1))
same => n,Hangup()
same => n,Dial(PJSIP/alice,,G(jump_to_here))
same => n(jump_to_here),Goto(confbridge)
same => n,Goto(confbridge)
same => n(confbridge),ConfBridge(${EXTEN})
This application sets the following channel variables:This is the time from dialing a channel until when it is disconnected.This is the amount of time for actual call.The name of the outbound channel that answered the call.The number that was dialed for the answered outbound channel.If a call forward occurred, the name of the forwarded channel.This is the status of the call
For the Privacy and Screening Modes.
Will be set if the called party chooses to send the calling party to the 'Go Away' script.
For the Privacy and Screening Modes.
Will be set if the called party chooses to send the calling party to the 'torture' script.
RetryDialSendDTMFGosubMacro
Place a call, retrying on failure allowing an optional exit extension.
Filename of sound that will be played when no channel can be reachedNumber of seconds to wait after a dial attempt failed before a new attempt is madeNumber of retriesWhen this is reached flow will continue at the next priority in the dialplanSame format as arguments provided to the Dial applicationThis application will attempt to place a call using the normal Dial application.
If no channel can be reached, the announce file will be played.
Then, it will wait sleep number of seconds before retrying the call.
After retries number of attempts, the calling channel will continue at the next priority in the dialplan.
If the retries setting is set to 0, this application will retry endlessly.
While waiting to retry a call, a 1 digit extension may be dialed. If that
extension exists in either the context defined in EXITCONTEXT or the current
one, The call will jump to that extension immediately.
The dialargs are specified in the same format that arguments are provided
to the Dial application.Dial
An example number guessing game
This simple number guessing application is a template to build other applications
from. It shows you the basic structure to create your own Asterisk applications.Options that apply globally to app_skelThe number of games a single execution of SkelGuessNumber will playShould the computer cheat?If enabled, the computer will ignore winning guesses.Prompts for SkelGuessNumber to playA prompt directing the user to enter a number less than the max numberThe sound file to play when a wrong guess is madeThe sound file to play when a correct guess is madeThe sound file to play when a guess is too lowThe sound file to play when a guess is too highThe sound file to play when a player losesDefined levels for the SkelGuessNumber gameThe maximum in the range of numbers to guess (1 is the implied minimum)The maximum number of guesses before a game is considered lost
Hangs up the requested channel.
Hangs up the requested channel. If there are no channels to
hangup, the application will report it.
Tell Asterisk to not maintain a CDR for this channel.
This application will tell Asterisk not to maintain a CDR for
the current channel. This does NOT mean that
information is not tracked; rather, if the channel is hung up no
CDRs will be created for that channel.If a subsequent call to ResetCDR occurs, all non-finalized
CDRs created for the channel will be enabled.This application is deprecated. Please use the CDR_PROP
function to disable CDRs on a channel.ResetCDRCDR_PROP
Resets the Call Data Record.
This application causes the Call Data Record to be reset.
Depending on the flags passed in, this can have several effects.
With no options, a reset does the following:1. The start time is set to the current time.2. If the channel is answered, the answer time is set to the
current time.3. All variables are wiped from the CDR. Note that this step
can be prevented with the v option.On the other hand, if the e option is
specified, the effects of the NoCDR application will be lifted. CDRs
will be re-enabled for this channel.The e option is deprecated. Please
use the CDR_PROP function instead.ForkCDRNoCDRCDR_PROP
Send a Text Message.
Sends text to current channel (callee).Result of transmission will be stored in the SENDTEXTSTATUS
Transmission succeeded.
Transmission failed.
Text transmission not supported by channel.
At this moment, text is supposed to be 7 bit ASCII in most channels.SendImageSendURL
IVR Demo Application.
This is a skeleton application that shows you the basic structure to create your
own asterisk applications and demonstrates the IVR demo.
Login an agent.
Login an agent to the system. Any agent authentication is assumed to
already be done by dialplan. While logged in, the agent can receive calls
and will hear the sound file specified by the config option custom_beep
when a new call comes in for the agent. Login failures will continue in
the dialplan with AGENT_STATUS set.Before logging in, you can setup on the real agent channel the
CHANNEL(dtmf-features) an agent will have when talking to a caller
and you can setup on the channel running this application the
CONNECTEDLINE() information the agent will see while waiting for a
caller.AGENT_STATUS enumeration values:The specified agent is invalid.The agent is already logged in.The Agents:AgentId device state is
available to monitor the status of the agent.AuthenticateQueueAddQueueMemberRemoveQueueMemberPauseQueueMemberUnpauseQueueMemberAGENTCHANNEL(dtmf-features)CONNECTEDLINE()agents.confqueues.conf
Request an agent to connect with the channel.
Request an agent to connect with the channel. Failure to find,
alert the agent, or acknowledge the call will continue in the dialplan
with AGENT_STATUS set.AGENT_STATUS enumeration values:The specified agent is invalid.The agent is not available.The agent is on another call.The agent did not connect with the
call. The agent most likely did not acknowledge the call.Alerting the agent failed.AgentLogin
Gets information about an Agent
The valid items to retrieve are:(default) The status of the agent (LOGGEDIN | LOGGEDOUT)Deprecated. The dialplan handles any agent authentication.The name of the agentMusicOnHold classThe name of the active channel for the Agent (AgentLogin)The untruncated name of the active channel for the Agent (AgentLogin)
Lists agents and their status.
Will list info about all defined agents.AgentsAgentsComplete
Response event in a series to the Agents AMI action containing
information about a defined agent.
Agent ID of the agent.User friendly name of the agent.Current status of the agent.The valid values are:BRIDGEPEER value on agent channel.Present if Status value is AGENT_ONCALL.Epoche time when the agent started talking with the caller.Present if Status value is AGENT_ONCALL.Epoche time when the agent logged in.Present if Status value is AGENT_IDLE or AGENT_ONCALL.The channel snapshot is present if the Status value is AGENT_IDLE or AGENT_ONCALL.Agents
Final response event in a series of events to the Agents AMI action.
Agents
Sets an agent as no longer logged in.
Agent ID of the agent to log off.Set to true to not hangup existing calls.Sets an agent as no longer logged in.Agent pool applicationsOption changes take effect on agent login or after an agent
disconnects from a call.Unused, but reserved.Configure an agent for the pool.Enable to require the agent to acknowledge a call.Enable to require the agent to give a DTMF acknowledgement
when the agent receives a call.The option is overridden by AGENTACKCALL on agent login.DTMF key sequence the agent uses to acknowledge a call.The option is overridden by AGENTACCEPTDTMF on agent login.The option is ignored unless the ackcall option is enabled.Time the agent has to acknowledge a call before being logged off.Set how many seconds a call for the agent has to wait for the
agent to acknowledge the call before the agent is automatically
logged off. If set to zero then the call will wait forever for
the agent to acknowledge.The option is overridden by AGENTAUTOLOGOFF on agent login.The option is ignored unless the ackcall option is enabled.Minimum time the agent has between calls.Set the minimum amount of time in milliseconds after
disconnecting a call before the agent can receive a new call.The option is overridden by AGENTWRAPUPTIME on agent login.Music on hold class the agent listens to between calls.Enable to automatically record calls the agent takes.Enable recording calls the agent takes automatically by
invoking the automixmon DTMF feature when the agent connects
to a caller. See features.conf.sample for information about
the automixmon feature.Sound file played to alert the agent when a call is present.A friendly name for the agent used in log messages.
Play an MP3 file or M3U playlist file or stream.
Location of the file to be played.
(argument passed to mpg123)Executes mpg123 to play the given location, which typically would be a mp3 filename
or m3u playlist filename or a URL. Please read http://en.wikipedia.org/wiki/M3U
to see how M3U playlist file format is like, Example usage would be
exten => 1234,1,MP3Player(/var/lib/asterisk/playlist.m3u)
User can exit by pressing any key on the dialpad, or by hanging up.This application does not automatically answer and should be preceeded by an
application such as Answer() or Progress().
Leave a Voicemail message.
This application allows the calling party to leave a message for the specified
list of mailboxes. When multiple mailboxes are specified, the greeting will be taken from
the first mailbox specified. Dialplan execution will stop if the specified mailbox does not
exist.The Voicemail application will exit if any of the following DTMF digits are received:Jump to the o extension in the current dialplan context.Jump to the a extension in the current dialplan context.This application will set the following channel variable upon completion:This indicates the status of the execution of the VoiceMail application.VoiceMailMain
Check Voicemail messages.
This application allows the calling party to check voicemail messages. A specific
mailbox, and optional corresponding context,
may be specified. If a mailbox is not provided, the calling party will
be prompted to enter one. If a context is not specified, the
default context will be used.The VoiceMailMain application will exit if the following DTMF digit is entered as Mailbox
or Password, and the extension exists:Jump to the a extension in the current dialplan context.VoiceMail
Check to see if Voicemail mailbox exists.
None options.DEPRECATED. Use VM_INFO(mailbox[@context],exists) instead.Check to see if the specified mailbox exists. If no voicemail
context is specified, the default context
will be used.This application will set the following channel variable upon completion:This will contain the status of the execution of the MailboxExists application.
Possible values include:VM_INFO
Authenticate with Voicemail passwords.
This application behaves the same way as the Authenticate application, but the passwords
are taken from voicemail.conf. If the mailbox is
specified, only that mailbox's password will be considered valid. If the mailbox
is not specified, the channel variable AUTH_MAILBOX will be set with the authenticated
mailbox.The VMAuthenticate application will exit if the following DTMF digit is entered as Mailbox
or Password, and the extension exists:Jump to the a extension in the current dialplan context.
Play a single voice mail msg from a mailbox by msg id.
The msg id of the msg to play back. This application sets the following channel variable upon completion:The status of the playback attempt as a text string.
Play the name of a voicemail user
This application will say the recorded name of the voicemail user specified as the
argument to this application. If no context is provided, default is assumed.
Tell if a mailbox is configured.
DEPRECATED. Use VM_INFO(mailbox[@context],exists) instead.Returns a boolean of whether the corresponding mailbox exists.
If context is not specified, defaults to the default
context.VM_INFO
Returns the selected attribute from a mailbox.
If not specified, INBOX is assumed.Returns the selected attribute from the specified mailbox.
If context is not specified, defaults to the default
context. Where the folder can be specified, common folders
include INBOX, Old, Work,
Family and Friends.
List All Voicemail User Information.
Tell Asterisk to poll mailboxes for a change
Normally, MWI indicators are only sent when Asterisk itself
changes a mailbox. With external programs that modify the content
of a mailbox from outside the application, an option exists called
pollmailboxes that will cause voicemail to
continually scan all mailboxes on a system for changes. This can
cause a large amount of load on a system. This command allows
external applications to signal when a particular mailbox has
changed, thus permitting external applications to modify mailboxes
and MWI to work without introducing considerable CPU load.If Context is not specified, all
mailboxes on the system will be polled for changes. If
Context is specified, but
Mailbox is omitted, then all mailboxes
within Context will be polled.
Otherwise, only a single mailbox will be polled for changes.
Forks the current Call Data Record for this channel.
Causes the Call Data Record engine to fork a new CDR starting
from the time the application is executed. The forked CDR will be
linked to the end of the CDRs associated with the channel.CDRNoCDRResetCDR
Echo media, DTMF back to the calling party
Echos back any media or DTMF frames read from the calling
channel back to itself. This will not echo CONTROL, MODEM, or NULL
frames. Note: If '#' detected application exits.This application does not automatically answer and should be
preceeded by an application such as Answer() or Progress().
Say a noun in declined form in order to count things
The number of thingsFile name stem for the noun that is the the name of the thingsSelects and plays the proper singular or plural form of a noun
when saying things such as "five calls". English has simple rules
for deciding when to say "call" and when to say "calls", but other
languages have complicated rules which would be extremely difficult
to implement in the Asterisk dialplan language.The correct sound file is selected by examining the
number and adding the appropriate suffix
to filename. If the channel language is
English, then the suffix will be either empty or "s". If the channel
language is Russian or some other Slavic language, then the suffix
will be empty for nominative, "x1" for genative singular, and "x2"
for genative plural.Note that combining filename with
a suffix will not necessarily produce a correctly spelled plural
form. For example, SayCountedNoun(2,man) will play the sound file
"mans" rather than "men". This behavior is intentional. Since the
file name is never seen by the end user, there is no need to
implement complicated spelling rules. We simply record the word
"men" in the sound file named "mans".This application does not automatically answer and should be
preceeded by an application such as Answer() or Progress.SayCountedAdjSayNumber
Say a adjective in declined form in order to count things
The number of thingsFile name stem for the adjectiveThe gender of the noun modified, one of 'm', 'f', 'n', or 'c'Selects and plays the proper form of an adjective according to
the gender and of the noun which it modifies and the number of
objects named by the noun-verb combination which have been counted.
Used when saying things such as "5 new messages". The various
singular and plural forms of the adjective are selected by adding
suffixes to filename.If the channel language is English, then no suffix will ever
be added (since, in English, adjectives are not declined). If the
channel language is Russian or some other slavic language, then the
suffix will the specified gender for
nominative, and "x" for genative plural. (The genative singular is
not used when counting things.) For example, SayCountedAdj(1,new,f)
will play sound file "newa" (containing the word "novaya"), but
SayCountedAdj(5,new,f) will play sound file "newx" (containing the
word "novikh").This application does not automatically answer and should be
preceeded by an application such as Answer(), Progress(), or
Proceeding().SayCountedNounSayNumber
Check channel availability
Optional extra devices to checkIf you need more than one enter them as
Technology2/Resource2&Technology3/Resource3&.....Specification of the device(s) to check. These must be in the format of
Technology/Resource, where Technology
represents a particular channel driver, and Resource
represents a resource available to that particular channel driver.This application will check to see if any of the specified channels are available.This application sets the following channel variables:The name of the available channel, if one existsThe canonical channel name that was used to create the channelThe device state for the deviceThe cause code returned when requesting the channel
Dump Info About The Calling Channel.
Minimum verbose levelDisplays information on channel and listing of all channel
variables. If level is specified, output is only
displayed when the verbose level is currently set to that number
or greater.NoOpVerbose
Get ADSI CPE ID.
Obtains and displays ADSI CPE ID and other information in order
to properly setup dahdi.conf for on-hook operations.
Record to a file.
Is the format of the file type to be recorded (wav, gsm, etc).Is the number of seconds of silence to allow before returning.Is the maximum recording duration in seconds. If missing
or 0 there is no maximum.If filename contains %d, these characters will be replaced with a number
incremented by one each time the file is recorded.
Use core show file formats to see the available formats on your system
User can press # to terminate the recording and continue to the next priority.
If the user hangs up during a recording, all data will be lost and the application will terminate.Will be set to the final filename of the recording, without an extension.This is the final status of the commandA terminating DTMF was received ('#' or '*', depending upon option 't')The maximum silence occurred in the recording.The line was not yet answered and the 's' option was specified.The maximum length was reached.The channel was hung up.An unrecoverable error occurred, which resulted in a WARNING to the logs.
Send arbitrary text to verbose output.
Must be an integer value. If not specified, defaults to 0.Output text message.Sends an arbitrary text message to verbose output.
Send arbitrary text to a selected log level.
Level must be one of ERROR, WARNING, NOTICE,
DEBUG, VERBOSE or DTMF.Output text message.Sends an arbitrary text message to a selected log level.
Queue a call for a call queue.
URL will be sent to the called party if the channel supports it.Will cause the queue to fail out after a specified number of
seconds, checked between each queues.conftimeout and
retry cycle.Will setup an AGI script to be executed on the calling party's channel once they are
connected to a queue member.Will run a macro on the called party's channel (the queue member) once the parties are connected.Will run a gosub on the called party's channel (the queue member) once the parties are connected.Will cause the queue's defaultrule to be overridden by the rule specified.Attempt to enter the caller into the queue at the numerical position specified. 1
would attempt to enter the caller at the head of the queue, and 3 would attempt to place
the caller third in the queue.In addition to transferring the call, a call may be parked and then picked
up by another user.This application will return to the dialplan if the queue does not exist, or
any of the join options cause the caller to not enter the queue.This application does not automatically answer and should be preceeded
by an application such as Answer(), Progress(), or Ringing().This application sets the following channel variables upon completion:The status of the call as a text string.If the call was not answered by an agent this variable will be TRUE.QueueQueueLogAddQueueMemberRemoveQueueMemberPauseQueueMemberUnpauseQueueMemberQUEUE_VARIABLESQUEUE_MEMBERQUEUE_MEMBER_COUNTQUEUE_EXISTSQUEUE_WAITING_COUNTQUEUE_MEMBER_LISTQUEUE_MEMBER_PENALTY
Dynamically adds queue members.
Dynamically adds interface to an existing queue. If the interface is
already in the queue it will return an error.This application sets the following channel variable upon completion:The status of the attempt to add a queue member as a text string.QueueQueueLogAddQueueMemberRemoveQueueMemberPauseQueueMemberUnpauseQueueMemberQUEUE_VARIABLESQUEUE_MEMBERQUEUE_MEMBER_COUNTQUEUE_EXISTSQUEUE_WAITING_COUNTQUEUE_MEMBER_LISTQUEUE_MEMBER_PENALTY
Dynamically removes queue members.
If the interface is NOT in the queue it will return an error.This application sets the following channel variable upon completion:Example: RemoveQueueMember(techsupport,SIP/3000)QueueQueueLogAddQueueMemberRemoveQueueMemberPauseQueueMemberUnpauseQueueMemberQUEUE_VARIABLESQUEUE_MEMBERQUEUE_MEMBER_COUNTQUEUE_EXISTSQUEUE_WAITING_COUNTQUEUE_MEMBER_LISTQUEUE_MEMBER_PENALTY
Pauses a queue member.
Is used to add extra information to the appropriate queue_log entries and manager events.Pauses (blocks calls for) a queue member. The given interface will be paused in the given queue.
This prevents any calls from being sent from the queue to the interface until it is
unpaused with UnpauseQueueMember or the manager interface. If no queuename is given,
the interface is paused in every queue it is a member of. The application will fail if the
interface is not found.This application sets the following channel variable upon completion:The status of the attempt to pause a queue member as a text string.Example: PauseQueueMember(,SIP/3000)QueueQueueLogAddQueueMemberRemoveQueueMemberPauseQueueMemberUnpauseQueueMemberQUEUE_VARIABLESQUEUE_MEMBERQUEUE_MEMBER_COUNTQUEUE_EXISTSQUEUE_WAITING_COUNTQUEUE_MEMBER_LISTQUEUE_MEMBER_PENALTY
Unpauses a queue member.
Is used to add extra information to the appropriate queue_log entries and manager events.Unpauses (resumes calls to) a queue member. This is the counterpart to PauseQueueMember()
and operates exactly the same way, except it unpauses instead of pausing the given interface.This application sets the following channel variable upon completion:The status of the attempt to unpause a queue member as a text string.Example: UnpauseQueueMember(,SIP/3000)QueueQueueLogAddQueueMemberRemoveQueueMemberPauseQueueMemberUnpauseQueueMemberQUEUE_VARIABLESQUEUE_MEMBERQUEUE_MEMBER_COUNTQUEUE_EXISTSQUEUE_WAITING_COUNTQUEUE_MEMBER_LISTQUEUE_MEMBER_PENALTY
Writes to the queue_log file.
Allows you to write your own events into the queue log.Example: QueueLog(101,${UNIQUEID},${AGENT},WENTONBREAK,600)QueueQueueLogAddQueueMemberRemoveQueueMemberPauseQueueMemberUnpauseQueueMemberQUEUE_VARIABLESQUEUE_MEMBERQUEUE_MEMBER_COUNTQUEUE_EXISTSQUEUE_WAITING_COUNTQUEUE_MEMBER_LISTQUEUE_MEMBER_PENALTY
Return Queue information in variables.
Maxmimum number of calls allowed.The strategy of the queue.Number of calls currently in the queue.Current average hold time.Number of completed calls for the queue.Number of abandoned calls.Queue service level.Current service level performance.Makes the following queue variables available.Returns 0 if queue is found and setqueuevar is defined, -1 otherwise.QueueQueueLogAddQueueMemberRemoveQueueMemberPauseQueueMemberUnpauseQueueMemberQUEUE_VARIABLESQUEUE_MEMBERQUEUE_MEMBER_COUNTQUEUE_EXISTSQUEUE_WAITING_COUNTQUEUE_MEMBER_LISTQUEUE_MEMBER_PENALTY
Count number of members answering a queue.
Returns the number of logged-in members for the specified queue.Returns the number of logged-in members for the specified queue that either can take calls or are currently wrapping up after a previous call.Returns the number of logged-in members for the specified queue that are immediately available to answer a call.Returns the total number of members for the specified queue.Gets or sets queue member penalty. If
queuename is not specified
when setting the penalty then the penalty is set in all queues
the interface is a member.Gets or sets queue member paused status. If
queuename is not specified
when setting the paused status then the paused status is set
in all queues the interface is a member.Gets or sets queue member ringinuse. If
queuename is not specified
when setting ringinuse then ringinuse is set
in all queues the interface is a member.Allows access to queue counts [R] and member information [R/W].queuename is required for all read operations.interface is required for all member operations.QueueQueueLogAddQueueMemberRemoveQueueMemberPauseQueueMemberUnpauseQueueMemberQUEUE_VARIABLESQUEUE_MEMBERQUEUE_MEMBER_COUNTQUEUE_EXISTSQUEUE_WAITING_COUNTQUEUE_MEMBER_LISTQUEUE_MEMBER_PENALTY
Count number of members answering a queue.
Returns the number of members currently associated with the specified queuename.This function has been deprecated in favor of the QUEUE_MEMBER() functionQueueQueueLogAddQueueMemberRemoveQueueMemberPauseQueueMemberUnpauseQueueMemberQUEUE_VARIABLESQUEUE_MEMBERQUEUE_MEMBER_COUNTQUEUE_EXISTSQUEUE_WAITING_COUNTQUEUE_MEMBER_LISTQUEUE_MEMBER_PENALTY
Check if a named queue exists on this server
Returns 1 if the specified queue exists, 0 if it does notQueueQueueLogAddQueueMemberRemoveQueueMemberPauseQueueMemberUnpauseQueueMemberQUEUE_VARIABLESQUEUE_MEMBERQUEUE_MEMBER_COUNTQUEUE_EXISTSQUEUE_WAITING_COUNTQUEUE_MEMBER_LISTQUEUE_MEMBER_PENALTY
Count number of calls currently waiting in a queue.
Returns the number of callers currently waiting in the specified queuename.QueueQueueLogAddQueueMemberRemoveQueueMemberPauseQueueMemberUnpauseQueueMemberQUEUE_VARIABLESQUEUE_MEMBERQUEUE_MEMBER_COUNTQUEUE_EXISTSQUEUE_WAITING_COUNTQUEUE_MEMBER_LISTQUEUE_MEMBER_PENALTY
Returns a list of interfaces on a queue.
Returns a comma-separated list of members associated with the specified queuename.QueueQueueLogAddQueueMemberRemoveQueueMemberPauseQueueMemberUnpauseQueueMemberQUEUE_VARIABLESQUEUE_MEMBERQUEUE_MEMBER_COUNTQUEUE_EXISTSQUEUE_WAITING_COUNTQUEUE_MEMBER_LISTQUEUE_MEMBER_PENALTY
Gets or sets queue members penalty.
Gets or sets queue members penalty.This function has been deprecated in favor of the QUEUE_MEMBER() functionQueueQueueLogAddQueueMemberRemoveQueueMemberPauseQueueMemberUnpauseQueueMemberQUEUE_VARIABLESQUEUE_MEMBERQUEUE_MEMBER_COUNTQUEUE_EXISTSQUEUE_WAITING_COUNTQUEUE_MEMBER_LISTQUEUE_MEMBER_PENALTY
Queues.
Show queues information.
Show queue status.
Limit the response to the status of the specified queue.Limit the response to the status of the specified member.Check the status of one or more queues.
Show queue summary.
Queue for which the summary is requested.Request the manager to send a QueueSummary event.
Add interface to queue.
Queue's name.The name of the interface (tech/name) to add to the queue.A penalty (number) to apply to this member. Asterisk will distribute calls to members with higher penalties only after attempting to distribute calls to those with lower penalty.To pause or not the member initially (true/false or 1/0).Text alias for the interface.
Remove interface from queue.
The name of the queue to take action on.The interface (tech/name) to remove from queue.
Makes a queue member temporarily unavailable.
The name of the interface (tech/name) to pause or unpause.Pause or unpause the interface. Set to 'true' to pause the member or 'false' to unpause.The name of the queue in which to pause or unpause this member. If not specified, the member will be paused or unpaused in all the queues it is a member of.Text description, returned in the event QueueMemberPaused.Pause or unpause a member in a queue.
Adds custom entry in queue_log.
Set the penalty for a queue member.
The interface (tech/name) of the member whose penalty to change.The new penalty (number) for the member. Must be nonnegative.If specified, only set the penalty for the member of this queue. Otherwise, set the penalty for the member in all queues to which the member belongs.Change the penalty of a queue member
Set the ringinuse value for a queue member.
Queue Rules.
The name of the rule in queuerules.conf whose contents to list.List queue rules defined in queuerules.conf
Reload a queue, queues, or any sub-section of a queue or queues.
The name of the queue to take action on. If no queue name is specified, then all queues are affected.Whether to reload the queue's members.Whether to reload queuerules.confWhether to reload the other queue options.
Reset queue statistics.
The name of the queue on which to reset statistics.Reset the statistics for a queue.Raised when a Queue member's status has changed.The name of the queue.The name of the queue member.The queue member's channel technology or location.Channel technology or location from which to read device state changes.The penalty associated with the queue member.The number of calls this queue member has serviced.The time this member last took a call, expressed in seconds since 00:00, Jan 1, 1970 UTC.Set to 1 if member is in call. Set to 0 after LastCall time is updated.The numeric device state status of the queue member.AST_DEVICE_UNKNOWNAST_DEVICE_NOT_INUSEAST_DEVICE_INUSEAST_DEVICE_BUSYAST_DEVICE_INVALIDAST_DEVICE_UNAVAILABLEAST_DEVICE_RINGINGAST_DEVICE_RINGINUSEAST_DEVICE_ONHOLDIf set when paused, the reason the queue member was paused.Raised when a member is added to the queue.QueueMemberRemovedAddQueueMemberRaised when a member is removed from the queue.QueueMemberAddedRemoveQueueMemberRaised when a member is paused/unpaused in the queue.The reason a member was paused.PauseQueueMemberUnPauseQueueMemberRaised when a member's penalty is changed.QUEUE_MEMBERRaised when a member's ringinuse setting is changed.QUEUE_MEMBERRaised when a caller joins a Queue.This channel's current position in the queue.The total number of channels in the queue.QueueCallerLeaveQueueRaised when a caller leaves a Queue.QueueCallerJoinRaised when a caller abandons the queue.The channel's original position in the queue.The time the channel was in the queue, expressed in seconds since 00:00, Jan 1, 1970 UTC.Raised when an queue member is notified of a caller in the queue.AgentRingNoAnswerAgentCompleteAgentConnectRaised when a queue member is notified of a caller in the queue and fails to answer.The time the queue member was rung, expressed in seconds since 00:00, Jan 1, 1970 UTC.AgentCalledRaised when a queue member has finished servicing a caller in the queue.The time the queue member talked with the caller in the queue, expressed in seconds since 00:00, Jan 1, 1970 UTC.AgentCalledAgentConnectRaised when a queue member hangs up on a caller in the queue.AgentCalledAgentConnectRaised when a queue member answers and is bridged to a caller in the queue.AgentCalledAgentCompleteAgentDump
OSP Authentication.
The name of the provider that authenticates the call.Reserverd.Authenticate a call by OSP.Input variables:The last hop IP address.The inbound OSP token.Output variables:The inbound call OSP transaction handle.The inbound call duration limit in seconds.This application sets the following channel variable upon completion:The status of OSPAuth attempt as a text string, one ofOSPLookupOSPNextOSPFinish
Lookup destination by OSP.
The exten of the call.The name of the provider that is used to route the call.generate H323 call id for the outbound callgenerate SIP call id for the outbound call. Have not been implementedgenerate IAX call id for the outbound call. Have not been implementedLooks up destination via OSP.Input variables:The actual source device IP address in indirect mode.The last hop IP address.The inbound channel technology for the call.The inbound call OSP transaction handle.The inbound call duration limit in seconds.The inbound source network ID.The inbound routing number.The inbound carrier identification code.The inbound number portability database dip indicator.The inbound service provider identity.The inbound operator company number.The inbound service provider name.The inbound alternate service provider name.The inbound mobile country code.The inbound mobile network code.The inbound To header host part.The inbound Remote-Party-ID header user part.The inbound P-Asserted-Identify header user part.The inbound Diversion header user part.The inbound Diversion header host part.The inbound P-Charge-Info header user part.The inbound custom information, where n is the index beginning with 1
upto 8.Output variables:The outbound call OSP transaction handle.The outbound channel technology for the call.The outbound destination IP address.The outbound calling number.The outbound called number.The outbound destination network ID.The outbound routing number.The outbound carrier identification code.The outbound number portability database dip indicator.The outbound service provider identity.The outbound operator company number.The outbound service provider name.The outbound alternate service provider name.The outbound mobile country code.The outbound mobile network code.The outbound OSP token.The number of remained destinations.The outbound call duration limit in seconds.The outbound Call-ID types.The outbound Call-ID. Only for H.323.The outbound Dial command string.This application sets the following channel variable upon completion:The status of OSPLookup attempt as a text string, one ofOSPAuthOSPNextOSPFinish
Lookup next destination by OSP.
Looks up the next destination via OSP.Input variables:The inbound call OSP transaction handle.The outbound call OSP transaction handle.The inbound call duration limit in seconds.The outbound Call-ID types.The number of remained destinations.Output variables:The outbound channel technology.The destination IP address.The outbound calling number.The outbound called number.The outbound destination network ID.The outbound routing number.The outbound carrier identification code.The outbound number portability database dip indicator.The outbound service provider identity.The outbound operator company number.The outbound service provider name.The outbound alternate service provider name.The outbound mobile country code.The outbound mobile network code.The outbound OSP token.The number of remained destinations.The outbound call duration limit in seconds.The outbound Call-ID. Only for H.323.The outbound Dial command string.This application sets the following channel variable upon completion:The status of the OSPNext attempt as a text string, one ofOSPAuthOSPLookupOSPFinish
Report OSP entry.
Hangup cause.Reserved.Report call state.Input variables:The inbound call OSP transaction handle.The outbound call OSP transaction handle.The OSPAuth status.The OSPLookup status.The OSPNext status.The inbound call leg audio QoS string.The outbound call leg audio QoS string.This application sets the following channel variable upon completion:The status of the OSPFinish attempt as a text string, one ofOSPAuthOSPLookupOSPNext
Send a URL.
Requests client go to URL (IAX2) or sends the
URL to the client (other channels).Result is returned in the SENDURLSTATUS channel variable:
URL successfully sent to client.
Failed to send URL.
Client failed to load URL (wait enabled).
Channel does not support URL transport.
SendURL continues normally if the URL was sent correctly or if the channel
does not support HTML transport. Otherwise, the channel is hung up.SendImageSendText
Set CallerID Presentation.
Presentation Allowed, Not Screened.Presentation Allowed, Passed Screen.Presentation Allowed, Failed Screen.Presentation Allowed, Network Number.Presentation Prohibited, Not Screened.Presentation Prohibited, Passed Screen.Presentation Prohibited, Failed Screen.Presentation Prohibited, Network Number.Number Unavailable.Set Caller*ID presentation on a call.
Load Asterisk ADSI Scripts into phone
adsi script to use. If not given uses the default script asterisk.adsiThis application programs an ADSI Phone with the given scriptGetCPEIDadsi.confInvoke an external Stasis application.Name of the application to invoke.Optional comma-delimited arguments for the
application invocation.Invoke a Stasis application.This application will set the following channel variable upon
completion:This indicates the status of the execution of the
Stasis application.
The channel has exited Stasis without any failures in
Stasis.
A failure occurred when executing the Stasis
The app registry is not instantiated; The app
application. Some (not all) possible reasons for this:
requested is not registered; The app requested is not
active; Stasis couldn't send a start message.
Conference Bridge ApplicationUnused, but reserved.A named profile to apply to specific callers.Callers in a ConfBridge have a profile associated with them
that determine their options. A configuration section is determined to be a
user_profile when the type parameter has a value
of user.
Define this configuration category as a user profile.The type parameter determines how a context in the
configuration file is interpreted.Configure the context as a user_profileConfigure the context as a bridge_profileConfigure the context as a menuSets if the user is an admin or notSets if this is a marked user or notSets if all users should start out mutedPlay MOH when user is alone or waiting on a marked userSilence enter/leave prompts and user intros for this userSets if the number of users should be announced to the userAnnounce user count to all the other users when this user joinsSets if the number of users should be announced to all the other users
in the conference when this user joins. This option can be either set to 'yes' or
a number. When set to a number, the announcement will only occur once the user
count is above the specified number.
Announce to a user when they join an empty conferenceSets if the user must wait for a marked user to enter before joining a conferenceKick the user from the conference when the last marked user leavesSet whether or not notifications of when a user begins and ends talking should be sent out as events over AMISets whether or not DTMF should pass through the conferencePrompt user for their name when joining a conference and play it to the conference when they enterPrompt user for their name when joining a conference and play it to the conference when they enter.
The user will be asked to review the recording of their name before entering the conference.Sets a PIN the user must enter before joining the conferenceThe MOH class to use for this userSound file to play to the user when they join a conferenceApply a denoise filter to the audio before mixingSets whether or not a denoise filter should be applied
to the audio before mixing or not. Off by default. Requires
codec_speex to be built and installed. Do not confuse this option
with drop_silence. Denoise is useful if there is a lot of background
noise for a user as it attempts to remove the noise while preserving
the speech. This option does NOT remove silence from being mixed into
the conference and does come at the cost of a slight performance hit.
Drop what Asterisk detects as silence from audio sent to the bridge
This option drops what Asterisk detects as silence from
entering into the bridge. Enabling this option will drastically
improve performance and help remove the buildup of background
noise from the conference. Highly recommended for large conferences
due to its performance enhancements.
The number of milliseconds of detected silence necessary to trigger silence detection
The time in milliseconds of sound falling within the what
the dsp has established as baseline silence before a user
is considered be silent. This value affects several
operations and should not be changed unless the impact
on call quality is fully understood.What this value affects internally:
1. When talk detection AMI events are enabled, this value
determines when the user has stopped talking after a
period of talking. If this value is set too low
AMI events indicating the user has stopped talking
may get falsely sent out when the user briefly pauses
during mid sentence.
2. The drop_silence option depends on this value to
determine when the user's audio should begin to be
dropped from the conference bridge after the user
stops talking. If this value is set too low the user's
audio stream may sound choppy to the other participants.
This is caused by the user transitioning constantly from
silence to talking during mid sentence.
The best way to approach this option is to set it slightly above
the maximum amount of ms of silence a user may generate during
natural speech.
By default this value is 2500ms. Valid values are 1 through 2^31.The number of milliseconds of detected non-silence necessary to triger talk detection
The time in milliseconds of sound above what the dsp has
established as base line silence for a user before a user
is considered to be talking. This value affects several
operations and should not be changed unless the impact on
call quality is fully understood.
What this value affects internally:
1. Audio is only mixed out of a user's incoming audio stream
if talking is detected. If this value is set too
loose the user will hear themselves briefly each
time they begin talking until the dsp has time to
establish that they are in fact talking.
2. When talk detection AMI events are enabled, this value
determines when talking has begun which results in
an AMI event to fire. If this value is set too tight
AMI events may be falsely triggered by variants in
room noise.
3. The drop_silence option depends on this value to determine
when the user's audio should be mixed into the bridge
after periods of silence. If this value is too loose
the beginning of a user's speech will get cut off as they
transition from silence to talking.
By default this value is 160 ms. Valid values are 1 through 2^31Place a jitter buffer on the user's audio stream before audio mixing is performed
Enabling this option places a jitterbuffer on the user's audio stream
before audio mixing is performed. This is highly recommended but will
add a slight delay to the audio. This option is using the JITTERBUFFER
dialplan function's default adaptive jitterbuffer. For a more fine tuned
jitterbuffer, disable this option and use the JITTERBUFFER dialplan function
on the user before entering the ConfBridge application.
When using the CONFBRIDGE dialplan function, use a user profile as a template for creating a new temporary profileKick the user out of the conference after this many seconds. 0 means there is no timeout for the user.A named profile to apply to specific bridges.ConfBridge bridges have a profile associated with them
that determine their options. A configuration section is determined to be a
bridge_profile when the type parameter has a value
of bridge.
Define this configuration category as a bridge profileThe type parameter determines how a context in the
configuration file is interpreted.Configure the context as a user_profileConfigure the context as a bridge_profileConfigure the context as a menuPlace a jitter buffer on the conference's audio streamSet the internal native sample rate for mixing the conference
Sets the internal native sample rate the
conference is mixed at. This is set to automatically
adjust the sample rate to the best quality by default.
Other values can be anything from 8000-192000. If a
sample rate is set that Asterisk does not support, the
closest sample rate Asterisk does support to the one requested
will be used.
The language used for announcements to the conference.
By default, announcements to a conference use English. Which means
the prompts played to all users within the conference will be
English. By changing the language of a bridge, this will change
the language of the prompts played to all users.
Sets the internal mixing interval in milliseconds for the bridge
Sets the internal mixing interval in milliseconds for the bridge. This
number reflects how tight or loose the mixing will be for the conference.
In order to improve performance a larger mixing interval such as 40ms may
be chosen. Using a larger mixing interval comes at the cost of introducing
larger amounts of delay into the bridge. Valid values here are 10, 20, 40,
or 80.
Record the conference starting with the first active user's entrance and ending with the last active user's exit
Records the conference call starting when the first user
enters the room, and ending when the last user exits the room.
The default recorded filename is
'confbridge-${name of conference bridge}-${start time}.wav'
and the default format is 8khz slinear. This file will be
located in the configured monitoring directory in asterisk.conf.
The filename of the conference recording
When record_conference is set to yes, the specific name of the
record file can be set using this option. Note that since multiple
conferences may use the same bridge profile, this may cause issues
depending on the configuration. It is recommended to only use this
option dynamically with the CONFBRIDGE() dialplan function. This
allows the record name to be specified and a unique name to be chosen.
By default, the record_file is stored in Asterisk's spool/monitor directory
with a unique filename starting with the 'confbridge' prefix.
Append record file when starting/stopping on same conference recording
When record_file_append is set to yes, stopping and starting recording on a
conference adds the new portion to end of current record_file. When this is
set to no, a new record_file is generated every time you start then stop recording
on a conference.
The name of the context into which to register the name of the conference bridge as NoOP() at priority 1
When set this will cause the name of the created conference to be registered
into the named context at priority 1 with an operation of NoOP(). This can
then be used in other parts of the dialplan to test for the existence of a
specific conference bridge.
You should be aware that there are potential races between testing for the
existence of a bridge, and taking action upon that information, consider
for example two callers executing the check simultaniously, and then taking
special action as "first caller" into the bridge. The same for exiting,
directly after the check the bridge can be destroyed before the new caller
enters (creating a new bridge), for example, and the "first member" actions
could thus be missed.
Sets how confbridge handles video distribution to the conference participants
Sets how confbridge handles video distribution to the conference participants.
Note that participants wanting to view and be the source of a video feed
MUST be sharing the same video codec. Also, using video in conjunction with
with the jitterbuffer currently results in the audio being slightly out of sync
with the video. This is a result of the jitterbuffer only working on the audio
stream. It is recommended to disable the jitterbuffer when video is used.No video sources are set by default in the conference. It is still
possible for a user to be set as a video source via AMI or DTMF action
at any time.The video feed will follow whoever is talking and providing video.The last marked user to join the conference with video capabilities
will be the single source of video distributed to all participants.
If multiple marked users are capable of video, the last one to join
is always the source, when that user leaves it goes to the one who
joined before them.The first marked user to join the conference with video capabilities
is the single source of video distribution among all participants. If
that user leaves, the marked user to join after them becomes the source.Limit the maximum number of participants for a single conference
This option limits the number of participants for a single
conference to a specific number. By default conferences
have no participant limit. After the limit is reached, the
conference will be locked until someone leaves. Note however
that an Admin user will always be alowed to join the conference
regardless if this limit is reached or not.
Override the various conference bridge sound files
All sounds in the conference are customizable using the bridge profile options below.
Simply state the option followed by the filename or full path of the filename after
the option. Example: sound_had_joined=conf-hasjoin This will play the conf-hasjoin
sound file found in the sounds directory when announcing someone's name is joining the
conference.The sound played to everyone when someone enters the conference.The sound played to everyone when someone leaves the conference.The sound played before announcing someone's name has
joined the conference. This is used for user intros.
Example "_____ has joined the conference"The sound played when announcing someone's name has
left the conference. This is used for user intros.
Example "_____ has left the conference"The sound played to a user who has been kicked from the conference.The sound played when the mute option it toggled on.The sound played when the mute option it toggled off.The sound played when the user is the only person in the conference.The sound played to a user when there is only one other
person is in the conference.The sound played when announcing how many users there
are in a conference.This file is used in conjunction with sound_there_are
when announcing how many users there are in the conference.
The sounds are stringed together like this.
"sound_there_are" ${number of participants} "sound_other_in_party"The sound played when someone is placed into the conference
after waiting for a marked user.The sound played when a user is placed into a conference that
can not start until a marked user enters.The sound played when the last marked user leaves the conference.The sound played when prompting for a conference pin number.The sound played when an invalid pin is entered too many times.The sound played to a user trying to join a locked conference.The sound played to an admin after toggling the conference to locked mode.The sound played to an admin after toggling the conference to unlocked mode.The sound played when an invalid menu option is entered.When using the CONFBRIDGE dialplan function, use a bridge profile as a template for creating a new temporary profileA conference user menuConference users, as defined by a conf_user,
can have a DTMF menu assigned to their profile when they enter the
ConfBridge application.Define this configuration category as a menuThe type parameter determines how a context in the
configuration file is interpreted.Configure the context as a user_profileConfigure the context as a bridge_profileConfigure the context as a menuWhen using the CONFBRIDGE dialplan function, use a menu profile as a template for creating a new temporary profileDTMF sequences to assign various confbridge actions toThe ConfBridge application also has the ability to apply custom DTMF menus to
each channel using the application. Like the User and Bridge profiles a menu
is passed in to ConfBridge as an argument in the dialplan.Below is a list of menu actions that can be assigned to a DTMF sequence.
To have the first DTMF digit in a sequence be the '#' character, you need to
escape it. If it is not escaped then normal config file processing will
think it is a directive like #include. For example: The mute setting is
toggled when #1 is pressed.\#1=toggle_mute
A single DTMF sequence can have multiple actions associated with it. This is
accomplished by stringing the actions together and using a , as the
delimiter. Example: Both listening and talking volume is reset when 5 is
pressed. 5=reset_talking_volume, reset_listening_volumeplayback will play back an audio file to a channel
and then immediately return to the conference.
This file can not be interupted by DTMF.
Multiple files can be chained together using the
& character.playback_and_continue will
play back a prompt while continuing to
collect the dtmf sequence. This is useful
when using a menu prompt that describes all
the menu options. Note however that any DTMF
during this action will terminate the prompts
playback. Prompt files can be chained together
using the & character as a delimiter.
Toggle turning on and off mute. Mute will make the user silent
to everyone else, but the user will still be able to listen in.
This action does nothing (No Operation). Its only real purpose exists for
being able to reserve a sequence in the config as a menu exit sequence.
Decreases the channel's listening volume.
Increases the channel's listening volume.
Reset channel's listening volume to default level.
Decreases the channel's talking volume.
Increases the channel's talking volume.
Reset channel's talking volume to default level.
The dialplan_exec action allows a user
to escape from the conference and execute
commands in the dialplan. Once the dialplan
exits the user will be put back into the
conference. The possibilities are endless!
This action allows a user to exit the conference and continue
execution in the dialplan.
This action allows an Admin to kick the last participant from the
conference. This action will only work for admins which allows
a single menu to be used for both users and admins.
This action allows an Admin to toggle locking and
unlocking the conference. Non admins can not use
this action even if it is in their menu.
This action allows any user to set themselves as the
single video source distributed to all participants.
This will make the video feed stick to them regardless
of what the video_mode is set to.
This action allows a user to release themselves as
the video source. If video_mode is not set to none
this action will result in the conference returning to
whatever video mode the bridge profile is using.Note that this action will have no effect if the user
is not currently the video source. Also, the user is
not guaranteed by using this action that they will not
become the video source again. The bridge will return
to whatever operation the video_mode option is set to
upon release of the video src.
This action allows an administrator to toggle the mute
state for all non-admins within a conference. All
admin users are unaffected by this option. Note that all
users, regardless of their admin status, are notified
that the conference is muted.
This action plays back the number of participants currently
in a conferenceRaised when a conference starts.The name of the Confbridge conference.ConfbridgeEndConfBridgeRaised when a conference ends.The name of the Confbridge conference.ConfbridgeStartConfBridgeRaised when a channel joins a Confbridge conference.The name of the Confbridge conference.Identifies this user as an admin user.The joining mute status.ConfbridgeLeaveConfBridgeRaised when a channel leaves a Confbridge conference.The name of the Confbridge conference.Identifies this user as an admin user.ConfbridgeJoinConfBridgeRaised when a conference starts recording.The name of the Confbridge conference.ConfbridgeStopRecordConfBridgeRaised when a conference that was recording stops recording.The name of the Confbridge conference.ConfbridgeRecordConfBridgeRaised when a Confbridge participant mutes.The name of the Confbridge conference.Identifies this user as an admin user.ConfbridgeUnmuteConfBridgeRaised when a confbridge participant unmutes.The name of the Confbridge conference.Identifies this user as an admin user.ConfbridgeMuteConfBridgeRaised when a confbridge participant begins or ends talking.The name of the Confbridge conference.Identifies this user as an admin user.ConfBridge
Background a file with talk detect.
If not specified, defaults to 1000.If not specified, defaults to 100.If not specified, defaults to infinity.If not specified, defaults to infinity.Plays back filename, waiting for interruption from a given digit (the digit
must start the beginning of a valid extension, or it will be ignored). During
the playback of the file, audio is monitored in the receive direction, and if
a period of non-silence which is greater than min ms yet less than
max ms is followed by silence for at least sil ms,
which occurs during the first analysistime ms, then the audio playback is
aborted and processing jumps to the talk extension, if available.
Generates a CEL User Defined Event.
Extra text to be included with the event.A CEL event will be immediately generated by this channel, with the supplied name for a type.
Virtual Dictation Machine.
Start dictation machine using optional base_dir for files.
Play an NBS local stream.
Executes nbscat to listen to the local NBS stream.
User can exit by pressing any key.
Send a Fax
Filename of TIFF file to faxMakes the application behave as the answering machine(Default behavior is as calling machine)Send a given TIFF file to the channel as a FAX.This application sets the following channel variables:To identify itself to the remote endTo generate a header line on each pageCause of failureThe CSID of the remote sideNumber of pages sentTransmission rateResolution of sent fax
Receive a Fax
Filename of TIFF file save incoming faxMakes the application behave as the calling machine(Default behavior is as answering machine)Receives a FAX from the channel into the given filename
overwriting the file if it already exists.File created will be in TIFF format.This application sets the following channel variables:To identify itself to the remote endTo generate a header line on each pageCause of failureThe CSID of the remote sideNumber of pages sentTransmission rateResolution of sent fax
Start a while loop.
Start a While Loop. Execution will return to this point when
EndWhile() is called until expr is no longer true.EndWhileExitWhileContinueWhile
End a while loop.
Return to the previous called While().WhileExitWhileContinueWhile
End a While loop.
Exits a While() loop, whether or not the conditional has been satisfied.WhileEndWhileContinueWhile
Restart a While loop.
Returns to the top of the while loop and re-evaluates the conditional.WhileEndWhileExitWhile
Read an extension into a variable.
File to play before reading digits or tone with option iContext in which to match extensions.An integer number of seconds to wait for a digit response. If
greater than 0, that value will override the default timeout.Reads a # terminated string of digits from the user into the given variable.Will set READEXTENSTATUS on exit with one of the following statuses:
A valid extension exists in ${variable}.
No extension was entered in the specified time. Also sets ${variable} to "t".
An invalid extension, ${INVALID_EXTEN}, was entered. Also sets ${variable} to "i".
Line was not up and the option 's' was specified.
Invalid arguments were passed.
Say text to the user.
Connect to Festival, send the argument, get back the waveform, play it to the user,
allowing any given interrupt keys to immediately terminate and return the value, or
any to allow any number back (useful in dialplan).
Find-Me/Follow-Me application.
This application performs Find-Me/Follow-Me functionality for the caller
as defined in the profile matching the followmeid parameter in
followme.conf. If the specified followmeid
profile doesn't exist in followme.conf, execution will be returned
to the dialplan and call execution will continue at the next priority.Returns -1 on hangup.
Plays morse code.
String to playback as morse code to channelPlays the Morse code equivalent of the passed string.This application does not automatically answer and should be preceeded by
an application such as Answer() or Progress().This application uses the following variables:Use this value in (ms) for length of ditThe pitch of the tone in (Hz), default is 800SayAlphaSayPhonetic
Says a specified time in a custom format.
time, in seconds since Jan 1, 1970. May be negative. Defaults to now.timezone, see /usr/share/zoneinfo for a list. Defaults to machine default.a format the time is to be said in. See voicemail.conf.
Defaults to ABdY "digits/at" IMpUses some of the sound files stored in /var/lib/asterisk/sounds to construct a phrase
saying the specified date and/or time in the specified format. STRFTIMESTRPTIMEIFTIME
Says a specified time in a custom format.
time, in seconds since Jan 1, 1970. May be negative. Defaults to now.timezone, see /usr/share/zoneinfo for a list. Defaults to machine default.a format the time is to be said in. See voicemail.conf.
Defaults to ABdY "digits/at" IMpSay the date and time in a specified format.
Direct Inward System Access.
If you need to present a DISA dialtone without entering a password,
simply set passcode to no-passwordYou may specified a filename instead of a
passcode, this filename must contain individual passcodesSpecifies the dialplan context in which the user-entered extension
will be matched. If no context is specified, the DISA application defaults
to the disa context. Presumably a normal system will have a special
context set up for DISA use with some or a lot of restrictions.Specifies a new (different) callerid to be used for this call.Will cause a stutter-dialtone (indication dialrecall)
to be used, if the specified mailbox contains any new messages.The DISA, Direct Inward System Access, application allows someone from
outside the telephone switch (PBX) to obtain an internal system
dialtone and to place calls from it as if they were placing a call from
within the switch.
DISA plays a dialtone. The user enters their numeric passcode, followed by
the pound sign #. If the passcode is correct, the user is then given
system dialtone within context on which a call may be placed.
If the user enters an invalid extension and extension i exists in the specified
context, it will be used.
Be aware that using this may compromise the security of your PBX.The arguments to this application (in extensions.conf) allow either
specification of a single global passcode (that everyone uses), or
individual passcodes contained in a file (filename).The file that contains the passcodes (if used) allows a complete
specification of all of the same arguments available on the command
line, with the sole exception of the options. The file may contain blank
lines, or comments starting with # or ;.AuthenticateVMAuthenticate
Redirects given channel to a dialplan target
Sends the specified channel to the specified extension priorityThis application sets the following channel variables upon completionAre set to the result of the redirection
Receive Mini-Voicemail and forward via e-mail.
Voicemail usernameVoicemail domainThis application is part of the Mini-Voicemail system, configured in minivm.confMiniVM records audio file in configured format and forwards message to e-mail and pager.If there's no user account for that address, a temporary account will be used with default options.The recorded file name and path will be stored in MVM_FILENAME and the duration
of the message will be stored in MVM_DURATIONIf the caller hangs up after the recording, the only way to send the message and clean up is to
execute in the h extension. The application will exit if any of the following DTMF digits
are received and the requested extension exist in the current context.This is the status of the record operation
Play Mini-Voicemail prompts.
Voicemail usernameVoicemail domainThis application is part of the Mini-Voicemail system, configured in minivm.conf.MinivmGreet() plays default prompts or user specific prompts for an account.Busy and unavailable messages can be choosen, but will be overridden if a temporary
message exists for the account.This is the status of the greeting playback.
Notify voicemail owner about new messages.
Voicemail usernameVoicemail domainThis application is part of the Mini-Voicemail system, configured in minivm.conf.MiniVMnotify forwards messages about new voicemail to e-mail and pager. If there's no user
account for that address, a temporary account will be used with default options (set in
minivm.conf).If the channel variable MVM_COUNTER is set, this will be used in the message
file name and available in the template for the message.If no template is given, the default email template will be used to send email and default pager
template to send paging message (if the user account is configured with a paging address.This is the status of the notification attempt
Delete Mini-Voicemail voicemail messages.
File to deleteThis application is part of the Mini-Voicemail system, configured in minivm.conf.It deletes voicemail file set in MVM_FILENAME or given filename.This is the status of the delete operation.
Record account specific messages.
Voicemail usernameVoicemail domainThis application is part of the Mini-Voicemail system, configured in minivm.conf.Use this application to record account specific audio/video messages for busy, unavailable
and temporary messages.Account specific directories will be created if they do not exist.This is the result of the attempt to record the specified greeting.FAILED is set if the file can't be created.
Send Message Waiting Notification to subscriber(s) of mailbox.
Voicemail usernameVoicemail domainNumber of urgent messages in mailbox.Number of new messages in mailbox.Number of old messages in mailbox.This application is part of the Mini-Voicemail system, configured in minivm.conf.MinivmMWI is used to send message waiting indication to any devices whose channels have
subscribed to the mailbox passed in the first parameter.
Reads or sets counters for MiniVoicemail message.
If account is given and it exists, the counter is specific for the account.If account is a domain and the domain directory exists, counters are specific for a domain.The name of the counter is a string, up to 10 characters.The counters never goes below zero. Valid operands for changing the value of a counter when assigning a value are:Increment by value.Decrement by value.Set to value.The operation is atomic and the counter is locked while changing the value. The counters are stored as text files in the minivm account directories. It might be better to use realtime functions if you are using a database to operate your Asterisk.MinivmRecordMinivmGreetMinivmNotifyMinivmDeleteMinivmAccMessMinivmMWIMINIVMACCOUNT
Gets MiniVoicemail account information.
Valid items are:Path to account mailbox (if account exists, otherwise temporary mailbox).1 is static Minivm account exists, 0 otherwise.Full name of account owner.Email address used for account.Email template for account (default template if none is configured).Pager template for account (default template if none is configured).Account code for the voicemail account.Pin code for voicemail account.Time zone for voicemail account.Language for voicemail account.Channel variable value (set in configuration for account).MinivmRecordMinivmGreetMinivmNotifyMinivmDeleteMinivmAccMessMinivmMWIMINIVMCOUNTERRaised when a notification is sent out by a MiniVoiceMail applicationWhat action was taken. Currently, this will always be SentNotificationThe mailbox that the notification was about, specified as mailbox@contextA message counter derived from the MVM_COUNTER channel variable.
Jack Audio Connection Kit
When executing this application, two jack ports will be created;
one input and one output. Other applications can be hooked up to
these ports to access audio coming from, or being send to the channel.
Generate a Constant 1004Hz tone at 0dbm (mu-law).
Previous versions of this application generated the tone at 1000Hz. If for
some reason you would prefer that behavior, supply the o option to get the
old behavior.
Listen to a channel, and optionally whisper into it.
This application is used to listen to the audio from an Asterisk channel. This includes the audio
coming in and out of the channel being spied on. If the chanprefix parameter is specified,
only channels beginning with this string will be spied upon.While spying, the following actions may be performed: - Dialing # cycles the volume level. - Dialing * will stop spying and look for another channel to spy on. - Dialing a series of digits followed by # builds a channel name to append
to chanprefix. For example, executing ChanSpy(Agent) and then dialing the digits '1234#'
while spying will begin spying on the channel 'Agent/1234'. Note that this feature will be overridden
if the 'd' or 'u' options are used.The X option supersedes the three features above in that if a valid
single digit extension exists in the correct context ChanSpy will exit to it.
This also disables choosing a channel based on chanprefix and a digit sequence.ExtenSpyChanSpyStartChanSpyStop
Listen to a channel, and optionally whisper into it.
Specify extension.Optionally specify a context, defaults to default.This application is used to listen to the audio from an Asterisk channel. This includes
the audio coming in and out of the channel being spied on. Only channels created by outgoing calls for the
specified extension will be selected for spying. If the optional context is not supplied,
the current channel's context will be used.While spying, the following actions may be performed: - Dialing # cycles the volume level. - Dialing * will stop spying and look for another channel to spy on.The X option supersedes the three features above in that if a valid
single digit extension exists in the correct context ChanSpy will exit to it.
This also disables choosing a channel based on chanprefix and a digit sequence.ChanSpyChanSpyStartChanSpyStop
Scan DAHDI channels to monitor calls.
Limit scanning to a channel group by setting this option.Allows a call center manager to monitor DAHDI channels in a
convenient way. Use # to select the next channel and use * to exit.ChanSpyStartChanSpyStop
Require phone number to be entered, if no CallerID sent
Total tries caller is allowed to input a callerid. Defaults to 3.Minimum allowable digits in the input callerid number. Defaults to 10.Position reserved for options.Context to check the given callerid against patterns.If no Caller*ID is sent, PrivacyManager answers the channel and asks
the caller to enter their phone number. The caller is given
maxretries attempts to do so. The application does
nothing if Caller*ID was received on the channel.The application sets the following channel variable upon completion:The status of the privacy manager's attempt to collect a phone number from the user.Zapateller
Sends an image file.
Path of the filename (image) to send.Send an image file on a channel supporting it.Result of transmission will be stored in SENDIMAGESTATUS
Transmission succeeded.
Transmission failed.
Image transmission not supported by channel.
SendTextSendURL
MeetMe conference bridge.
The conference numberEnters the user into a specified MeetMe conference. If the confno
is omitted, the user will be prompted to enter one. User can exit the conference by hangup, or
if the p option is specified, by pressing #.The DAHDI kernel modules and a functional DAHDI timing source (see dahdi_test)
must be present for conferencing to operate properly. In addition, the chan_dahdi channel driver
must be loaded for the i and r options to operate at
all.MeetMeCountMeetMeAdminMeetMeChannelAdmin
MeetMe participant count.
Conference number.Plays back the number of users in the specified MeetMe conference.
If var is specified, playback will be skipped and the value
will be returned in the variable. Upon application completion, MeetMeCount will hangup
the channel, unless priority n+1 exists, in which case priority progress will
continue.MeetMe
MeetMe conference administration.
Run admin command for conference confno.Will additionally set the variable MEETMEADMINSTATUS with one of
the following values:
Invalid arguments.
User specified was not found.
Another failure occurred.
The operation was completed successfully.
MeetMe
MeetMe conference Administration (channel specific).
Run admin command for a specific
channel in any conference.
Shared Line Appearance Station.
Station nameThis application should be executed by an SLA station. The argument depends
on how the call was initiated. If the phone was just taken off hook, then the argument
station should be just the station name. If the call was
initiated by pressing a line key, then the station name should be preceded by an underscore
and the trunk name associated with that line button.For example: station1_line1On exit, this application will set the variable SLASTATION_STATUS to
one of the following values:
Shared Line Appearance Trunk.
Trunk nameThis application should be executed by an SLA trunk on an inbound call. The channel calling
this application should correspond to the SLA trunk with the name trunk
that is being passed as an argument.On exit, this application will set the variable SLATRUNK_STATUS to
one of the following values:
Query a given conference of various properties.
Options:Boolean of whether the corresponding conference is locked.Number of parties in a given conferenceDuration of conference in seconds.Boolean of whether the corresponding conference is dynamic.Conference number to retrieve information from.MeetMeMeetMeCountMeetMeAdminMeetMeChannelAdmin
Mute a Meetme user.
Unmute a Meetme user.
List participants in a conference.
Conference number.Lists all users in a particular MeetMe conference.
MeetmeList will follow as separate events, followed by a final event called
MeetmeListComplete.
List active conferences.
Lists data about all active conferences.
MeetmeListRooms will follow as separate events, followed by a final event called
MeetmeListRoomsComplete.Raised when a user joins a MeetMe conference.The identifier for the MeetMe conference.The identifier of the MeetMe user who joined.MeetmeLeaveMeetMeRaised when a user leaves a MeetMe conference.The length of time in seconds that the Meetme user was in the conference.MeetmeJoinRaised when a MeetMe conference ends.MeetmeJoinRaised when a MeetMe user has started talking.The length of time in seconds that the Meetme user has been in the conference at the time of this event.Raised when a MeetMe user begins or ends talking.Raised when a MeetMe user is muted or unmuted.
Directed extension call pickup.
Specification of the pickup target.Additional specifications of pickup targets.This application can pickup a specified ringing channel. The channel
to pickup can be specified in the following ways.1) If no extension targets are specified,
the application will pickup a channel matching the pickup group of the
requesting channel.2) If the extension is specified with a
context of the special string
PICKUPMARK (for example 10@PICKUPMARK), the application
will pickup a channel which has defined the channel variable
PICKUPMARK with the same value as
extension (in this example,
10).3) If the extension is specified
with or without a context, the channel with a
matching extension and context
will be picked up. If no context is specified,
the current context will be used.The extension is typically set on
matching channels by the dial application that created the channel. The
context is set on matching channels by the
channel driver for the device.
Pickup a ringing channel.
List of channel names or channel uniqueids to pickup if ringing.
For example, a channel name could be SIP/bob or
SIP/bob-00000000 to find
SIP/bob-00000000.
Pickup a specified channel if ringing.
Encode and stream using 'ices'.
ICES configuration file.Streams to an icecast server using ices (available separately).
A configuration file must be supplied for ices (see contrib/asterisk-ices.xml).ICES version 2 client and server required.
Execute a system command.
Command to executeDo not use untrusted strings such as CALLERID(num)
or CALLERID(name) as part of the command parameters. You
risk a command injection attack executing arbitrary commands if the untrusted
strings aren't filtered to remove dangerous characters. See function
FILTER().Executes a command by using system(). If the command
fails, the console should report a fallthrough.Result of execution is returned in the SYSTEMSTATUS channel variable:
Could not execute the specified command.
Specified command successfully executed.
Try executing a system command.
Command to executeDo not use untrusted strings such as CALLERID(num)
or CALLERID(name) as part of the command parameters. You
risk a command injection attack executing arbitrary commands if the untrusted
strings aren't filtered to remove dangerous characters. See function
FILTER().Executes a command by using system().Result of execution is returned in the SYSTEMSTATUS channel variable:
Could not execute the specified command.
Specified command successfully executed.
Specified command successfully executed, but returned error code.
Macro Implementation.
The name of the macroExecutes a macro using the context macro-name,
jumping to the s extension of that context and executing each step,
then returning when the steps end.The calling extension, context, and priority are stored in MACRO_EXTEN,
MACRO_CONTEXT and MACRO_PRIORITY respectively. Arguments
become ARG1, ARG2, etc in the macro context.If you Goto out of the Macro context, the Macro will terminate and control will be returned
at the location of the Goto.If MACRO_OFFSET is set at termination, Macro will attempt to continue
at priority MACRO_OFFSET + N + 1 if such a step exists, and N + 1 otherwise.Because of the way Macro is implemented (it executes the priorities contained within
it via sub-engine), and a fixed per-thread memory stack allowance, macros are limited to 7 levels
of nesting (macro calling macro calling macro, etc.); It may be possible that stack-intensive
applications in deeply nested macros could cause asterisk to crash earlier than this limit.
It is advised that if you need to deeply nest macro calls, that you use the Gosub application
(now allows arguments like a Macro) with explict Return() calls instead.Use of the application WaitExten within a macro will not function
as expected. Please use the Read application in order to read DTMF from a channel
currently executing a macro.MacroExitGotoGosub
Conditional Macro implementation.
Executes macro defined in macroiftrue if
expr is true (otherwise macroiffalse
if provided)Arguments and return values as in application Macro()GotoIfGosubIfIF
Exclusive Macro Implementation.
The name of the macroExecutes macro defined in the context macro-name.
Only one call at a time may run the macro. (we'll wait if another call is busy
executing in the Macro)Arguments and return values as in application Macro()Macro
Exit from Macro.
Causes the currently running macro to exit as if it had
ended normally by running out of priorities to execute.
If used outside a macro, will likely cause unexpected behavior.Macro
Wait (sleep) until the current time is the given epoch.
Waits until the given epoch.Sets WAITUNTILSTATUS to one of the following values:
Wait succeeded.
Invalid argument.
Channel hungup before time elapsed.
Time specified had already past.
Interfaces with an external IVR application.
Either forks a process to run given command or makes a socket to connect
to given host and starts a generator on the channel. The generator's play list
is controlled by the external application, which can add and clear entries via
simple commands issued over its stdout. The external application will receive
all DTMF events received on the channel, and notification if the channel is
hung up. The received on the channel, and notification if the channel is hung
up. The application will not be forcibly terminated when the channel is hung up.
For more information see doc/AST.pdf.
Attempt to detect answering machines.
Is maximum initial silence duration before greeting.If this is exceeded, the result is detection as a MACHINEis the maximum length of a greeting.If this is exceeded, the result is detection as a MACHINEIs the silence after detecting a greeting.If this is exceeded, the result is detection as a HUMANIs the maximum time allowed for the algorithmto decide on whether the audio represents a HUMAN, or a MACHINEIs the minimum duration of Voice considered to be a wordIs the minimum duration of silence after a word to
consider the audio that follows to be a new wordIs the maximum number of words in a greetingIf this is REACHED, then the result is detection as a MACHINEWhat is the average level of noise from 0 to 32767 which if not exceeded, should be considered silence?Is the maximum duration of a word to accept.If exceeded, then the result is detection as a MACHINEThis application attempts to detect answering machines at the beginning
of outbound calls. Simply call this application after the call
has been answered (outbound only, of course).When loaded, AMD reads amd.conf and uses the parameters specified as
default values. Those default values get overwritten when the calling AMD
with parameters.This application sets the following channel variables:This is the status of the answering machine detectionIndicates the cause that led to the conclusion
Total Time.
Silence Duration - Initial Silence.
Silence Duration - afterGreetingSilence.
Voice Duration - Greeting.
Word Length - max length of a single word.
Word Count - maximum number of words.
WaitForSilenceWaitForNoise
Provide support for receiving alarm reports from a burglar or fire alarm panel.
This application should be called whenever there is an alarm panel calling in to dump its events.
The application will handshake with the alarm panel, and receive events, validate them, handshake them,
and store them until the panel hangs up. Once the panel hangs up, the application will run the system
command specified by the eventcmd setting in alarmreceiver.conf and pipe the
events to the standard input of the application.
The configuration file also contains settings for DTMF timing, and for the loudness of the
acknowledgement tones.Few Ademco DTMF signalling formats are detected automaticaly: Contact ID, Express 4+1,
Express 4+2, High Speed and Super Fast.The application is affected by the following variables:Maximum call time, in milliseconds.If set, this variable causes application to exit after the specified time.Maximum number of retries per call.If set, this variable causes application to exit after the specified number of messages.alarmreceiver.conf
Executes DAHDI ISDN RAS application.
A list of parameters to pass to the pppd daemon,
separated by , characters.Executes a RAS server using pppd on the given channel.
The channel must be a clear channel (i.e. PRI source) and a DAHDI
channel to be able to use this function (No modem emulation is included).Your pppd must be patched to be DAHDI aware.
Delete a key from the asterisk database.
This application will delete a key from the Asterisk
database.This application has been DEPRECATED in favor of the DB_DELETE function.DB_DELETEDBdeltreeDB
Delete a family or keytree from the asterisk database.
This application will delete a family or keytree
from the Asterisk database.DB_DELETEDBdelDB
Jump to label, saving return address.
Jumps to the label specified, saving the return address.GosubIfMacroGotoReturnStackPop
Conditionally jump to label, saving return address.
Continue at labeliftrue if the condition is true.
Takes the form similar to Goto() of [[context,]extension,]priority.Continue at labeliffalse if the condition is false.
Takes the form similar to Goto() of [[context,]extension,]priority.If the condition is true, then jump to labeliftrue. If false, jumps to
labeliffalse, if specified. In either case, a jump saves the return point
in the dialplan, to be returned to with a Return.GosubReturnMacroIfIFGotoIfGoto
Return from gosub routine.
Return value.Jumps to the last label on the stack, removing it. The return value, if
any, is saved in the channel variable GOSUB_RETVAL.GosubStackPop
Remove one address from gosub stack.
Removes last label on the stack, discarding it.ReturnGosub
Manage variables local to the gosub stack frame.
Read and write a variable local to the gosub stack frame, once we Return() it will be lost
(or it will go back to whatever value it had before the Gosub()).GosubGosubIfReturn
Retrieve variables hidden by the local gosub stack frame.
Read a variable varname hidden by
n levels of gosub stack frames. Note that ${LOCAL_PEEK(0,foo)}
is the same as foo, since the value of n
peeks under 0 levels of stack frames; in other words, 0 is the current level. If
n exceeds the available number of stack frames, then an empty
string is returned.GosubGosubIfReturn
View info about the location which called Gosub
Read the calling context, extension,
priority, or label, as specified by
which, by going up n frames
in the Gosub stack. If suppress is true, then if the
number of available stack frames is exceeded, then no error message will be
printed.
Cause the channel to execute the specified dialplan subroutine.
Cause the channel to execute the specified dialplan subroutine,
returning to the dialplan with execution of a Return().GoSubRaised when a variable local to the gosub stack frame is set due to a subroutine call.The LOCAL variable being set.The variable name will always be enclosed with
LOCAL()The new value of the variable.GoSubgosubLOCALLOCAL_PEEK
Wait for Ring Application.
Returns 0 after waiting at least timeout seconds,
and only after the next ring has completed. Returns 0 on success or
-1 on hangup.
Communicates with SMS service centres and SMS capable analogue phones.
The name of the queue used in /var/spool/asterisk/smsSMS handles exchange of SMS data with a call to/from SMS capable phone or SMS PSTN service center.
Can send and/or receive SMS messages. Works to ETSI ES 201 912; compatible with BT SMS PSTN service in
UK and Telecom Italia in Italy.Typical usage is to use to handle calls from the SMS service centre CLI, or to set up a call using
outgoing or manager interface to connect service centre to SMS()."Messages are processed as per text file message queues. smsq (a separate software) is a command to
generate message queues and send messages.The protocol has tight delay bounds. Please use short frames and disable/keep short the
jitter buffer on the ATA to make sure that respones (ACK etc.) are received in time.Raised when a CDR is generated.The account code of the Party A channel.The Caller ID number associated with the Party A in the CDR.The dialplan extension the Party A was executing.The dialplan context the Party A was executing.The Caller ID name associated with the Party A in the CDR.The channel name of the Party A.The channel name of the Party B.The last dialplan application the Party A executed.
The parameters passed to the last dialplan application the
Party A executed.
The time the CDR was created.
The earliest of either the time when Party A answered, or
the start time of this CDR.
The time when the CDR was finished. This occurs when the
Party A hangs up or when the bridge between Party A and
Party B is broken.
The time, in seconds, of EndTime - StartTime.The time, in seconds, of AnswerTime - StartTime.The final known disposition of the CDR.The channel was not answered. This is the default disposition.The channel attempted to dial but the call failed.The congestion setting in cdr.conf can result
in the AST_CAUSE_CONGESTION hang up cause or the
CONGESTION dial status to map to this disposition.
The channel attempted to dial but the remote party was busy.The channel was answered. The hang up cause will no longer
impact the disposition of the CDR.The channel attempted to dial but the remote party was congested.A flag that informs a billing system how to treat the CDR.This CDR should be ignored.This CDR contains valid billing data.This CDR is for documentation purposes.A unique identifier for the Party A channel.
A user defined field set on the channels. If set on both the Party A
and Party B channel, the userfields of both are concatenated and
separated by a ;.
The Cdr event is only raised when the
cdr_manager backend is loaded and registered with
the CDR engine.
This event can contain additional fields depending on the configuration
provided by cdr_manager.conf.
Raised when a Channel Event Log is generated for a channel.
The name of the CEL event being raised. This can include
both the system defined CEL events, as well as user defined
events.
All events listed here may not be raised, depending
on the configuration in cel.conf.A channel was created.A channel was terminated.A channel answered.A channel was hung up.A channel entered a bridge.A channel left a bridge.A channel entered into a tracked application.A channel left a tracked application.A channel was parked.A channel was unparked.A channel initiated a blind transfer.A channel initiated an attended transfer.A channel initated a call pickup.A channel is being forwarded to another destination.The linked ID associated with this channel is being retired.A Local channel optimization has occurred.A user defined type.
This event is only present if show_user_defined
in cel.conf is True. Otherwise,
the user defined event will be placed directly in the
EventName field.
The channel's account code.The Caller ID number.The Caller ID name.The Caller ID Automatic Number Identification.The Caller ID Redirected Dialed Number Identification Service.The Caller ID Dialed Number Identifier.The dialplan extension the channel is currently executing in.The dialplan context the channel is currently executing in.The dialplan application the channel is currently executing.The arguments passed to the dialplan Application.The time the CEL event occurred.A flag that informs a billing system how to treat the CEL.This event should be ignored.This event contains valid billing data.This event is for documentation purposes.The unique ID of the channel.The linked ID of the channel, which ties this event to other related channel's events.
A user defined field set on a channel, containing arbitrary
application specific data.
If this channel is in a bridge, the channel that it is in
a bridge with.
If this channel is in a bridge, the accountcode of the
channel it is in a bridge with.
Some events will have event specific data that accompanies the CEL record.
This extra data is JSON encoded, and is dependent on the event in
question.
Retrieve content from a remote web or ftp server
If specified, an HTTP POST will be
performed with the content of
post-data, instead of an
HTTP GET (default).CURLOPT
Sets various options for future invocations of CURL.
A cookie to send with the request. Multiple
cookies are supported.Number of seconds to wait for a connection to succeedNumber of seconds to wait for DNS to be resolvedFor FTP URIs, force a text transfer (boolean)For FTP URIs, number of seconds to wait for a
server responseInclude header information in the result
(boolean)For HTTP(S) URIs, number of seconds to wait for a
server responseMaximum number of redirects to followHostname or IP address to use as a proxy serverType of proxyPort number of the proxyA username:password
combination to use for authenticating requests through a
proxyReferer URL to use for the requestUserAgent string to use for the requestA username:password
to use for authentication when the server response to
an initial request indicates a 401 status code.Whether to verify the server certificate against
a list of known root certificate authorities (boolean).Assuming the responses will be in key1=value1&key2=value2
format, reformat the response such that it can be used
by the HASH function.Also translate + to the
space character, in violation of current RFC
standards.Options may be set globally or per channel. Per-channel
settings will override global settings.CURLHASH
Gets per-channel hangupcause information from the channel.
The name of the channel for which to retrieve cause information.Parameter describing which type of information is requested. Types are:Technology-specific cause informationTranslated Asterisk cause codeGets technology-specific or translated Asterisk cause code information
from the channel for the specified channel that resulted from a dial.HANGUPCAUSE_KEYSHangupCauseClear
Gets the list of channels for which hangup causes are available.
Returns a comma-separated list of channel names to be used with the HANGUPCAUSE function.HANGUPCAUSEHangupCauseClear
Clears hangup cause information from the channel that is available through HANGUPCAUSE.
Clears all channel-specific hangup cause information from the channel.
This is never done automatically (i.e. for new Dial()s).HANGUPCAUSEHANGUPCAUSE_KEYS
Counts the number of channels in the specified group.
Group name.Category nameCalculates the group count for the specified group, or uses the
channel's current group if not specified (and non-empty).
Counts the number of channels in the groups matching the specified pattern.
A standard regular expression used to match a group name.A standard regular expression used to match a category name.Calculates the group count for all groups that match the specified pattern.
Note: category matching is applied after matching based on group.
Uses standard regular expression matching on both (see regex(7)).
Gets or sets the channel group.
Category name.category can be employed for more fine grained group management. Each channel
can only be member of exactly one group per category.
Gets a list of the groups set on a channel.
Gets a list of the groups set on a channel.
Get an extension's state.
If it is not specified defaults to default.The EXTENSION_STATE function can be used to retrieve the state from any
hinted extension. For example:NoOp(1234@default has state ${EXTENSION_STATE(1234)})NoOp(4567@home has state ${EXTENSION_STATE(4567@home)})The possible values returned by this function are:UNKNOWN | NOT_INUSE | INUSE | BUSY | INVALID | UNAVAILABLE | RINGING |
RINGINUSE | HOLDINUSE | ONHOLD
Computes an MD5 digest.
Computes an MD5 digest.
Add a Jitterbuffer to the Read side of the channel. This dejitters the audio stream before it reaches the Asterisk core. This is a write only function.
Jitterbuffers are constructed in two different ways.
The first always take three arguments: max_size,
resync_threshold, and target_extra.
Alternatively, a single argument of default can be provided,
which will construct the default jitterbuffer for the given
jitterbuffer type.The arguments are:max_size: Length in milliseconds of the buffer.
Defaults to 200 ms.resync_threshold: The length in milliseconds over
which a timestamp difference will result in resyncing the jitterbuffer.
Defaults to 1000ms.target_extra: This option only affects the adaptive jitterbuffer. It represents
the amount time in milliseconds by which the new jitter buffer will pad its size.
Defaults to 40ms.
exten => 1,1,Set(JITTERBUFFER(fixed)=default)
exten => 1,1,Set(JITTERBUFFER(fixed)=200)
exten => 1,1,Set(JITTERBUFFER(fixed)=200,1500)
exten => 1,1,Set(JITTERBUFFER(adaptive)=default)
exten => 1,1,Set(JITTERBUFFER(adaptive)=200,,60)
exten => 1,1,Set(JITTERBUFFER(fixed)=default)
exten => 1,n,Set(JITTERBUFFER(disabled)=)
If a channel specifies a jitterbuffer due to channel driver configuration and
the JITTERBUFFER function has set a jitterbuffer for that channel, the jitterbuffer set by
the JITTERBUFFER function will take priority and the jitterbuffer set by the channel
configuration will not be applied.
Gets or sets timeouts on the channel. Timeout values are in seconds.
The timeout that will be manipulated. The possible timeout types
are: absolute, digit or
responseThe timeouts that can be manipulated are:absolute: The absolute maximum amount of time permitted for a call.
Setting of 0 disables the timeout.digit: The maximum amount of time permitted between digits when the
user is typing in an extension. When this timeout expires,
after the user has started to type in an extension, the
extension will be considered complete, and will be
interpreted. Note that if an extension typed in is valid,
it will not have to timeout to be tested, so typically at
the expiry of this timeout, the extension will be considered
invalid (and thus control would be passed to the i
extension, or if it doesn't exist the call would be
terminated). The default timeout is 5 seconds.response: The maximum amount of time permitted after falling through a
series of priorities for a channel in which the user may
begin typing an extension. If the user does not type an
extension in this amount of time, control will pass to the
t extension if it exists, and if not the call would be
terminated. The default timeout is 10 seconds.
Retrieve a variable from a configuration file.
If there are multiple variables with the same name, you can specify
0 for the first item (default), -1 for the last
item, or any other number for that specific item. -1 is useful
when the variable is derived from a template and you want the effective value (the last
occurrence), not the value from the template (the first occurrence).This function reads a variable from an Asterisk configuration file.
Raises notifications when Asterisk detects silence or talking on a channel.
The TALK_DETECT function enables events on the channel
it is applied to. These events can be emited over AMI, ARI, and
potentially other Asterisk modules that listen for the internal
notification.The function has two parameters that can optionally be passed
when set on a channel: dsp_talking_threshold
and dsp_silence_threshold.dsp_talking_threshold is the time in milliseconds of sound
above what the dsp has established as base line silence for a user
before a user is considered to be talking. By default, the value of
silencethreshold from dsp.conf
is used. If this value is set too tight events may be
falsely triggered by variants in room noise.Valid values are 1 through 2^31.dsp_silence_threshold is the time in milliseconds of sound
falling within what the dsp has established as baseline silence before
a user is considered be silent. If this value is set too low events
indicating the user has stopped talking may get falsely sent out when
the user briefly pauses during mid sentence.The best way to approach this option is to set it slightly above
the maximum amount of ms of silence a user may generate during
natural speech.By default this value is 2500ms. Valid values are 1
through 2^31.Example:same => n,Set(TALK_DETECT(set)=) ; Enable talk detectionsame => n,Set(TALK_DETECT(set)=1200) ; Update existing talk detection's silence threshold to 1200 mssame => n,Set(TALK_DETECT(remove)=) ; Remove talk detectionsame => n,Set(TALK_DETECT(set)=,128) ; Enable and set talk threshold to 128This function will set the following variables:The TALK_DETECT function uses an audiohook to inspect the
voice media frames on a channel. Other functions, such as JITTERBUFFER,
DENOISE, and AGC use a similar mechanism. Audiohooks are processed
in the order in which they are placed on the channel. As such,
it typically makes sense to place functions that modify the voice
media data prior to placing the TALK_DETECT function, as this will
yield better results.Example:same => n,Set(DENOISE(rx)=on) ; Denoise received audiosame => n,Set(TALK_DETECT(set)=) ; Perform talk detection on the denoised received audio
Check if a value is NULL.
Returns 1 if NULL or 0 otherwise.
SET assigns a value to a channel variable.
Test the existence of a value.
Returns 1 if exists, 0 otherwise.
Check for an expresion.
Returns the data following ? if true, else the data following :
Temporal Conditional.
Returns the data following ? if true, else the data following :
Retrieve the value of a variable from another channel.
DEPRECATED: Used to set whether an audiohook may be inherited to another
channel. Due to architectural changes in Asterisk 12, audiohook inheritance
is performed automatically and this function now lacks function.
Prior to Asterisk 12, masquerades would occur under all sorts of
situations which were hard to predict. In Asterisk 12, masquerades only
occur as a result of a small set of operations for which inheriting all
audiohooks from the original channel is now safe. So in Asterisk 12.5+,
all audiohooks are inherited without needing other controls expressing
which audiohooks should be inherited under which conditions.
Set the TX or RX volume of a channel.
Must be TX or RX.The VOLUME function can be used to increase or decrease the tx or
rx gain of any channel.For example:Set(VOLUME(TX)=3)Set(VOLUME(RX)=2)Set(VOLUME(TX,p)=3)Set(VOLUME(RX,p)=3)
Get or Set a presence state.
The provider of the presence, such as CustomPresenceWhich field of the presence state information is wanted.The PRESENCE_STATE function can be used to retrieve the presence from any
presence provider. For example:NoOp(SIP/mypeer has presence ${PRESENCE_STATE(SIP/mypeer,value)})NoOp(Conference number 1234 has presence message ${PRESENCE_STATE(MeetMe:1234,message)})The PRESENCE_STATE function can also be used to set custom presence state from
the dialplan. The CustomPresence: prefix must be used. For example:Set(PRESENCE_STATE(CustomPresence:lamp1)=away,temporary,Out to lunch)Set(PRESENCE_STATE(CustomPresence:lamp2)=dnd,,Trying to get work done)Set(PRESENCE_STATE(CustomPresence:lamp3)=xa,T24gdmFjYXRpb24=,,e)Set(BASE64_LAMP3_PRESENCE=${PRESENCE_STATE(CustomPresence:lamp3,subtype,e)})You can subscribe to the status of a custom presence state using a hint in
the dialplan:exten => 1234,hint,,CustomPresence:lamp1The possible values for both uses of this function are:not_set | unavailable | available | away | xa | chat | dnd
RealTime Read/Write Functions.
Use delim1 with delim2 on
read and field without delim2 on
writeIf we are reading and delim1 is not specified, defaults
to ,Parameter only used when reading, if not specified defaults to =This function will read or write values from/to a RealTime repository.
REALTIME(....) will read names/values from the repository, and
REALTIME(....)= will write a new value/field to the repository. On a
read, this function returns a delimited text string. The name/value
pairs are delimited by delim1, and the name and value are delimited
between each other with delim2.
If there is no match, NULL will be returned by the function.
On a write, this function will always return NULL.REALTIME_STOREREALTIME_DESTROYREALTIME_FIELDREALTIME_HASH
RealTime Store Function.
This function will insert a new set of values into the RealTime repository.
If RT engine provides an unique ID of the stored record, REALTIME_STORE(...)=..
creates channel variable named RTSTOREID, which contains value of unique ID.
Currently, a maximum of 30 field/value pairs is supported.REALTIMEREALTIME_DESTROYREALTIME_FIELDREALTIME_HASH
RealTime Destroy Function.
This function acts in the same way as REALTIME(....) does, except that
it destroys the matched record in the RT engine.If live_dangerously in asterisk.conf
is set to no, this function can only be read from the
dialplan, and not directly from external protocols. It can, however, be
executed as a write operation (REALTIME_DESTROY(family, fieldmatch)=ignored)REALTIMEREALTIME_STOREREALTIME_FIELDREALTIME_HASH
RealTime query function.
This function retrieves a single item, fieldname
from the RT engine, where fieldmatch contains the value
matchvalue. When written to, the REALTIME_FIELD() function
performs identically to the REALTIME() function.REALTIMEREALTIME_STOREREALTIME_DESTROYREALTIME_HASH
RealTime query function.
This function retrieves a single record from the RT engine, where
fieldmatch contains the value
matchvalue and formats the output suitably, such that
it can be assigned to the HASH() function. The HASH() function then provides
a suitable method for retrieving each field value of the record.REALTIMEREALTIME_STOREREALTIME_DESTROYREALTIME_FIELD
Initiate an ENUM query.
If no method-type is given, the default will be
sip.If no zone-suffix is given, the default will be
e164.arpaThis will do a ENUM lookup of the given phone number.
Retrieve results from a ENUMQUERY.
The identifier returned by the ENUMQUERY function.The number of the result that you want to retrieve.Results start at 1. If this argument is specified
as getnum, then it will return the total number of results
that are available or -1 on error.This function will retrieve results from a previous use
of the ENUMQUERY function.
General or specific querying of NAPTR records for ENUM or ENUM-like DNS pointers.
If no method-type is given, the default will be
sip.If no record# is given,
defaults to 1.If no zone-suffix is given, the default will be
e164.arpaFor more information see doc/AST.pdf.
TXTCIDNAME looks up a caller name via DNS.
If no zone-suffix is given, the default will be
e164.arpaThis function looks up the given phone number in DNS to retrieve
the caller id name. The result will either be blank or be the value
found in the TXT record in DNS.
Return the Version info for this Asterisk.
The possible values are:A string of digits is returned, e.g. 10602 for 1.6.2 or 100300 for 10.3.0,
or 999999 when using an SVN build.The string representing the user's name whose account
was used to configure Asterisk, is returned.The string representing the name of the host on which Asterisk was configured, is returned.The string representing the type of machine on which Asterisk was configured, is returned.The string representing the OS of the machine on which Asterisk was configured, is returned.The string representing the date on which Asterisk was configured, is returned.The string representing the kernel version of the machine on which Asterisk
was configured, is returned.If there are no arguments, return the version of Asterisk in this format: SVN-branch-1.4-r44830MExample: Set(junky=${VERSION()};Sets junky to the string SVN-branch-1.6-r74830M, or possibly, SVN-trunk-r45126M.
Initiate an SRV query.
The service for which to look up SRV records. An example would be something
like _sip._udp.example.comThis will do an SRV lookup of the given service.
Retrieve results from an SRVQUERY.
The identifier returned by the SRVQUERY function.The number of the result that you want to retrieve.Results start at 1. If this argument is specified
as getnum, then it will return the total number of results
that are available.This function will retrieve results from a previous use
of the SRVQUERY function.
Manages a group of users for dialing.
The operation name, possible values are:add - add a channel name or interface (write-only)del - remove a channel name or interface (write-only)Presents an interface meant to be used in concert with the Dial
application, by presenting a list of channels which should be dialled when
referenced.When DIALGROUP is read from, the argument is interpreted as the particular
group for which a dial should be attempted. When DIALGROUP is written to
with no arguments, the entire list is replaced with the argument specified.Functionality is similar to a queue, except that when no interfaces are
available, execution may continue in the dialplan. This is useful when
you want certain people to be the first to answer any calls, with immediate
fallback to a queue when the front line people are busy or unavailable, but
you still want front line people to log in and out of that group, just like
a queue.Example:exten => 1,1,Set(DIALGROUP(mygroup,add)=SIP/10)exten => 1,n,Set(DIALGROUP(mygroup,add)=SIP/20)exten => 1,n,Dial(${DIALGROUP(mygroup)})
Apply automatic gain control to audio on a channel.
This can be either rx or txThe AGC function will apply automatic gain control to the audio on the
channel that it is executed on. Using rx for audio received
and tx for audio transmitted to the channel. When using this
function you set a target audio level. It is primarily intended for use with
analog lines, but could be useful for other channels as well. The target volume
is set with a number between 1-32768. The larger the number
the louder (more gain) the channel will receive.Examples:exten => 1,1,Set(AGC(rx)=8000)exten => 1,2,Set(AGC(tx)=off)
Apply noise reduction to audio on a channel.
This can be either rx or tx
the values that can be set to this are either on and
offThe DENOISE function will apply noise reduction to audio on the channel
that it is executed on. It is very useful for noisy analog lines, especially
when adjusting gains or using AGC. Use rx for audio received from the channel
and tx to apply the filter to the audio being sent to the channel.Examples:exten => 1,1,Set(DENOISE(rx)=on)exten => 1,2,Set(DENOISE(tx)=off)
Converts charsets of strings.
Input charsetOutput charsetString to convert, from in-charset to out-charsetConverts string from in-charset into out-charset.
For available charsets, use iconv -l on your shell command line.Due to limitations within the API, ICONV will not currently work with
charsets with embedded NULLs. If found, the string will terminate.
Gets the list of channels, optionally filtering by a regular expression.
Gets the list of channels, optionally filtering by a regular_expression. If
no argument is provided, all known channels are returned. The
regular_expression must correspond to
the POSIX.2 specification, as shown in regex(7). The list returned
will be space-delimited.
Gets or sets variables on the master channel
Allows access to the channel which created the current channel, if any. If the channel is already
a master channel, then accesses local channel variables.
Gets/sets various pieces of information about the channel.
Standard items (provided by all channel technologies) are:R/W the Automatic Message Accounting (AMA) flags on the channel.
When read from a channel, the integer value will always be returned.
When written to a channel, both the string format or integer value
is accepted.OMITBILLINGDOCUMENTATIONR/W the channel's account code.R/O format currently being read.R/O format used natively for audio.R/O format currently being written.R/W The channel's DTMF bridge features.
May include one or more of 'T' 'K' 'H' 'W' and 'X' in a similar manner to options
in the Dial application. When setting it, the features string
must be all upper case.R/W numeric call pickup groups that this channel is a member.R/W numeric call pickup groups this channel can pickup.R/W named call pickup groups that this channel is a member.R/W named call pickup groups this channel can pickup.R/O technology used for channel.R/O Whether the channel is hanging up (1/0)R/W the parseable goto string indicating where the channel is
expected to return to in the PBX after exiting the next bridge it joins
on the condition that it doesn't hang up. The parseable goto string uses
the same syntax as the Goto application.W/O Replace the most recently added hangup handler
with a new hangup handler on the channel if supplied. The
assigned string is passed to the Gosub application when
the channel is hung up. Any optionally omitted context
and exten are supplied by the channel pushing the handler
before it is pushed.W/O Push a hangup handler onto the channel hangup
handler stack. The assigned string is passed to the
Gosub application when the channel is hung up. Any
optionally omitted context and exten are supplied by the
channel pushing the handler before it is pushed.W/O Wipe the entire hangup handler stack and replace
with a new hangup handler on the channel if supplied. The
assigned string is passed to the Gosub application when
the channel is hung up. Any optionally omitted context
and exten are supplied by the channel pushing the handler
before it is pushed.R/W language for sounds played.R/W class (from musiconhold.conf) for hold music.The name of the channelR/W parkinglot for parking.R/W set rxgain level on channel drivers that support it.Whether or not channels bridged to this channel require secure signaling (1/0)Whether or not channels bridged to this channel require secure media (1/0)R/O state of the channelR/W zone for indications playedR/W ISDN Transfer Capability, one of:R/W set txgain level on channel drivers that support it.R/O format used natively for videoR/W whether or not context tracing is enabled, only available
if CHANNEL_TRACE is defined.R/W returns the channel responsible for hangup.R/O returns the internal application name.R/O returns the application data if available.R/O returns the extension for an outbound channel.R/O returns the context for an outbound channel.R/O returns the channel name for an outbound channel.R/O returns the channel uniqueid.R/O returns the linkedid if available, otherwise returns the uniqueid.R/W The maximum number of forwards allowed.R/O Call identifier log tag associated with the channel
e.g., [C-00000000].Gets/sets various pieces of information about the channel, additional item may
be available from the channel driver; see its documentation for details. Any item
requested that is not available on the current channel will return an empty string.
; Push a hangup handler subroutine existing at dialplan
; location default,s,1 onto the current channel
same => n,Set(CHANNEL(hangup_handler_push)=default,s,1)
; Set the current tonezone to Germany (de)
same => n,Set(CHANNEL(tonezone)=de)
; Set the allowed maximum number of forwarding attempts
same => n,Set(CHANNEL(max_forwards)=10)
; If this channel is ejected from its next bridge, and if
; the channel is not hung up, begin executing dialplan at
; location default,after-bridge,1
same => n,Set(CHANNEL(after_bridge_goto)=default,after-bridge,1)
; Log the current state of the channel
same => n,Log(NOTICE, This channel is: ${CHANNEL(state)})
View internal ast_frames as they are read and written on a channel.
A filter can be applied to the trace to limit what frames are viewed. This
filter can either be a white or black list
of frame types. When no filter type is present, white is
used. If no arguments are provided at all, all frames will be output.
Below are the different types of frames that can be filtered.Examples:exten => 1,1,Set(FRAME_TRACE(white)=DTMF_BEGIN,DTMF_END); view only DTMF frames. exten => 1,1,Set(FRAME_TRACE()=DTMF_BEGIN,DTMF_END); view only DTMF frames. exten => 1,1,Set(FRAME_TRACE(black)=DTMF_BEGIN,DTMF_END); view everything except DTMF frames.
Fetch a row from a multirow query.
For queries which are marked as mode=multirow, the original
query returns a result-id from which results
may be fetched. This function implements the actual fetch of the results.This also sets ODBC_FETCH_STATUS.
If rows are available.
If no rows are available.
Clear the resultset of a sucessful multirow query.
For queries which are marked as mode=multirow, this will clear
any remaining rows of the specified resultset.
Escapes single ticks for use in SQL statements.
Used in SQL templates to escape data which may contain single ticks
' which are otherwise used to delimit data.Example: SELECT foo FROM bar WHERE baz='${SQL_ESC(${ARG1})}'
Format a variable according to a format string.
Parses the format string specified and returns a string matching
that format. Supports most options found in sprintf(3).
Returns a shortened string if a format specifier is not recognized.sprintf(3)
Read from or write to the Asterisk database.
This function will read from or write a value to the Asterisk database. On a
read, this function returns the corresponding value from the database, or blank
if it does not exist. Reading a database value will also set the variable
DB_RESULT. If you wish to find out if an entry exists, use the DB_EXISTS
function.DBdelDB_DELETEDBdeltreeDB_EXISTS
Check to see if a key exists in the Asterisk database.
This function will check to see if a key exists in the Asterisk
database. If it exists, the function will return 1. If not,
it will return 0. Checking for existence of a database key will
also set the variable DB_RESULT to the key's value if it exists.DB
Obtain a list of keys within the Asterisk database.
This function will return a comma-separated list of keys existing
at the prefix specified within the Asterisk database. If no argument is
provided, then a list of key families will be returned.
Return a value from the database and delete it.
This function will retrieve a value from the Asterisk database
and then remove that key from the database. DB_RESULT
will be set to the key's value if it exists.If live_dangerously in asterisk.conf
is set to no, this function can only be read from the
dialplan, and not directly from external protocols. It can, however, be
executed as a write operation (DB_DELETE(family, key)=ignored)DBdelDBDBdeltree
Gets or sets Caller*ID data on the channel.
The allowable datatypes are:Optional Caller*ID to parse instead of using the Caller*ID from the
channel. This parameter is only optional when reading the Caller*ID.Gets or sets Caller*ID data on the channel. Uses channel callerid by
default or optional callerid, if specified.The pres field gets/sets a combined value
for name-pres and
num-pres.The allowable values for the name-charset
field are the following:UnknownISO8859-1WithdrawnISO8859-2ISO8859-3ISO8859-4ISO8859-5ISO8859-7ISO10646 Bmp StringISO10646 UTF-8 String
Gets or sets Caller*ID presentation on the channel.
Gets or sets Caller*ID presentation on the channel.
This function is deprecated in favor of CALLERID(num-pres)
and CALLERID(name-pres) or CALLERID(pres) to get/set both
at once.
The following values are valid:Presentation Allowed, Not Screened.Presentation Allowed, Passed Screen.Presentation Allowed, Failed Screen.Presentation Allowed, Network Number.Presentation Prohibited, Not Screened.Presentation Prohibited, Passed Screen.Presentation Prohibited, Failed Screen.Presentation Prohibited, Network Number.Number Unavailable.
Gets or sets Connected Line data on the channel.
The allowable datatypes are:If set, this will prevent the channel from sending out protocol
messages because of the value being setGets or sets Connected Line data on the channel.The pres field gets/sets a combined value
for name-pres and
num-pres.The allowable values for the name-charset
field are the following:UnknownISO8859-1WithdrawnISO8859-2ISO8859-3ISO8859-4ISO8859-5ISO8859-7ISO10646 Bmp StringISO10646 UTF-8 String
Gets or sets Redirecting data on the channel.
The allowable datatypes are:If set, this will prevent the channel from sending out protocol
messages because of the value being setGets or sets Redirecting data on the channel.The orig-pres,
from-pres and to-pres
fields get/set a combined value for the corresponding
...-name-pres and ...-num-pres
fields.The recognized values for the reason
and orig-reason fields are the following:Callee is AwayCall Forwarding By The Called DTECall Forwarding BusyCall Forwarding No ReplyCall Forwarding UnconditionalCall DeflectionDo Not DisturbFollow MeCalled DTE Out-Of-OrderSend the call to voicemailTime of DayCallee is UnavailableUnknownYou can set a user defined reason string that SIP can
send/receive instead. The user defined reason string my need to be
quoted depending upon SIP or the peer's requirements. These strings
are treated as unknown by the non-SIP channel drivers.The allowable values for the xxx-name-charset
field are the following:UnknownISO8859-1WithdrawnISO8859-2ISO8859-3ISO8859-4ISO8859-5ISO8859-7ISO10646 Bmp StringISO10646 UTF-8 String
Executes a command using the system shell and captures its output.
The command that the shell should execute.Do not use untrusted strings such as CALLERID(num)
or CALLERID(name) as part of the command parameters. You
risk a command injection attack executing arbitrary commands if the untrusted
strings aren't filtered to remove dangerous characters. See function
FILTER().Collects the output generated by a command executed by the system shellExample: Set(foo=${SHELL(echo bar)})The command supplied to this function will be executed by the
system's shell, typically specified in the SHELL environment variable. There
are many different system shells available with somewhat different behaviors,
so the output generated by this function may vary between platforms.If live_dangerously in asterisk.conf
is set to no, this function can only be executed from the
dialplan, and not directly from external protocols.
Get or set a call completion configuration parameter for a channel.
The allowable options are:The CALLCOMPLETION function can be used to get or set a call
completion configuration parameter for a channel. Note that setting
a configuration parameter will only change the parameter for the
duration of the call.
For more information see doc/AST.pdf.
For more information on call completion parameters, see configs/ccss.conf.sample.
Gets or sets a CDR variable.
CDR field name:Caller ID.Last application arguments.The final state of the CDR.NO ANSWERNO ANSWER (NULL record)FAILEDBUSYANSWEREDCONGESTIONSource.Time the call started.R/W the Automatic Message Accounting (AMA) flags on the channel.
When read from a channel, the integer value will always be returned.
When written to a channel, both the string format or integer value
is accepted.OMITBILLINGDOCUMENTATIONAccessing this setting is deprecated in CDR. Please use the CHANNEL function instead.Destination.Time the call was answered.The channel's account code.Accessing this setting is deprecated in CDR. Please use the CHANNEL function instead.Destination context.Time the call ended.The channel's unique id.Destination channel.Duration of the call.The channel's user specified field.Last application.Duration of the call once it was answered.Channel name.CDR sequence number.All of the CDR field names are read-only, except for accountcode,
userfield, and amaflags. You may, however, supply
a name not on the above list, and create your own variable, whose value can be changed
with this function, and this variable will be stored on the CDR.CDRs can only be modified before the bridge between two channels is
torn down. For example, CDRs may not be modified after the Dial
application has returned.Example: exten => 1,1,Set(CDR(userfield)=test)
Set a property on a channel's CDR.
The property to set on the CDR.Set this channel as the preferred Party A when
channels are associated together.Write-OnlySetting to 1 will disable CDRs for this channel.
Setting to 0 will enable CDRs for this channel.Write-OnlyThis function sets a property on a channel's CDR. Properties
alter the behavior of how the CDR operates for that channel.
Check if the callerid is on the blacklist.
Uses astdb to check if the Caller*ID is in family blacklist.
Returns 1 or 0.DB
Encode a string in base64.
Input stringReturns the base64 string.BASE64_DECODEAES_DECRYPTAES_ENCRYPT
Decode a base64 string.
Input string.Returns the plain text string.BASE64_ENCODEAES_DECRYPTAES_ENCRYPT
Returns system information specified by parameter.
System load average from past minute.Number of active calls currently in progress.System uptime in hours.This parameter is dependant upon operating system.Total usable main memory size in KiB.This parameter is dependant upon operating system.Available memory size in KiB.This parameter is dependant upon operating system.Memory used by buffers in KiB.This parameter is dependant upon operating system.Total swap space still available in KiB.This parameter is dependant upon operating system.Free swap space still available in KiB.This parameter is dependant upon operating system.Number of current processes.This parameter is dependant upon operating system.Returns information from a given parameter.
Gets or sets the global variable specified.
Global variable nameSet or get the value of a global variable specified in varname
Gets or sets the shared variable specified.
Variable nameIf not specified will default to current channel. It is the complete
channel name: SIP/12-abcd1234 or the prefix only SIP/12.Implements a shared variable area, in which you may share variables between
channels.The variables used in this space are separate from the general namespace of
the channel and thus SHARED(foo) and foo
represent two completely different variables, despite sharing the same name.Finally, realize that there is an inherent race between channels operating
at the same time, fiddling with each others' internal variables, which is why
this special variable namespace exists; it is to remind you that variables in
the SHARED namespace may change at any time, without warning. You should
therefore take special care to ensure that when using the SHARED namespace,
you retrieve the variable and store it in a regular channel variable before
using it in a set of calculations (or you might be surprised by the result).Raised when a variable is shared between channels.The SHARED variable being set.The variable name will always be enclosed with
SHARED()The new value of the variable.SHARED
Encodes a string to URI-safe encoding according to RFC 2396.
Input string to be encoded.Returns the encoded string defined in data.
Decodes a URI-encoded string according to RFC 2396.
Input string to be decoded.Returns the decoded URI-encoded data string.
Get information about a PJSIP contact
The name of the contact to query.The configuration option for the contact to query for.
Supported options are those fields on the
contact object.
Computes a SHA1 digest.
Input stringGenerate a SHA1 digest via the SHA1 algorythm.Example: Set(sha1hash=${SHA1(junky)})Sets the asterisk variable sha1hash to the string 60fa5675b9303eb62f99a9cd47f9f5837d18f9a0
which is known as his hash
Checks the existence of a dialplan target.
This function returns 1 if the target exits. Otherwise, it returns 0.
Determine whether an extension exists or not.
Defaults to the current contextPriority defaults to 1.Returns a true value if the indicated context,
extension, and priority exist.This function has been deprecated in favor of the DIALPLAN_EXISTS() function
Intercepts hold frames on a channel and raises an event instead of passing the frame on
Choose a random number in a range.
Choose a random number between min and max.
min defaults to 0, if not specified, while max defaults
to RAND_MAX (2147483647 on many systems).Example: Set(junky=${RAND(1,8)});
Sets junky to a random number between 1 and 8, inclusive.
Count the voicemails in a specified mailbox.
If not specified, defaults to INBOXCount the number of voicemails in a specified mailbox, you could also specify
the mailbox folder.Example: exten => s,1,Set(foo=${VMCOUNT(125@default)})
Attempt to obtain a named mutex.
Attempts to grab a named lock exclusively, and prevents other channels from
obtaining the same lock. LOCK will wait for the lock to become available.
Returns 1 if the lock was obtained or 0 on error.To avoid the possibility of a deadlock, LOCK will only attempt to
obtain the lock for 3 seconds if the channel already has another lock.If live_dangerously in asterisk.conf
is set to no, this function can only be executed from the
dialplan, and not directly from external protocols.
Attempt to obtain a named mutex.
Attempts to grab a named lock exclusively, and prevents other channels
from obtaining the same lock. Returns 1 if the lock was
available or 0 otherwise.If live_dangerously in asterisk.conf
is set to no, this function can only be executed from the
dialplan, and not directly from external protocols.
Unlocks a named mutex.
Unlocks a previously locked mutex. Returns 1 if the channel
had a lock or 0 otherwise.It is generally unnecessary to unlock in a hangup routine, as any locks
held are automatically freed when the channel is destroyed.If live_dangerously in asterisk.conf
is set to no, this function can only be executed from the
dialplan, and not directly from external protocols.
Get or Set a device state.
The DEVICE_STATE function can be used to retrieve the device state from any
device state provider. For example:NoOp(SIP/mypeer has state ${DEVICE_STATE(SIP/mypeer)})NoOp(Conference number 1234 has state ${DEVICE_STATE(MeetMe:1234)})The DEVICE_STATE function can also be used to set custom device state from
the dialplan. The Custom: prefix must be used. For example:Set(DEVICE_STATE(Custom:lamp1)=BUSY)Set(DEVICE_STATE(Custom:lamp2)=NOT_INUSE)You can subscribe to the status of a custom device state using a hint in
the dialplan:exten => 1234,hint,Custom:lamp1The possible values for both uses of this function are:UNKNOWN | NOT_INUSE | INUSE | BUSY | INVALID | UNAVAILABLE | RINGING |
RINGINUSE | ONHOLD
Get the devices set for a dialplan hint.
The HINT function can be used to retrieve the list of devices that are
mapped to a dialplan hint. For example:NoOp(Hint for Extension 1234 is ${HINT(1234)})
Get information about a PJSIP AOR
The name of the AOR to query.The configuration option for the AOR to query for.
Supported options are those fields on the
aor object in
pjsip.conf.
Get a field from a sorcery object
The name of the module owning the sorcery instance.The type of object to query.The id of the object to query.The name of the field.Fields that have multiple occurrences may be retrieved in two ways.Returns all matching fields concatenated
in a single string separated by separator
which defaults to ,.Returns the nth occurrence of the field
as specified by occurrence_number which defaults to 1.
The default is concat with separator ,.Specifies either the separator for concat
or the occurrence number for single.
Encrypt a string with AES given a 16 character key.
AES KeyInput stringReturns an AES encrypted string encoded in base64.AES_DECRYPTBASE64_ENCODEBASE64_DECODE
Decrypt a string encoded in base64 with AES given a 16 character key.
AES KeyInput string.Returns the plain text string.AES_ENCRYPTBASE64_ENCODEBASE64_DECODE
Count the fields with an arbitrary delimiter
The delimiter may be specified as a special or extended ASCII character, by encoding it. The characters
\n, \r, and \t are all recognized as the newline,
carriage return, and tab characters, respectively. Also, octal and hexadecimal specifications are recognized
by the patterns \0nnn and \xHH, respectively. For example, if you wanted
to encode a comma as the delimiter, you could use either \054 or \x2C.Example: If ${example} contains ex-amp-le, then ${FIELDQTY(example,-)} returns 3.
Return the 1-based offset of a field in a list
Search the variable named varname for the string value
delimited by delim and return a 1-based offset as to its location. If not found
or an error occured, return 0.The delimiter may be specified as a special or extended ASCII character, by encoding it. The characters
\n, \r, and \t are all recognized as the newline,
carriage return, and tab characters, respectively. Also, octal and hexadecimal specifications are recognized
by the patterns \0nnn and \xHH, respectively. For example, if you wanted
to encode a comma as the delimiter, you could use either \054 or \x2C.Example: If ${example} contains ex-amp-le, then ${FIELDNUM(example,-,amp)} returns 2.Remove an item from a list, by name.Remove value from the list contained in the varname
variable, where the list delimiter is specified by the delim parameter. This is
very useful for removing a single channel name from a list of channels, for example.
Filter the string to include only the allowed characters
Permits all characters listed in allowed-chars,
filtering all others outs. In addition to literally listing the characters,
you may also use ranges of characters (delimited by a -Hexadecimal characters started with a \x(i.e. \x20)Octal characters started with a \0 (i.e. \040)Also \t,\n and \r are recognized.If you want the - character it needs to be prefixed with a
\
Replace a set of characters in a given string with another character.
Iterates through a string replacing all the find-chars with
replace-char. replace-char may be either
empty or contain one character. If empty, all find-chars will be
deleted from the output.The replacement only occurs in the output. The original variable is not
altered.
Replace instances of a substring within a string with another string.
Searches for all instances of the find-string in provided variable and
replaces them with replace-string. If replace-string
is an empty string, this will effecively delete that substring. If max-replacements
is specified, this function will stop after performing replacements max-replacements times.The replacement only occurs in the output. The original variable is not altered.
Pass the given argument back as a value.
Literally returns the given string. The intent is to permit
other dialplan functions which take a variable name as an argument to be able to take a literal
string, instead.The functions which take a variable name need to be passed var and not
${var}. Similarly, use PASSTHRU() and not ${PASSTHRU()}.Example: ${CHANNEL} contains SIP/321-1 ${CUT(PASSTHRU(${CUT(CHANNEL,-,1)}),/,2)}) will return 321
Check string against a regular expression.
Return 1 on regular expression match or 0 otherwisePlease note that the space following the double quotes separating the
regex from the data is optional and if present, is skipped. If a space is
desired at the beginning of the data, then put two spaces there; the second
will not be skipped.
Clear the keys from a specified hashname.
Clears all keys out of the specified hashname.
Implementation of a dialplan associative array
In two arguments mode, gets and sets values to corresponding keys within
a named associative array. The single-argument mode will only work when assigned
to from a function defined by func_odbc
Retrieve the keys of the HASH() function.
Returns a comma-delimited list of the current keys of the associative array
defined by the HASH() function. Note that if you iterate over the keys of
the result, adding keys during iteration will cause the result of the HASHKEYS()
function to change.
Hash the letters in string into equivalent keypad numbers.
Example: ${KEYPADHASH(Les)} returns "537"
Allows setting multiple variables at once.
The comma-delimited list passed as a value to which the function is set will
be interpreted as a set of values to which the comma-delimited list of
variable names in the argument should be set.Example: Set(ARRAY(var1,var2)=1,2) will set var1 to 1 and var2 to 2
Returns the epoch of the arbitrary date/time string structured as described by the format.
This is useful for converting a date into EPOCH time,
possibly to pass to an application like SayUnixTime or to calculate the difference
between the two date stringsExample: ${STRPTIME(2006-03-01 07:30:35,America/Chicago,%Y-%m-%d %H:%M:%S)} returns 1141219835
Returns the current date/time in the specified format.
STRFTIME supports all of the same formats as the underlying C function
strftime(3).
It also supports the following format: %[n]q - fractions of a second,
with leading zeros.Example: %3q will give milliseconds and %1q
will give tenths of a second. The default is set at milliseconds (n=3).
The common case is to use it in combination with %S, as in %S.%3q.strftime(3)
Evaluate stored variables
Using EVAL basically causes a string to be evaluated twice.
When a variable or expression is in the dialplan, it will be
evaluated at runtime. However, if the results of the evaluation
is in fact another variable or expression, using EVAL will have it
evaluated a second time.Example: If the MYVAR contains
OTHERVAR, then the result of ${EVAL(
MYVAR)} in the dialplan will be the
contents of OTHERVAR. Normally just
putting MYVAR in the dialplan the result
would be OTHERVAR.
Convert string to all uppercase letters.
Example: ${TOUPPER(Example)} returns "EXAMPLE"
Convert string to all lowercase letters.
Example: ${TOLOWER(Example)} returns "example"
Return the length of the string given.
Example: ${LEN(example)} returns 7
Quotes a given string, escaping embedded quotes as necessary
Example: ${QUOTE(ab"c"de)} will return ""ab\"c\"de""
Quotes a given string for use in a CSV file, escaping embedded quotes as necessary
Example: ${CSV_QUOTE("a,b" 123)} will return """a,b"" 123"
Removes and returns the first item off of a variable containing delimited text
Example:exten => s,1,Set(array=one,two,three)exten => s,n,While($["${SET(var=${SHIFT(array)})}" != ""])exten => s,n,NoOp(var is ${var})exten => s,n,EndWhileThis would iterate over each value in array, left to right, and
would result in NoOp(var is one), NoOp(var is two), and
NoOp(var is three) being executed.
Removes and returns the last item off of a variable containing delimited text
Example:exten => s,1,Set(array=one,two,three)exten => s,n,While($["${SET(var=${POP(array)})}" != ""])exten => s,n,NoOp(var is ${var})exten => s,n,EndWhileThis would iterate over each value in array, right to left, and
would result in NoOp(var is three), NoOp(var is two), and
NoOp(var is one) being executed.
Appends one or more values to the end of a variable containing delimited text
Example: Set(PUSH(array)=one,two,three) would append one,
two, and three to the end of the values stored in the variable
"array".
Inserts one or more values to the beginning of a variable containing delimited text
Example: Set(UNSHIFT(array)=one,two,three) would insert one,
two, and three before the values stored in the variable
"array".
Performs Mathematical Functions.
Is of the form:
number1opnumber2
where the possible values for op
are:+,-,/,*,%,<<,>>,^,AND,OR,XOR,<,>,<=,>=,== (and behave as their C equivalents)Wanted type of result:f, float - float(default)i, int - integerh, hex - hexc, char - charPerforms mathematical functions based on two parameters and an operator. The returned
value type is typeExample: Set(i=${MATH(123%16,int)}) - sets var i=11
Increments the value of a variable, while returning the updated value to the dialplan
The variable name to be manipulated, without the braces.
Increments the value of a variable, while returning the updated value to the dialplanExample: INC(MyVAR) - Increments MyVarNote: INC(${MyVAR}) - Is wrong, as INC expects the variable name, not its value
Decrements the value of a variable, while returning the updated value to the dialplan
The variable name to be manipulated, without the braces.
Decrements the value of a variable, while returning the updated value to the dialplanExample: DEC(MyVAR) - Decrements MyVarNote: DEC(${MyVAR}) - Is wrong, as DEC expects the variable name, not its value
Execute a periodic dialplan hook into the audio of a call.
(On Read Only) Context for the hook extension.(On Read Only) The hook extension.(On Read Only) Number of seconds in between hook runs.
Whole seconds only.(On Write Only) The hook ID.For example, you could use this function to enable playing
a periodic beep sound in a call.To turn on: Set(BEEPID=${PERIODIC_HOOK(hooks,beep,180)})To turn off: Set(PERIODIC_HOOK(${BEEPID})=off)To turn back on again later:Set(PERIODIC_HOOK(${BEEPID})=on)It is important to note that the hook does not actually
run on the channel itself. It runs asynchronously on a new channel.
Any audio generated by the hook gets injected into the call for
the channel PERIODIC_HOOK() was set on.The hook dialplan will have two variables available.
HOOK_CHANNEL is the channel the hook is
enabled on. HOOK_ID is the hook ID for
enabling or disabling the hook.
Get information about a PJSIP endpoint
The name of the endpoint to query.The configuration option for the endpoint to query for.
Supported options are those fields on the
endpoint object in
pjsip.conf.
Sorts a list of key/vals into a list of keys, based upon the vals.
Takes a comma-separated list of keys and values, each separated by a colon, and returns a
comma-separated list of the keys, sorted by their values. Values will be evaluated as
floating-point numbers.
Slices and dices strings, based upon a named delimiter.
Variable you want cutDelimiter, defaults to -Number of the field you want (1-based offset), may also be specified as a range (with -)
or group of ranges and fields (with &)Cut out information from a string (varname), based upon a named delimiter.
Gets or sets the environment variable specified.
Environment variable nameVariables starting with AST_ are reserved to the system and may not be set.
Does a check on the specified file.
Flag may be one of the following:d - Checks if the file is a directory.e - Checks if the file exists.f - Checks if the file is a regular file.m - Returns the file mode (in octal)s - Returns the size (in bytes) of the fileA - Returns the epoch at which the file was last accessed.C - Returns the epoch at which the inode was last changed.M - Returns the epoch at which the file was last modified.If live_dangerously in asterisk.conf
is set to no, this function can only be executed from the
dialplan, and not directly from external protocols.
Read or write text file.
Maybe specified as any number. If negative, offset specifies the number
of bytes back from the end of the file.If specified, will limit the length of the data read to that size. If negative,
trims length bytes from the end of the file.The format parameter may be
used to delimit the type of line terminators in line mode.Read and write text file in character and line mode.Examples:Read mode (byte): ;reads the entire content of the file. Set(foo=${FILE(/tmp/test.txt)}) ;reads from the 11th byte to the end of the file (i.e. skips the first 10). Set(foo=${FILE(/tmp/test.txt,10)}) ;reads from the 11th to 20th byte in the file (i.e. skip the first 10, then read 10 bytes). Set(foo=${FILE(/tmp/test.txt,10,10)})Read mode (line): ; reads the 3rd line of the file. Set(foo=${FILE(/tmp/test.txt,3,1,l)}) ; reads the 3rd and 4th lines of the file. Set(foo=${FILE(/tmp/test.txt,3,2,l)}) ; reads from the third line to the end of the file. Set(foo=${FILE(/tmp/test.txt,3,,l)}) ; reads the last three lines of the file. Set(foo=${FILE(/tmp/test.txt,-3,,l)}) ; reads the 3rd line of a DOS-formatted file. Set(foo=${FILE(/tmp/test.txt,3,1,l,d)})Write mode (byte): ; truncate the file and write "bar" Set(FILE(/tmp/test.txt)=bar) ; Append "bar" Set(FILE(/tmp/test.txt,,,a)=bar) ; Replace the first byte with "bar" (replaces 1 character with 3) Set(FILE(/tmp/test.txt,0,1)=bar) ; Replace 10 bytes beginning at the 21st byte of the file with "bar" Set(FILE(/tmp/test.txt,20,10)=bar) ; Replace all bytes from the 21st with "bar" Set(FILE(/tmp/test.txt,20)=bar) ; Insert "bar" after the 4th character Set(FILE(/tmp/test.txt,4,0)=bar)Write mode (line): ; Replace the first line of the file with "bar" Set(FILE(/tmp/foo.txt,0,1,l)=bar) ; Replace the last line of the file with "bar" Set(FILE(/tmp/foo.txt,-1,,l)=bar) ; Append "bar" to the file with a newline Set(FILE(/tmp/foo.txt,,,al)=bar)If live_dangerously in asterisk.conf
is set to no, this function can only be executed from the
dialplan, and not directly from external protocols.FILE_COUNT_LINEFILE_FORMAT
Obtains the number of lines of a text file.
Format may be one of the following:If not specified, an attempt will be made to determine the newline format type.Returns the number of lines, or -1 on error.If live_dangerously in asterisk.conf
is set to no, this function can only be executed from the
dialplan, and not directly from external protocols.FILEFILE_FORMAT
Return the newline format of a text file.
Return the line terminator type:'u' - Unix "\n" format'd' - DOS "\r\n" format'm' - Macintosh "\r" format'x' - Cannot be determinedIf live_dangerously in asterisk.conf
is set to no, this function can only be executed from the
dialplan, and not directly from external protocols.FILEFILE_COUNT_LINE
Checks if an Asterisk module is loaded in memory.
Module name complete with .soChecks if a module is loaded. Use the full module name
as shown by the list in module list.
Returns 1 if module exists in memory, otherwise 0
Pitch shift both tx and rx audio streams on a channel.
Direction can be either rx, tx, or
both. The direction can either be set to a valid floating
point number between 0.1 and 4.0 or one of the enum values listed below. A value
of 1.0 has no effect. Greater than 1 raises the pitch. Lower than 1 lowers
the pitch.The pitch amount can also be set by the following valuesExamples:exten => 1,1,Set(PITCH_SHIFT(tx)=highest); raises pitch an octave exten => 1,1,Set(PITCH_SHIFT(rx)=higher) ; raises pitch more exten => 1,1,Set(PITCH_SHIFT(both)=high) ; raises pitch exten => 1,1,Set(PITCH_SHIFT(rx)=low) ; lowers pitch exten => 1,1,Set(PITCH_SHIFT(tx)=lower) ; lowers pitch more exten => 1,1,Set(PITCH_SHIFT(both)=lowest) ; lowers pitch an octave exten => 1,1,Set(PITCH_SHIFT(rx)=0.8) ; lowers pitch exten => 1,1,Set(PITCH_SHIFT(tx)=1.5) ; raises pitch Bucket file APIScheme in use for bucketTime at which the bucket was createdTime at which the bucket was last modifiedScheme in use for fileTime at which the file was createdTime at which the file was last modifiedRaised when an outbound registration completes.The type of channel that was registered (or not).The username portion of the registration.The address portion of the registration.The status of the registration request.What caused the rejection of the request, if available.Raised when a blind transfer is complete.Indicates if the transfer was successful or if it failed.An internal error occurred.Invalid configuration for transfer (e.g. Not bridged)Bridge does not permit transfersTransfer completed successfullyA result of Success does not necessarily mean that a target was succesfully
contacted. It means that a party was succesfully placed into the dialplan at the expected location.Indicates if the transfer was performed outside of Asterisk. For instance,
a channel protocol native transfer is external. A DTMF transfer is internal.Destination context for the blind transfer.Destination extension for the blind transfer.BlindTransferRaised when an attended transfer is complete.Indicates the method by which the attended transfer completed.The transfer was accomplished by merging two bridges into one.The transfer was accomplished by having a channel or bridge run a dialplan application.The transfer was accomplished by linking two bridges together using a local channel pair.The transfer was accomplished by placing all parties into a threeway call.The transfer failed.Indicates the surviving bridge when bridges were merged to complete the transferThis header is only present when DestType is Bridge or ThreewayIndicates the application that is running when the transfer completesThis header is only present when DestType is AppThe name of the surviving transferer channel when a transfer results in a threeway callThis header is only present when DestType is ThreewayThe headers in this event attempt to describe all the major details of the attended transfer. The two transferer channels
and the two bridges are determined based on their chronological establishment. So consider that Alice calls Bob, and then Alice
transfers the call to Voicemail. The transferer and bridge headers would be arranged as follows:OrigTransfererChannel: Alice's channel in the bridge with Bob.OrigBridgeUniqueid: The bridge between Alice and Bob.SecondTransfererChannel: Alice's channel that called Voicemail.SecondBridgeUniqueid: Not present, since a call to Voicemail has no bridge.Now consider if the order were reversed; instead of having Alice call Bob and transfer him to Voicemail, Alice instead
calls her Voicemail and transfers that to Bob. The transferer and bridge headers would be arranged as follows:OrigTransfererChannel: Alice's channel that called Voicemail.OrigBridgeUniqueid: Not present, since a call to Voicemail has no bridge.SecondTransfererChannel: Alice's channel in the bridge with Bob.SecondBridgeUniqueid: The bridge between Alice and Bob.AtxFer
Retrieve the data api tree.
Retrieve the data api tree.
Get DB Entry.
Put DB entry.
Delete DB entry.
Delete DB Tree.
Call Detail Record configurationCDR is Call Detail Record, which provides logging services via a variety of
pluggable backend modules. Detailed call information can be recorded to
databases, files, etc. Useful for billing, fraud prevention, compliance with
Sarbanes-Oxley aka The Enron Act, QOS evaluations, and more.Global settings applied to the CDR engine.Enable/disable verbose CDR debugging.When set to True, verbose updates
of changes in CDR information will be logged. Note that this is only
of use when debugging CDR behavior.Enable/disable CDR logging.Define whether or not to use CDR logging. Setting this to "no" will override
any loading of backend CDR modules. Default is "yes".Log calls that are never answered and don't set an outgoing party.
Define whether or not to log unanswered calls that don't involve an outgoing party. Setting
this to "yes" will make calls to extensions that don't answer and don't set a side B channel
(such as by using the Dial application) receive CDR log entries. If this option is set to
"no", then those log entries will not be created. Unanswered calls which get offered to an
outgoing line will always receive log entries regardless of this option, and that is the
intended behavior.
Log congested calls.Define whether or not to log congested calls. Setting this to "yes" will
report each call that fails to complete due to congestion conditions.Don't produce CDRs while executing hangup logicAs each CDR for a channel is finished, its end time is updated
and the CDR is finalized. When a channel is hung up and hangup
logic is present (in the form of a hangup handler or the
h extension), a new CDR is generated for the
channel. Any statistics are gathered from this new CDR. By enabling
this option, no new CDR is created for the dialplan logic that is
executed in h extensions or attached hangup handler
subroutines. The default value is yes, indicating
that a CDR will be generated during hangup logic.Count microseconds for billsec purposesNormally, the billsec field logged to the CDR backends
is simply the end time (hangup time) minus the answer time in seconds. Internally,
asterisk stores the time in terms of microseconds and seconds. By setting
initiatedseconds to yes, you can force asterisk to report any seconds
that were initiated (a sort of round up method). Technically, this is
when the microsecond part of the end time is greater than the microsecond
part of the answer time, then the billsec time is incremented one second.Submit CDRs to the backends for processing in batchesDefine the CDR batch mode, where instead of posting the CDR at the end of
every call, the data will be stored in a buffer to help alleviate load on the
asterisk server.Use of batch mode may result in data loss after unsafe asterisk termination,
i.e., software crash, power failure, kill -9, etc.The maximum number of CDRs to accumulate before triggering a batchDefine the maximum number of CDRs to accumulate in the buffer before posting
them to the backend engines. batch must be set to yes.The maximum time to accumulate CDRs before triggering a batchDefine the maximum time to accumulate CDRs before posting them in a batch to the
backend engines. If this time limit is reached, then it will post the records, regardless of the value
defined for size. batch must be set to yes.Time is expressed in seconds.Post batched CDRs on their own thread instead of the schedulerThe CDR engine uses the internal asterisk scheduler to determine when to post
records. Posting can either occur inside the scheduler thread, or a new
thread can be spawned for the submission of every batch. For small batches,
it might be acceptable to just use the scheduler thread, so set this to yes.
For large batches, say anything over size=10, a new thread is recommended, so
set this to no.Block shutdown of Asterisk until CDRs are submittedWhen shutting down asterisk, you can block until the CDRs are submitted. If
you don't, then data will likely be lost. You can always check the size of
the CDR batch buffer with the CLI cdr status command. To enable blocking on
submission of CDR data during asterisk shutdown, set this to yes.
List available bridging technologies and their statuses.
Returns detailed information about the available bridging technologies.BridgeTechnologySuspendBridgeTechnologyUnsuspend
Suspend a bridging technology.
The name of the bridging technology to suspend.Marks a bridging technology as suspended, which prevents subsequently created bridges from using it.BridgeTechnologySuspendBridgeTechnologyUnsuspend
Unsuspend a bridging technology.
The name of the bridging technology to unsuspend.Clears a previously suspended bridging technology, which allows subsequently created bridges to use it.BridgeTechnologyListBridgeTechnologySuspend
Bridge two channels.
The current channel is bridged to the specified channel.Allows the ability to bridge two channels via the dialplan.This application sets the following channel variable upon completion:The result of the bridge attempt as a text string.BridgeBridgeCreateBridgeEnter
Bridge two channels already in the PBX.
Channel to Bridge to Channel2.Channel to Bridge to Channel1.Play courtesy tone to Channel 2.Bridge together two channels already in the PBX.BridgeBridgeCreateBridgeEnterBridgeDestroyBridgeInfoBridgeKickBridgeListFeatures ConfigurationMilliseconds allowed between digit presses when entering a feature code.Sound to play when automon or automixmon is activatedSound to play when automon or automixmon is attempted but fails to startSeconds allowed between digit presses when dialing a transfer destinationSeconds to wait for attended transfer destination to answerHang up the call entirely if the attended transfer failsWhen this option is set to no, then Asterisk will attempt to
re-call the transferrer if the call to the transfer target fails. If the call to the
transferrer fails, then Asterisk will wait atxferloopdelay
milliseconds and then attempt to dial the transfer target again. This process will
repeat until atxfercallbackretries attempts to re-call
the transferrer have occurred.When this option is set to yes, then Asterisk will not attempt
to re-call the transferrer if the call to the transfer target fails. Asterisk will instead
hang up all channels involved in the transfer.Seconds to wait between attempts to re-dial transfer destinationatxferdropcallNumber of times to re-attempt dialing a transfer destinationatxferdropcallSound to play to during transfer and transfer-like operations.This sound will play to the transferrer and transfer target channels when
an attended transfer completes. This sound is also played to channels when performing
an AMI Bridge action.Sound to play to a transferee when a transfer failsDigits to dial to abort an attended transfer attemptThis option is only available to the transferrer during an attended
transfer operation. Aborting a transfer results in the transfer being cancelled and
the original parties in the call being re-bridged.Digits to dial to complete an attended transferThis option is only available to the transferrer during an attended
transfer operation. Completing the transfer with a DTMF sequence is functionally
equivalent to hanging up the transferrer channel during an attended transfer. The
result is that the transfer target and transferees are bridged.Digits to dial to change an attended transfer into a three-way callThis option is only available to the transferrer during an attended
transfer operation. Pressing this DTMF sequence will result in the transferrer,
the transferees, and the transfer target all being in a single bridge together.Digits to dial to toggle who the transferrer is currently bridged to during an attended transferThis option is only available to the transferrer during an attended
transfer operation. Pressing this DTMF sequence will result in the transferrer swapping
which party he is bridged with. For instance, if the transferrer is currently bridged with
the transfer target, then pressing this DTMF sequence will cause the transferrer to be
bridged with the transferees.Digits used for picking up ringing callsIn order for the pickup attempt to be successful, the party attempting to
pick up the call must either have a namedpickupgroup in
common with a ringing party's namedcallgroup or must
have a pickupgroup in common with a ringing party's
callgroup.Sound to play to picker when a call is picked upSound to play to picker when a call cannot be picked upNumber of dial attempts allowed when attempting a transferSound that is played when an incorrect extension is dialed and the transferer should try again.Sound that is played when an incorrect extension is dialed and the transferer has no attempts remaining.DTMF options that can be triggered during bridged callsDTMF sequence to initiate an attended transferThe transferee parties will be placed on hold and the
transferrer may dial an extension to reach a transfer target. During an
attended transfer, the transferrer may consult with the transfer target
before completing the transfer. Once the transferrer has hung up or pressed
the atxfercomplete DTMF sequence, then the transferees
and transfer target will be bridged.DTMF sequence to initiate a blind transferThe transferee parties will be placed on hold and the
transferrer may dial an extension to reach a transfer target. During a
blind transfer, as soon as the transfer target is dialed, the transferrer
is hung up.DTMF sequence to disconnect the current callEntering this DTMF sequence will cause the bridge to end, no
matter the number of parties presentDTMF sequence to park a callThe parking lot used to park the call is determined by using either the
PARKINGLOT channel variable or a configured value on
the channel (provided by the channel driver) if the variable is not present. If
no configured value on the channel is present, then "default"
is used. The call is parked in the next available space in the parking lot.DTMF sequence to start or stop monitoring a callThis will cause the channel that pressed the DTMF sequence
to be monitored by the Monitor application. The
format for the recording is determined by the TOUCH_MONITOR_FORMAT
channel variable. If this variable is not specified, then wav is the
default. The filename is constructed in the following manner: prefix-timestamp-filenamewhere prefix is either the value of the TOUCH_MONITOR_PREFIX
channel variable or auto if the variable is not set. The timestamp
is a UNIX timestamp. The filename is either the value of the TOUCH_MONITOR
channel variable or the callerID of the channels if the variable is not set.DTMF sequence to start or stop mixmonitoring a call Operation of the automixmon is similar to the automon
feature, with the following exceptions:
TOUCH_MIXMONITOR is used in place of TOUCH_MONITORTOUCH_MIXMONITOR_FORMAT is used in place of TOUCH_MIXMONITOR
There is no equivalent for TOUCH_MONITOR_PREFIX. "auto" is always how the filename begins.automonSection for defining custom feature invocations during a callThe applicationmap is an area where new custom features can be created. Items
defined in the applicationmap are not automatically accessible to bridged parties. Access
to the individual items is controled using the DYNAMIC_FEATURES channel variable.
The DYNAMIC_FEATURES is a # separated list of
either applicationmap item names or featuregroup names.A custom feature to invoke during a bridged callEach item listed here is a comma-separated list of parameters that determine
how a feature may be invoked during a call Example: eggs = *5,self,Playback(hello-world),defaultThis would create a feature called eggs that could be invoked
during a call by pressing the *5. The party that presses the DTMF
sequence would then trigger the Playback application to play the
hello-world file. The application invocation would happen on the
party that pressed the DTMF sequence since self is specified. The
other parties in the bridge would hear the default music on hold
class during the playback.In addition to the syntax outlined in this documentation, a backwards-compatible alternative
is also allowed. The following applicationmap lines are functionally identical: eggs = *5,self,Playback(hello-world),default eggs = *5,self,Playback,hello-world,default eggs = *5,self,Playback,"hello-world",defaultThe DTMF sequence used to trigger the optionThe party that the feature will be invoked onThe dialplan application to run when the DTMF sequence is pressedThe arguments to the dialplan application to runMusic on hold class to play to bridge participants that are not the target of the application invocationGroupings of items from the applicationmapFeature groups allow for multiple applicationmap items to be
grouped together. Like with individual applicationmap items, feature groups
can be part of the DYNAMIC_FEATURES channel variable.
In addition to creating groupings, the feature group section allows for the
DTMF sequence used to invoke an applicationmap item to be overridden with
a different sequence.Applicationmap item to place in the feature groupEach item here must be a name of an item in the applicationmap. The
argument may either be a new DTMF sequence to use for the item or it
may be left blank in order to use the DTMF sequence specified in the
applicationmap. For example: eggs => *1 bacon =>would result in the applicationmap items eggs and
bacon being in the featuregroup. The former would have its
default DTMF trigger overridden with *1 and the latter would
have the DTMF value specified in the applicationmap.
Get or set a feature option on a channel.
The allowed values are:Inherit feature settings made in FEATURE or FEATUREMAP to child channels.When this function is used as a read, it will get the current
value of the specified feature option for this channel. It will be
the value of this option configured in features.conf if a channel specific
value has not been set. This function can also be used to set a channel
specific value for the supported feature options.FEATUREMAP
Get or set a feature map to a given value on a specific channel.
The allowed values are:Attended TransferBlind TransferAuto MonitorCall DisconnectPark CallAuto MixMonitorWhen this function is used as a read, it will get the current
digit sequence mapped to the specified feature for this channel. This
value will be the one configured in features.conf if a channel specific
value has not been set. This function can also be used to set a channel
specific value for a feature mapping.FEATUREGlobal options for configuring UDPTLThe start of the UDPTL port rangeThe end of the UDPTL port rangeWhether to enable or disable UDP checksums on UDPTL trafficThe number of error correction entries in a UDPTL packetThe span over which parity is calculated for FEC in a UDPTL packetWhether to only use even-numbered UDPTL portsRemovedRemovedRaised when a bridge is created.BridgeDestroyBridgeEnterBridgeLeaveRaised when a bridge is destroyed.BridgeCreateBridgeEnterBridgeLeaveRaised when a channel enters a bridge.The uniqueid of the channel being swapped out of the bridgeBridgeCreateBridgeDestroyBridgeLeaveRaised when a channel leaves a bridge.BridgeCreateBridgeDestroyBridgeEnterRaised when the channel that is the source of video in a bridge changes.The unique ID of the channel that was the video source.BridgeCreateBridgeDestroy
Get a list of bridges in the system.
Optional type for filtering the resulting list of bridges.Returns a list of bridges, optionally filtering on a bridge type.BridgeBridgeDestroyBridgeInfoBridgeKick
Get information about a bridge.
The unique ID of the bridge about which to retrieve information.Returns detailed information about a bridge and the channels in it.BridgeBridgeDestroyBridgeKickBridgeListInformation about a channel in a bridge.Information about a bridge.
Destroy a bridge.
The unique ID of the bridge to destroy.Deletes the bridge, causing channels to continue or hang up.BridgeBridgeInfoBridgeKickBridgeListBridgeDestroy
Kick a channel from a bridge.
The unique ID of the bridge containing the channel to
destroy. This parameter can be omitted, or supplied to insure
that the channel is not removed from the wrong bridge.The channel to kick out of a bridge.The channel is removed from the bridge.BridgeBridgeDestroyBridgeInfoBridgeListBridgeLeave
Create a message or read fields from a message.
Field of the message to get or set.Read-only. The destination of the message. When processing an
incoming message, this will be set to the destination listed as
the recipient of the message that was received by Asterisk.Read-only. The source of the message. When processing an
incoming message, this will be set to the source of the message.Write-only. Mark or unmark all message headers for an outgoing
message. The following values can be set:Mark all headers for an outgoing message.Unmark all headers for an outgoing message.Read/Write. The message body. When processing an incoming
message, this includes the body of the message that Asterisk
received. When MessageSend() is executed, the contents of this
field are used as the body of the outgoing message. The body
will always be UTF-8.This function will read from or write a value to a text message.
It is used both to read the data out of an incoming message, as well as
modify or create a message that will be sent outbound.MessageSend
Read or write custom data attached to a message.
Field of the message to get or set.This function will read from or write a value to a text message.
It is used both to read the data out of an incoming message, as well as
modify a message that will be sent outbound.If you want to set an outbound message to carry data in the
current message, do
Set(MESSAGE_DATA(key)=${MESSAGE_DATA(key)}).MessageSend
Send a text message.
A To URI for the message.A From URI for the message if needed for the
message technology being used to send this message. This can be a
SIP(S) URI, such as Alice <sip:alice@atlanta.com>,
a string in the format alice@atlanta.com, or simply
a username such as alice.Send a text message. The body of the message that will be
sent is what is currently set to MESSAGE(body).
The technology chosen for sending the message is determined
based on a prefix to the to parameter.This application sets the following channel variables:This is the message delivery status returned by this application.
No handler for the technology part of the URI was found.
The protocol handler reported that the URI was not valid.
Successfully passed on to the protocol handler, but delivery has not necessarily been guaranteed.
The protocol handler reported that it was unabled to deliver the message for some reason.
Send an out of call message to an endpoint.
The URI the message is to be sent to.A From URI for the message if needed for the
message technology being used to send this message.The message body text. This must not contain any newlines as that
conflicts with the AMI protocol.Text bodies requiring the use of newlines have to be base64 encoded
in this field. Base64Body will be decoded before being sent out.
Base64Body takes precedence over Body.Message variable to set, multiple Variable: headers are
allowed. The header value is a comma separated list of
name=value pairs.A user defined event raised from the dialplan.The event name, as specified in the dialplan.Event may contain additional arbitrary parameters in addition to optional bridge and endpoint snapshots. Multiple snapshots of the same type are prefixed with a numeric value.UserEventUserEventSettings that configure the threadpool Stasis uses to deliver some messages.Initial number of threads in the message bus threadpool.Number of seconds before an idle thread is disposed of.Maximum number of threads in the threadpool.Stasis message types for which to decline creation.The message type to decline.This configuration option defines the name of the Stasis
message type that Asterisk is forbidden from creating and can be
specified as many times as necessary to achieve the desired result.
Optimize away a local channel when possible.
The channel name to optimize away.A local channel created with "/n" will not automatically optimize away.
Calling this command on the local channel will clear that flag and allow
it to optimize away if it's bridged or when it becomes bridged.Raised when two halves of a Local Channel form a bridge.The context in the dialplan that Channel2 starts in.The extension in the dialplan that Channel2 starts in.Raised when two halves of a Local Channel begin to optimize
themselves out of the media path.The unique ID of the bridge into which the local channel is optimizing.Identification for the optimization operation.LocalOptimizationEndLocalOptimizeAwayRaised when two halves of a Local Channel have finished optimizing
themselves out of the media path.Indicates whether the local optimization succeeded.Identification for the optimization operation. Matches the Id
from a previous LocalOptimizationBeginLocalOptimizationBeginLocalOptimizeAwayRaised when a request violates an ACL check.The time the event was detected.A relative severity of the security event.The Asterisk service that raised the security event.The version of this event.The Service account associated with the security event
notification.A unique identifier for the session in the service
that raised the event.The address of the Asterisk service that raised the
security event.The remote address of the entity that caused the
security event to be raised.If available, the name of the module that raised the event.If available, the name of the ACL that failed.The timestamp reported by the session.Raised when a request fails an authentication check due to an invalid account ID.Raised when a request fails due to exceeding the number of allowed concurrent sessions for that service.Raised when a request fails due to an internal memory allocation failure.Raised when a request fails because a configured load average limit has been reached.Raised when a request fails due to some aspect of the requested item not being supported by the service.The type of request attempted.Raised when a request is not allowed by the service.Parameters provided to the rejected request.Raised when a request used an authentication method not allowed by the service.The authentication method attempted.Raised when a request is received with bad formatting.The account ID associated with the rejected request.Raised when a request successfully authenticates with a service.Whether or not the authentication attempt included a password.Raised when a request has a different source address then what is expected for a session already in progress with a service.The address that the request was expected to use.Raised when a request's attempt to authenticate has been challenged, and the request failed the authentication challenge.The challenge that was sent.The response that was received.The expected response to the challenge.Raised when a request provides an invalid password during an authentication attempt.The challenge that was sent.The challenge that was received.The hash that was received.Raised when an Asterisk service sends an authentication challenge to a request.Raised when a request attempts to use a transport not allowed by the Asterisk service.The transport type that the request attempted to use.
Set channel variable or function value.
This function can be used to set the value of channel variables or dialplan functions.
When setting variables, if the variable name is prefixed with _,
the variable will be inherited into channels created from the current channel.
If the variable name is prefixed with __, the variable will be
inherited into channels created from the current channel and all children channels.If (and only if), in /etc/asterisk/asterisk.conf, you have
a [compat] category, and you have app_set = 1.4 under that, then
the behavior of this app changes, and strips surrounding quotes from the right hand side as
it did previously in 1.4.
The advantages of not stripping out quoting, and not caring about the separator characters (comma and vertical bar)
were sufficient to make these changes in 1.6. Confusion about how many backslashes would be needed to properly
protect separators and quotes in various database access strings has been greatly
reduced by these changes.MSetGLOBALSETENV
Set channel variable(s) or function value(s).
This function can be used to set the value of channel variables or dialplan functions.
When setting variables, if the variable name is prefixed with _,
the variable will be inherited into channels created from the current channel
If the variable name is prefixed with __, the variable will be
inherited into channels created from the current channel and all children channels.
MSet behaves in a similar fashion to the way Set worked in 1.2/1.4 and is thus
prone to doing things that you may not expect. For example, it strips surrounding
double-quotes from the right-hand side (value). If you need to put a separator
character (comma or vert-bar), you will need to escape them by inserting a backslash
before them. Avoid its use if possible.SetRaised when a variable is set to a particular value.The variable being set.The new value of the variable.Raised when an Agent has logged in.Agent ID of the agent.AgentLoginAgentLogoffRaised when an Agent has logged off.The number of seconds the agent was logged in.AgentLoginRaised when talking is detected on a channel.TALK_DETECTChannelTalkingStopRaised when talking is no longer detected on a channel.The length in time, in milliseconds, that talking was
detected on the channel.TALK_DETECTChannelTalkingStartOptions that apply globally to Channel Event Logging (CEL)Determines whether CEL is enabledThe format to be used for dates when loggingList of apps for CEL to trackA case-insensitive, comma-separated list of applications
to track when one or both of APP_START and APP_END events are flagged for
trackingList of events for CEL to trackA case-sensitive, comma-separated list of event names
to track. These event names do not include the leading AST_CEL.
Special value which tracks all events.Options for configuring a named ACLAn address/subnet from which to allow accessAn address/subnet from which to disallow accessRaised when the state of a peer changes.The channel technology of the peer.The name of the peer (including channel technology).New status of the peer.The reason the status has changed.New address of the peer.New port for the peer.Time it takes to reach the peer and receive a response.Raised when the state of a contact changes.This contact's URI.New status of the contact.The name of the associated aor.The name of the associated endpoint.The RTT measured during the last qualify.Content of the User-Agent header in REGISTER requestAbsolute time that this contact is no longer valid afterIP address:port of the last Via header in REGISTER requestContent of the Call-ID header in REGISTER requestRaised when all Asterisk initialization procedures have finished.Informational messageRaised when Asterisk is shutdown or restarted.Whether the shutdown is proceeding cleanly (all channels
were hungup successfully) or uncleanly (channels will be
terminated)Whether or not a restart will occur.Raised when an RTCP packet is sent.The SSRC identifier for our streamThe type of packet for this RTCP report.The address the report is sent to.The number of reports that were sent.The report count determines the number of ReportX headers in
the message. The X for each set of report headers will range from 0 to
ReportCount - 1.The time the sender generated the report. Only valid when
PT is 200(SR).The sender's last RTP timestamp. Only valid when PT is
200(SR).The number of packets the sender has sent. Only valid when PT
is 200(SR).The number of bytes the sender has sent. Only valid when PT is
200(SR).The SSRC for the source of this report block.The fraction of RTP data packets from ReportXSourceSSRC
lost since the previous SR or RR report was sent.The total number of RTP data packets from ReportXSourceSSRC
lost since the beginning of reception.The highest sequence number received in an RTP data packet from
ReportXSourceSSRC.The number of sequence number cycles seen for the RTP data
received from ReportXSourceSSRC.An estimate of the statistical variance of the RTP data packet
interarrival time, measured in timestamp units.The last SR timestamp received from ReportXSourceSSRC.
If no SR has been received from ReportXSourceSSRC,
then 0.The delay, expressed in units of 1/65536 seconds, between
receiving the last SR packet from ReportXSourceSSRC
and sending this report.RTCPReceivedRaised when an RTCP packet is received.The SSRC identifier for the remote systemThe address the report was received from.Calculated Round-Trip Time in secondsThe number of reports that were received.The report count determines the number of ReportX headers in
the message. The X for each set of report headers will range from 0 to
ReportCount - 1.RTCPSent
Request call completion service for previous call
Request call completion service for a previously failed
call attempt.This application sets the following channel variables:This is the returned status of the request.This is the reason the request failed.
Cancel call completion service
Cancel a Call Completion Request.This application sets the following channel variables:This is the returned status of the cancel.This is the reason the cancel failed.
Answer a channel if ringing.
Asterisk will wait this number of milliseconds before returning to
the dialplan after answering the call.If the call has not been answered, this application will
answer it. Otherwise, it has no effect on the call.Hangup
Play an audio file while waiting for digits of an extension to go to.
Explicitly specifies which language to attempt to use for the requested sound files.This is the dialplan context that this application will use when exiting
to a dialed extension.This application will play the given list of files (do not put extension)
while waiting for an extension to be dialed by the calling channel. To continue waiting
for digits after this application has finished playing files, the WaitExten
application should be used.If one of the requested sound files does not exist, call processing will be terminated.This application sets the following channel variable upon completion:The status of the background attempt as a text string.ControlPlaybackWaitExtenBackgroundDetectTIMEOUT
Indicate the Busy condition.
If specified, the calling channel will be hung up after the specified number of seconds.
Otherwise, this application will wait until the calling channel hangs up.This application will indicate the busy condition to the calling channel.CongestionProgressPlaytonesHangup
Indicate the Congestion condition.
If specified, the calling channel will be hung up after the specified number of seconds.
Otherwise, this application will wait until the calling channel hangs up.This application will indicate the congestion condition to the calling channel.BusyProgressPlaytonesHangup
Conditional application execution based on the current time.
This application will execute the specified dialplan application, with optional
arguments, if the current time matches the given time specification.ExecExecIfTryExecGotoIfTime
Jump to a particular priority, extension, or context.
This application will set the current context, extension, and priority in the channel structure.
After it completes, the pbx engine will continue dialplan execution at the specified location.
If no specific extension, or extension and
context, are specified, then this application will
just set the specified priority of the current extension.At least a priority is required as an argument, or the goto will
return a -1, and the channel and call will be terminated.If the location that is put into the channel information is bogus, and asterisk cannot
find that location in the dialplan, then the execution engine will try to find and execute the code in
the i (invalid) extension in the current context. If that does not exist, it will try to execute the
h extension. If neither the h nor i extensions
have been defined, the channel is hung up, and the execution of instructions on the channel is terminated.
What this means is that, for example, you specify a context that does not exist, then
it will not be possible to find the h or i extensions,
and the call will terminate!GotoIfGotoIfTimeGosubMacro
Conditional goto.
Continue at labeliftrue if the condition is true.
Takes the form similar to Goto() of [[context,]extension,]priority.Continue at labeliffalse if the condition is false.
Takes the form similar to Goto() of [[context,]extension,]priority.This application will set the current context, extension, and priority in the channel structure
based on the evaluation of the given condition. After this application completes, the
pbx engine will continue dialplan execution at the specified location in the dialplan.
The labels are specified with the same syntax as used within the Goto application.
If the label chosen by the condition is omitted, no jump is performed, and the execution passes to the
next instruction. If the target location is bogus, and does not exist, the execution engine will try
to find and execute the code in the i (invalid) extension in the current context.
If that does not exist, it will try to execute the h extension.
If neither the h nor i extensions have been defined,
the channel is hung up, and the execution of instructions on the channel is terminated.
Remember that this command can set the current context, and if the context specified
does not exist, then it will not be able to find any 'h' or 'i' extensions there, and
the channel and call will both be terminated!.GotoGotoIfTimeGosubIfMacroIf
Conditional Goto based on the current time.
Continue at labeliftrue if the condition is true.
Takes the form similar to Goto() of [[context,]extension,]priority.Continue at labeliffalse if the condition is false.
Takes the form similar to Goto() of [[context,]extension,]priority.This application will set the context, extension, and priority in the channel structure
based on the evaluation of the given time specification. After this application completes,
the pbx engine will continue dialplan execution at the specified location in the dialplan.
If the current time is within the given time specification, the channel will continue at
labeliftrue. Otherwise the channel will continue at labeliffalse.
If the label chosen by the condition is omitted, no jump is performed, and execution passes to the next
instruction. If the target jump location is bogus, the same actions would be taken as for Goto.
Further information on the time specification can be found in examples
illustrating how to do time-based context includes in the dialplan.GotoIfGotoIFTIMETESTTIME
Import a variable from a channel into a new variable.
This application imports a variable from the specified
channel (as opposed to the current one) and stores it as a variable
(newvar) in the current channel (the channel that is calling this
application). Variables created by this application have the same inheritance properties as those
created with the Set application.Set
Hang up the calling channel.
If a causecode is given the channel's
hangup cause will be set to the given value.This application will hang up the calling channel.AnswerBusyCongestion
Returns AST_PBX_INCOMPLETE value.
If specified, then Incomplete will not attempt to answer the channel first.Most channel types need to be in Answer state in order to receive DTMF.Signals the PBX routines that the previous matched extension is incomplete
and that further input should be allowed before matching can be considered
to be complete. Can be used within a pattern match when certain criteria warrants
a longer match.
Do Nothing (No Operation).
Any text provided can be viewed at the Asterisk CLI.This application does nothing. However, it is useful for debugging purposes.This method can be used to see the evaluations of variables or functions without having any effect.VerboseLog
Indicate proceeding.
This application will request that a proceeding message be provided to the calling channel.
Indicate progress.
This application will request that in-band progress information be provided to the calling channel.BusyCongestionRingingPlaytones
Handle an exceptional condition.
This application will jump to the e extension in the current context, setting the
dialplan function EXCEPTION(). If the e extension does not exist, the call will hangup.Exception
Indicate ringing tone.
This application will request that the channel indicate a ringing tone to the user.BusyCongestionProgressPlaytones
Say Alpha.
This application will play the sounds that correspond to the letters
of the given string. If the channel variable
SAY_DTMF_INTERRUPT is set to 'true' (case insensitive),
then this application will react to DTMF in the same way as
Background.SayDigitsSayNumberSayPhoneticCHANNEL
Say Alpha.
Case sensitive (all) pronunciation.
(Ex: SayAlphaCase(a,aBc); - lowercase a uppercase b lowercase c).Case sensitive (lower) pronunciation.
(Ex: SayAlphaCase(l,aBc); - lowercase a b lowercase c).Case insensitive pronunciation. Equivalent to SayAlpha.
(Ex: SayAlphaCase(n,aBc) - a b c).Case sensitive (upper) pronunciation.
(Ex: SayAlphaCase(u,aBc); - a uppercase b c).This application will play the sounds that correspond to the letters of the
given string. Optionally, a casetype may be
specified. This will be used for case-insensitive or case-sensitive pronunciations. If the channel
variable SAY_DTMF_INTERRUPT is set to 'true' (case insensitive), then this
application will react to DTMF in the same way as Background.SayDigitsSayNumberSayPhoneticSayAlphaCHANNEL
Say Digits.
This application will play the sounds that correspond to the digits of
the given number. This will use the language that is currently set for the channel.
If the channel variable SAY_DTMF_INTERRUPT is set to 'true'
(case insensitive), then this application will react to DTMF in the same way as
Background.SayAlphaSayNumberSayPhoneticCHANNEL
Say Number.
This application will play the sounds that correspond to the given
digits. Optionally, a gender may be
specified. This will use the language that is currently set for the channel. See the CHANNEL()
function for more information on setting the language for the channel. If the channel variable
SAY_DTMF_INTERRUPT is set to 'true' (case insensitive), then this
application will react to DTMF in the same way as Background.SayAlphaSayDigitsSayPhoneticCHANNEL
Say Phonetic.
This application will play the sounds from the phonetic alphabet that correspond to the
letters in the given string. If the channel variable
SAY_DTMF_INTERRUPT is set to 'true' (case insensitive), then this
application will react to DTMF in the same way as Background.SayAlphaSayDigitsSayNumber
Set the AMA Flags.
This application will set the channel's AMA Flags for billing purposes.This application is deprecated. Please use the CHANNEL function instead.CDRCHANNEL
Waits for some time.
Can be passed with fractions of a second. For example, 1.5 will ask the
application to wait for 1.5 seconds.This application waits for a specified number of seconds.
Waits for an extension to be entered.
Can be passed with fractions of a second. For example, 1.5 will ask the
application to wait for 1.5 seconds.This application waits for the user to enter a new extension for a specified number
of seconds.BackgroundTIMEOUTRaised when a module has been reloaded in Asterisk.The name of the module that was reloaded, or
All if all modules were reloadedThe numeric status code denoting the success or failure
of the reload request.SuccessRequest queuedModule not foundErrorReload already in progressModule uninitializedReload not supportedRaised when a presence state changesThe entity whose presence state has changedThe new status of the presentityThe new subtype of the presentityThe new message of the presentityThis differs from the PresenceStatus
event because this event is raised for all presence state changes,
not only for changes that affect dialplan hints.PresenceStatusRaised when a device state changesThe device whose state has changedThe new state of the deviceThis differs from the ExtensionStatus
event because this event is raised for all device state changes,
not only for changes that affect dialplan hints.ExtensionStatusRaised when a new channel is created.NewstateHangupRaised when a channel's state changes.NewchannelHangupRaised when a channel is hung up.A numeric cause code for why the channel was hung up.A description of why the channel was hung up.NewchannelSoftHangupRequestHangupRequestNewstateRaised when a hangup is requested.SoftHangupRequestHangupRaised when a soft hangup is requested with a specific cause code.HangupRequestHangupRaised when a channel enters a new context, extension, priority.Deprecated in 12, but kept for
backward compatability. Please use
'Exten' instead.The application about to be executed.The data to be passed to the application.Raised when a channel receives new Caller ID information.A description of the Caller ID presentation.CALLERIDRaised when a channel's connected line information is changed.CONNECTEDLINERaised when a Channel's AccountCode is changed.The channel's previous account codeCHANNELRaised when a dial action has started.The non-technology specific device being dialed.DialOriginateOriginateDialEndRaised when a dial action has completed.The result of the dial operation.The call was aborted.The caller answered.The caller was busy.The caller cancelled the call.The requested channel is unavailable.The called party is congested.The dial completed, but the caller elected
to continue in the dialplan.The dial completed, but the caller jumped to
a dialplan location.If known, the location the caller is jumping
to will be appended to the result following a
":".The called party failed to answer.If the call was forwarded, where the call was
forwarded to.DialOriginateOriginateDialBeginRaised when a channel goes on hold.The suggested MusicClass, if provided.UnholdRaised when a channel goes off hold.HoldRaised when one channel begins spying on another channel.ChanSpyStopChanSpyRaised when a channel has stopped spying.ChanSpyStartChanSpyRaised when a hangup handler is about to be called.Hangup handler parameter string passed to the Gosub application.CHANNEL
Raised when a hangup handler is removed from the handler stack
by the CHANNEL() function.
HangupHandlerPushCHANNEL
Raised when a hangup handler is added to the handler stack by
the CHANNEL() function.
HangupHandlerPopCHANNEL
Raised periodically during a fax transmission.
A text message describing the current status of the fax
Raised when a receive fax operation has completed.
The value of the LOCALSTATIONID channel variableThe value of the REMOTESTATIONID channel variableThe number of pages that have been transferredThe negotiated resolutionThe negotiated transfer rateThe files being affected by the fax operation
Raised when a send fax operation has completed.
Raised when music on hold has started on a channel.The class of music being played on the channelMusicOnHoldStopStartMusicOnHoldMusicOnHoldRaised when music on hold has stopped on a channel.MusicOnHoldStartStopMusicOnHoldRaised when monitoring has started on a channel.MonitorStopMonitorMonitorRaised when monitoring has stopped on a channel.MonitorStartStopMonitorStopMonitor
Retrieve the details of the current dialplan exception.
The following fields are available for retrieval:INVALID, ERROR, RESPONSETIMEOUT, ABSOLUTETIMEOUT, or custom
value set by the RaiseException() applicationThe context executing when the exception occurred.The extension executing when the exception occurred.The numeric priority executing when the exception occurred.Retrieve the details (specified field) of the current dialplan exception.RaiseException
Sets a time to be used with the channel to test logical conditions.
Date in ISO 8601 formatTime in HH:MM:SS format (24-hour time)Timezone nameTo test dialplan timing conditions at times other than the current time, use
this function to set an alternate date and time. For example, you may wish to evaluate
whether a location will correctly identify to callers that the area is closed on Christmas
Day, when Christmas would otherwise fall on a day when the office is normally open.GotoIfTime
Show dialplan contexts and extensions
Show a specific extension.Show a specific context.Show dialplan contexts and extensions. Be aware that showing the full dialplan
may take a lot of capacity.
List the current known extension states.
This will list out all known extension states in a
sequence of ExtensionStatus events.
When finished, a ExtensionStateListComplete event
will be emitted.ExtensionStateHINTEXTENSION_STATE
Indicates the end of the list the current known extension states.
Conveys the status of the event list.Conveys the number of statuses reported.Raised when a call pickup occurs.
Keepalive command.
A 'Ping' action will ellicit a 'Pong' response. Used to keep the
manager connection open.
Control Event Flow.
If all events should be sent.If no events should be sent.To select which flags events should have to be sent.Enable/Disable sending of events to this manager client.
Logoff Manager.
Logoff the current manager session.Login
Login Manager.
ActionID for this transaction. Will be returned.Username to login with as specified in manager.conf.Secret to login with as specified in manager.conf.Login Manager.Logoff
Generate Challenge for MD5 Auth.
Digest algorithm to use in the challenge. Valid values are:Generate a challenge for MD5 authentication.
Hangup channel.
The exact channel name to be hungup, or to use a regular expression, set this parameter to: /regex/Example exact channel: SIP/provider-0000012aExample regular expression: /^SIP/provider-.*$/Numeric hangup cause.Hangup a channel.
List channel status.
The name of the channel to query for status.Comma , separated list of variable to include.Will return the status information of each channel along with the
value for the specified channel variables.Raised in response to a Status command.Type of channelDialed number identifierAbsolute lifetime of the channelIdentifier of the bridge the channel is in, may be empty if not in oneApplication currently executing on the channelData given to the currently executing channelMedia formats the connected party is willing to send or receiveMedia formats that frames from the channel are received inTranslation path for media received in native formatsMedia formats that frames to the channel are accepted inTranslation path for media sent to the connected partyConfigured call group on the channelConfigured pickup group on the channelNumber of seconds the channel has been activeStatusRaised in response to a Status command.Number of Status events returnedStatus
Sets a channel variable or function value.
Channel to set variable for.Variable name, function or expression.Variable or function value.This command can be used to set the value of channel variables or dialplan
functions.If a channel name is not provided then the variable is considered global.Getvar
Gets a channel variable or function value.
Channel to read variable from.Variable name, function or expression.Get the value of a channel variable or function return.If a channel name is not provided then the variable is considered global.Setvar
Retrieve configuration.
Configuration filename (e.g. foo.conf).Category in configuration file.A comma separated list of
name_regex=value_regex
expressions which will cause only categories whose variables match all expressions
to be considered. The special variable name TEMPLATES
can be used to control whether templates are included. Passing
include as the value will include templates
along with normal categories. Passing
restrict as the value will restrict the operation to
ONLY templates. Not specifying a TEMPLATES expression
results in the default behavior which is to not include templates.This action will dump the contents of a configuration
file by category and contents or optionally by specified category only.
In the case where a category name is non-unique, a filter may be specified
to match only categories with matching variable values.GetConfigJSONUpdateConfigCreateConfigListCategories
Retrieve configuration (JSON format).
Configuration filename (e.g. foo.conf).Category in configuration file.This action will dump the contents of a configuration file by category
and contents in JSON format or optionally by specified category only.
This only makes sense to be used using rawman over the HTTP interface.
In the case where a category name is non-unique, a filter may be specified
to match only categories with matching variable values.GetConfigUpdateConfigCreateConfigListCategories
Update basic configuration.
Configuration filename to read (e.g. foo.conf).Configuration filename to write (e.g. foo.conf)Whether or not a reload should take place (or name of specific module).Whether the effective category contents should be preserved on template change. Default is true (pre 13.2 behavior).Action to take.0's represent 6 digit number beginning with 000000.Category to operate on.Variable to work on.Value to work on.Extra match required to match line.Line in category to operate on (used with delete and insert actions).A comma separated list of action-specific options.One or more of the following... Allow duplicate category names.This category is a template.Templates from which to inherit.The following actions share the same options...catfilter is most useful when a file
contains multiple categories with the same name and you wish to
operate on specific ones instead of all of them.This action will modify, create, or delete configuration elements
in Asterisk configuration files.GetConfigGetConfigJSONCreateConfigListCategories
Creates an empty file in the configuration directory.
The configuration filename to create (e.g. foo.conf).This action will create an empty file in the configuration
directory. This action is intended to be used before an UpdateConfig
action.GetConfigGetConfigJSONUpdateConfigListCategories
List categories in configuration file.
Configuration filename (e.g. foo.conf).This action will dump the categories in a given file.GetConfigGetConfigJSONUpdateConfigCreateConfig
Redirect (transfer) a call.
Channel to redirect.Second call leg to transfer (optional).Extension to transfer to.Extension to transfer extrachannel to (optional).Context to transfer to.Context to transfer extrachannel to (optional).Priority to transfer to.Priority to transfer extrachannel to (optional).Redirect (transfer) a call.BlindTransfer
Attended transfer.
Transferer's channel.Extension to transfer to.Context to transfer to.Attended transfer.AttendedTransfer
Cancel an attended transfer.
The transferer channel.Cancel an attended transfer. Note, this uses the configured cancel attended transfer
feature option (atxferabort) to cancel the transfer. If not available this action will fail.
AttendedTransfer
Originate a call.
Channel name to call.Extension to use (requires Context and
Priority)Context to use (requires Exten and
Priority)Priority to use (requires Exten and
Context)Application to execute.Data to use (requires Application).How long to wait for call to be answered (in ms.).Caller ID to be set on the outgoing channel.Channel variable to set, multiple Variable: headers are allowed.Account code.Set to true to force call bridge on early media..Set to true for fast origination.Comma-separated list of codecs to use for this call.Channel UniqueId to be set on the channel.Channel UniqueId to be set on the second local channel.Generates an outgoing call to a
Extension/Context/Priority
or Application/DataOriginateResponseRaised in response to an Originate command.Originate
Execute Asterisk CLI Command.
Asterisk CLI command to run.Run a CLI command.
Check Extension Status.
Extension to check state on.Context for extension.Report the extension state for given extension. If the extension has a hint,
will use devicestate to check the status of the device connected to the extension.Will return an Extension Status message. The response will include
the hint for the extension and the status.ExtensionStatus
Check Presence State
Presence Provider to check the state ofReport the presence state for the given presence provider.Will return a Presence State message. The response will include the
presence state and, if set, a presence subtype and custom message.PresenceStatus
Set absolute timeout.
Channel name to hangup.Maximum duration of the call (sec).Hangup a channel after a certain time. Acknowledges set time with
Timeout Set message.
Check mailbox.
Full mailbox ID mailbox@vm-context.Checks a voicemail account for status.Returns whether there are messages waiting.Message: Mailbox Status.Mailbox: mailboxid.Waiting: 0 if messages waiting, 1
if no messages waiting.MailboxCount
Check Mailbox Message Count.
Full mailbox ID mailbox@vm-context.Checks a voicemail account for new messages.Returns number of urgent, new and old messages.Message: Mailbox Message CountMailbox: mailboxidUrgentMessages: countNewMessages: countOldMessages: countMailboxStatus
List available manager commands.
Returns the action name and synopsis for every action that
is available to the user.
Send text message to channel.
Channel to send message to.Message to send.Sends A Text Message to a channel while in a call.
Send an arbitrary event.
Event string to send.Content1.ContentN.Send an event to manager sessions.UserEventUserEvent
Wait for an event to occur.
Maximum time (in seconds) to wait for events, -1 means forever.This action will ellicit a Success response. Whenever
a manager event is queued. Once WaitEvent has been called on an HTTP manager
session, events will be generated and queued.
Show PBX core settings (version etc).
Query for Core PBX settings.
Show PBX core status variables.
Query for Core PBX status.
Send a reload event.
Name of the module to reload.Send a reload event.ModuleLoadRaised in response to a CoreShowChannels command.Identifier of the bridge the channel is in, may be empty if not in oneApplication currently executing on the channelData given to the currently executing applicationThe amount of time the channel has existedCoreShowChannelsCoreShowChannelsCompleteRaised at the end of the CoreShowChannel list produced by the CoreShowChannels command.Conveys the status of the command reponse listThe total number of list items producedCoreShowChannelsCoreShowChannel
List currently active channels.
List currently defined channels and some information about them.
Reload and rotate the Asterisk logger.
Reload and rotate the logger. Analogous to the CLI command 'logger rotate'.
Module management.
Asterisk module name (including .so extension) or subsystem identifier:The operation to be done on module. Subsystem identifiers may only
be reloaded.If no module is specified for a reload loadtype,
all modules are reloaded.Loads, unloads or reloads an Asterisk module in a running system.ReloadModuleCheck
Check if module is loaded.
Asterisk module name (not including extension).Checks if Asterisk module is loaded. Will return Success/Failure.
For success returns, the module revision number is included.ModuleLoad
Generate an Advice of Charge message on a channel.
Channel name to generate the AOC message on.Partial channel prefix. By using this option one can match the beginning part
of a channel name without having to put the entire name in. For example
if a channel name is SIP/snom-00000001 and this value is set to SIP/snom, then
that channel matches and the message will be sent. Note however that only
the first matched channel has the message sent on it. Defines what type of AOC message to create, AOC-D or AOC-EDefines what kind of charge this message represents.This represents the amount of units charged. The ETSI AOC standard specifies that
this value along with the optional UnitType value are entries in a list. To accommodate this
these values take an index value starting at 0 which can be used to generate this list of
unit entries. For Example, If two unit entires were required this could be achieved by setting the
paramter UnitAmount(0)=1234 and UnitAmount(1)=5678. Note that UnitAmount at index 0 is
required when ChargeType=Unit, all other entries in the list are optional.
Defines the type of unit. ETSI AOC standard specifies this as an integer
value between 1 and 16, but this value is left open to accept any positive
integer. Like the UnitAmount parameter, this value represents a list entry
and has an index parameter that starts at 0.
Specifies the currency's name. Note that this value is truncated after 10 characters.Specifies the charge unit amount as a positive integer. This value is required
when ChargeType==Currency.Specifies the currency multiplier. This value is required when ChargeType==Currency.Defines what kind of AOC-D total is represented.Represents a billing ID associated with an AOC-D or AOC-E message. Note
that only the first 3 items of the enum are valid AOC-D billing IDsCharging association identifier. This is optional for AOC-E and can be
set to any value between -32768 and 32767Represents the charging association party number. This value is optional
for AOC-E.Integer representing the charging plan associated with the ChargingAssociationNumber.
The value is bits 7 through 1 of the Q.931 octet containing the type-of-number and
numbering-plan-identification fields.Generates an AOC-D or AOC-E message on a channel.AOC-DAOC-E
Checks attributes of manager accounts
Login name, specified in manager.confThe manager account attribute to returnThe number of sessions for this AMI account
Currently, the only supported parameter is "sessions" which will return the current number of
active sessions for this AMI account.
Dynamically add filters for the current manager session.
Add a filter.Filters can be whitelist or blacklistExample whitelist filter: "Event: Newchannel"Example blacklist filter: "!Channel: DAHDI.*"This filter option is used to whitelist or blacklist events per user to be
reported with regular expressions and are allowed if both the regex matches
and the user has read access as defined in manager.conf. Filters are assumed to be for whitelisting
unless preceeded by an exclamation point, which marks it as being black.
Evaluation of the filters is as follows:- If no filters are configured all events are reported as normal.- If there are white filters only: implied black all filter processed first, then white filters.- If there are black filters only: implied white all filter processed first, then black filters.- If there are both white and black filters: implied black all filter processed first, then white
filters, and lastly black filters.The filters added are only used for the current session.
Once the connection is closed the filters are removed.This comand requires the system permission because
this command can be used to create filters that may bypass
filters defined in manager.confFilterList
Show current event filters for this session
The filters displayed are for the current session. Only those filters defined in
manager.conf will be present upon starting a new session.Filter
Blind transfer channel(s) to the given destination
Redirect all channels currently bridged to the specified channel to the specified destination.RedirectBlindTransferRaised when a hint changes due to a device state change.Name of the extension.Context that owns the extension.Hint set for the extensionNumerical value of the extension status. Extension
status is determined by the combined device state of all items
contained in the hint.The extension was removed from the dialplan.The extension's hint was removed from the dialplan.Idle - Related device(s) are in an idle
state.InUse - Related device(s) are in active
calls but may take more calls.Busy - Related device(s) are in active
calls and may not take any more calls.Unavailable - Related device(s) are
not reachable.Ringing - Related device(s) are
currently ringing.InUse&Ringing - Related device(s)
are currently ringing and in active calls.Hold - Related device(s) are
currently on hold.InUse&Hold - Related device(s)
are currently on hold and in active calls.Text representation of Status.Status does not match any of the above values.ExtensionStateRaised when a hint changes due to a presence state change.PresenceStateRaised when an Advice of Charge message is sent at the beginning of a call.AOC-DAOC-ERaised when an Advice of Charge message is sent during a call.AOCMessageAOC-SAOC-ERaised when an Advice of Charge message is sent at the end of a call.AOCMessageAOC-SAOC-DSIP ACL moduleACL
The ACL module used by res_pjsip. This module is
independent of endpoints and operates on all inbound
SIP communication using res_pjsip.
There are two main ways of defining your ACL with the options
provided. You can use the permit and deny options
which act on IP addresses, or the contactpermit
and contactdeny options which act on Contact header
addresses in incoming REGISTER requests. You can combine the various options to
create a mixed ACL.
Additionally, instead of defining an ACL with options, you can reference IP or
Contact header ACLs from the file acl.conf by using the acl
or contactacl options.
Access Control ListList of IP ACL section names in acl.conf
This matches sections configured in acl.conf. The value is
defined as a list of comma-delimited section names.
List of Contact ACL section names in acl.conf
This matches sections configured in acl.conf. The value is
defined as a list of comma-delimited section names.
List of Contact header addresses to deny
The value is a comma-delimited list of IP addresses. IP addresses may
have a subnet mask appended. The subnet mask may be written in either
CIDR or dotted-decimal notation. Separate the IP address and subnet
mask with a slash ('/')
List of Contact header addresses to permit
The value is a comma-delimited list of IP addresses. IP addresses may
have a subnet mask appended. The subnet mask may be written in either
CIDR or dotted-decimal notation. Separate the IP address and subnet
mask with a slash ('/')
List of IP addresses to deny access from
The value is a comma-delimited list of IP addresses. IP addresses may
have a subnet mask appended. The subnet mask may be written in either
CIDR or dotted-decimal notation. Separate the IP address and subnet
mask with a slash ('/')
List of IP addresses to permit access from
The value is a comma-delimited list of IP addresses. IP addresses may
have a subnet mask appended. The subnet mask may be written in either
CIDR or dotted-decimal notation. Separate the IP address and subnet
mask with a slash ('/')
Must be of type 'acl'.SIP resource for inbound and outbound Asterisk event publicationsInbound and outbound Asterisk event publicationThis module allows res_pjsip to send and receive Asterisk event publications.The configuration for inbound Asterisk event publication
Publish is COMPLETELY separate from the rest of
pjsip.conf.
Optional name of a publish item that can be used to publish a request for full device state information.Optional name of a publish item that can be used to publish a request for full mailbox state information.Whether we should permit incoming device state events.Optional regular expression used to filter what devices we accept events for.Whether we should permit incoming mailbox state events.Optional regular expression used to filter what mailboxes we accept events for.Must be of type 'asterisk-publication'.SIP Resource using PJProjectEndpoint
The Endpoint is the primary configuration object.
It contains the core SIP related options only, endpoints are NOT
dialable entries of their own. Communication with another SIP device is
accomplished via Addresses of Record (AoRs) which have one or more
contacts assicated with them. Endpoints NOT configured to
use a transport will default to first transport found
in pjsip.conf that matches its type.
Example: An Endpoint has been configured with no transport.
When it comes time to call an AoR, PJSIP will find the
first transport that matches the type. A SIP URI of sip:5000@[11::33]
will use the first IPv6 transport and try to send the request.
If the anonymous endpoint identifier is in use an endpoint with the name
"anonymous@domain" will be searched for as a last resort. If this is not found
it will fall back to searching for "anonymous". If neither endpoints are found
the anonymous endpoint identifier will not return an endpoint and anonymous
calling will not be possible.
Allow support for RFC3262 provisional ACK tagsCondense MWI notifications into a single NOTIFY.When enabled, aggregate_mwi condenses message
waiting notifications from multiple mailboxes into a single NOTIFY. If it is disabled,
individual NOTIFYs are sent for each mailbox.Media Codec(s) to allowEnable RFC3578 overlap dialing support.AoR(s) to be used with the endpoint
List of comma separated AoRs that the endpoint should be associated with.
Authentication Object(s) associated with the endpoint
This is a comma-delimited list of auth sections defined
in pjsip.conf to be used to verify inbound connection attempts.
Endpoints without an authentication object
configured will allow connections without verification.
Using the same auth section for inbound and outbound
authentication is not recommended. There is a difference in
meaning for an empty realm setting between inbound and outbound
authentication uses. See the auth realm description for details.
CallerID information for the endpoint
Must be in the format Name <Number>,
or only <Number>.
Default privacy levelInternal id_tag for the endpointDialplan context for inbound sessionsMitigation of direct media (re)INVITE glare
This setting attempts to avoid creating INVITE glare scenarios
by disabling direct media reINVITEs in one direction thereby allowing
designated servers (according to this option) to initiate direct
media reINVITEs without contention and significantly reducing call
setup time.
A more detailed description of how this option functions can be found on
the Asterisk wiki https://wiki.asterisk.org/wiki/display/AST/SIP+Direct+Media+Reinvite+Glare+Avoidance
Direct Media method typeMethod for setting up Direct Media between endpoints.Alias for the invite value.Connected line method typeMethod used when updating connected line information.When set to invite, check the remote's Allow header and
if UPDATE is allowed, send UPDATE instead of INVITE to avoid SDP
renegotiation. If UPDATE is not Allowed, send INVITE.Alias for the invite value.If set to update, send UPDATE regardless of what the remote
Allows. Determines whether media may flow directly between endpoints.Disable direct media session refreshes when NAT obstructs the media sessionMedia Codec(s) to disallowDTMF modeThis setting allows to choose the DTMF mode for endpoint communication.DTMF is sent out of band of the main audio stream. This
supercedes the older RFC-2833 used within
the older chan_sip.DTMF is sent as part of audio stream.DTMF is sent as SIP INFO packets.DTMF is sent as RFC 4733 if the other side supports it or as INBAND if not.DTMF is sent as RFC 4733 if the other side supports it or as SIP INFO if not.IP address used in SDP for media handling
At the time of SDP creation, the IP address defined here will be used as
the media address for individual streams in the SDP.
Be aware that the external_media_address option, set in Transport
configuration, can also affect the final media address used in the SDP.
Bind the RTP instance to the media_address
If media_address is specified, this option causes the RTP instance to be bound to the
specified ip address which causes the packets to be sent from that address.
Force use of return portEnable the ICE mechanism to help traverse NATWay(s) for Endpoint to be identified
Endpoints and aors can be identified in multiple ways. Currently, the supported
options are username, which matches the endpoint or aor id based on
the username and domain in the From header (or To header for aors), and
auth_username, which matches the endpoint or aor id based on the
username and realm in the Authentication header. In all cases, if an exact match
on both username and domain/realm fails, the match will be retried with just the username.
Identification by auth_username has some security considerations because an
Authentication header is not present on the first message of a dialog when
digest authentication is used. The client can't generate it until the server
sends the challenge in a 401 response. Since Asterisk normally sends a security
event when an incoming request can't be matched to an endpoint, using auth_username
requires that the security event be deferred until a request is received with
the Authentication header and only generated if the username doesn't result in a
match. This may result in a delay before an attack is recognized. You can control
how many unmatched requests are received from a single ip address before a security
event is generated using the unidentified_request parameters in the "global"
configuration object.
Endpoints can also be identified by IP address; however, that method
of identification is not handled by this configuration option. See the documentation
for the identify configuration section for more details on that
method of endpoint identification. If this option is set and an identify
configuration section exists for the endpoint, then the endpoint can be identified in
multiple ways.How redirects received from an endpoint are handled
When a redirect is received from an endpoint there are multiple ways it can be handled.
If this option is set to user the user portion of the redirect target
is treated as an extension within the dialplan and dialed using a Local channel. If this option
is set to uri_core the target URI is returned to the dialing application
which dials it using the PJSIP channel driver and endpoint originally used. If this option is
set to uri_pjsip the redirect occurs within chan_pjsip itself and is not exposed
to the core at all. The uri_pjsip option has the benefit of being more efficient
and also supporting multiple potential redirect targets. The con is that since redirection occurs
within chan_pjsip redirecting information is not forwarded and redirection can not be
prevented.
NOTIFY the endpoint when state changes for any of the specified mailboxes
Asterisk will send unsolicited MWI NOTIFY messages to the endpoint when state
changes happen for any of the specified mailboxes. More than one mailbox can be
specified with a comma-delimited string. app_voicemail mailboxes must be specified
as mailbox@context; for example: mailboxes=6001@default. For mailboxes provided by
external sources, such as through the res_external_mwi module, you must specify
strings supported by the external system.
For endpoints that SUBSCRIBE for MWI, use the mailboxes option in your AOR
configuration.
An MWI subscribe will replace sending unsolicited NOTIFYsThe voicemail extension to send in the NOTIFY Message-Account headerDefault Music On Hold classAuthentication object(s) used for outbound requests
This is a comma-delimited list of auth
sections defined in pjsip.conf used to respond
to outbound connection authentication challenges.
Using the same auth section for inbound and outbound
authentication is not recommended. There is a difference in
meaning for an empty realm setting between inbound and outbound
authentication uses. See the auth realm description for details.
Full SIP URI of the outbound proxy used to send requestsAllow Contact header to be rewritten with the source IP address-port
On inbound SIP messages from this endpoint, the Contact header or an
appropriate Record-Route header will be changed to have the source IP
address and port. This option does not affect outbound messages sent to
this endpoint. This option helps servers communicate with endpoints
that are behind NATs. This option also helps reuse reliable transport
connections such as TCP and TLS.
Allow use of IPv6 for RTP trafficEnforce that RTP must be symmetricSend the Diversion header, conveying the diversion
information to the called user agentSend the P-Asserted-Identity headerSend the Remote-Party-ID headerImmediately send connected line updates on unanswered incoming calls.When enabled, immediately send 180 Ringing
or 183 Progress response messages to the
caller if the connected line information is updated before
the call is answered. This can send a 180 Ringing
response before the call has even reached the far end. The
caller can start hearing ringback before the far end even gets
the call. Many phones tend to grab the first connected line
information and refuse to update the display if it changes. The
first information is not likely to be correct if the call
goes to an endpoint not under the control of this Asterisk
box.When disabled, a connected line update must wait for
another reason to send a message with the connected line
information to the caller before the call is answered. You can
trigger the sending of the information by using an appropriate
dialplan application such as Ringing.Minimum session timers expiration period
Minimium session timer expiration period. Time in seconds.
Session timers for SIP packetsAlias of alwaysMaximum session timer expiration period
Maximium session timer expiration period. Time in seconds.
Desired transport configuration
This will set the desired transport configuration to send SIP data through.
Not specifying a transport will DEFAULT
to the first configured transport in pjsip.conf which is
valid for the URI we are trying to contact.
Transport configuration is not affected by reloads. In order to
change transports, a full Asterisk restart is requiredAccept identification information received from this endpointThis option determines whether Asterisk will accept
identification from the endpoint from headers such as P-Asserted-Identity
or Remote-Party-ID header. This option applies both to calls originating from the
endpoint and calls originating from Asterisk. If no, the
configured Caller-ID from pjsip.conf will always be used as the identity for
the endpoint.Send private identification details to the endpoint.This option determines whether res_pjsip will send private
identification information to the endpoint. If no,
private Caller-ID information will not be forwarded to the endpoint.
"Private" in this case refers to any method of restricting identification.
Example: setting callerid_privacy to any
prohib variation.
Example: If trust_id_inbound is set to
yes, the presence of a Privacy: id
header in a SIP request or response would indicate the identification
provided in the request is private.Must be of type 'endpoint'.Use Endpoint's requested packetisation intervalDetermines whether res_pjsip will use and enforce usage of AVPF for this
endpoint.
If set to yes, res_pjsip will use the AVPF or SAVPF RTP
profile for all media offers on outbound calls and media updates and will
decline media offers not using the AVPF or SAVPF profile.
If set to no, res_pjsip will use the AVP or SAVP RTP
profile for all media offers on outbound calls and media updates, and will
decline media offers not using the AVP or SAVP profile.
Determines whether res_pjsip will use and enforce usage of AVP,
regardless of the RTP profile in use for this endpoint.
If set to yes, res_pjsip will use the AVP, AVPF, SAVP, or
SAVPF RTP profile for all media offers on outbound calls and media updates including
those for DTLS-SRTP streams.
If set to no, res_pjsip will use the respective RTP profile
depending on configuration.
Determines whether res_pjsip will use the media transport received in the
offer SDP in the corresponding answer SDP.
If set to yes, res_pjsip will use the received media transport.
If set to no, res_pjsip will use the respective RTP profile
depending on configuration.
Determines whether res_pjsip will use and enforce usage of media encryption
for this endpoint.
res_pjsip will offer no encryption and allow no encryption to be setup.
res_pjsip will offer standard SRTP setup via in-SDP keys. Encrypted SIP
transport should be used in conjunction with this option to prevent
exposure of media encryption keys.
res_pjsip will offer DTLS-SRTP setup.
Determines whether encryption should be used if possible but does not terminate the
session if not achieved.
This option only applies if media_encryption is
set to sdes or dtls.
Force g.726 to use AAL2 packing order when negotiating g.726 audio
When set to "yes" and an endpoint negotiates g.726 audio then use g.726 for AAL2
packing order instead of what is recommended by RFC3551. Since this essentially
replaces the underlying 'g726' codec with 'g726aal2' then 'g726aal2' needs to be
specified in the endpoint's allowed codec list.
Determines whether chan_pjsip will indicate ringing using inband
progress.
If set to yes, chan_pjsip will send a 183 Session Progress
when told to indicate ringing and will immediately start sending ringing
as audio.
If set to no, chan_pjsip will send a 180 Ringing when told
to indicate ringing and will NOT send it as audio.
The numeric pickup groups for a channel.
Can be set to a comma separated list of numbers or ranges between the values
of 0-63 (maximum of 64 groups).
The numeric pickup groups that a channel can pickup.
Can be set to a comma separated list of numbers or ranges between the values
of 0-63 (maximum of 64 groups).
The named pickup groups for a channel.
Can be set to a comma separated list of case sensitive strings limited by
supported line length.
The named pickup groups that a channel can pickup.
Can be set to a comma separated list of case sensitive strings limited by
supported line length.
The number of in-use channels which will cause busy to be returned as device state
When the number of in-use channels for the endpoint matches the devicestate_busy_at setting the
PJSIP channel driver will return busy as the device state instead of in use.
Whether T.38 UDPTL support is enabled or not
If set to yes T.38 UDPTL support will be enabled, and T.38 negotiation requests will be accepted
and relayed.
T.38 UDPTL error correction method
No error correction should be used.
Forward error correction should be used.
Redundacy error correction should be used.
T.38 UDPTL maximum datagram size
This option can be set to override the maximum datagram of a remote endpoint for broken
endpoints.
Whether CNG tone detection is enabled
This option can be set to send the session to the fax extension when a CNG tone is
detected.
How long into a call before fax_detect is disabled for the call
The option determines how many seconds into a call before the
fax_detect option is disabled for the call. Setting the value
to zero disables the timeout.
Whether NAT support is enabled on UDPTL sessions
When enabled the UDPTL stack will send UDPTL packets to the source address of
received packets.
Whether IPv6 is used for UDPTL Sessions
When enabled the UDPTL stack will use IPv6.
Set which country's indications to use for channels created for this endpoint.Set the default language to use for channels created for this endpoint.Determines whether one-touch recording is allowed for this endpoint.record_on_featurerecord_off_featureThe feature to enact when one-touch recording is turned on.When an INFO request for one-touch recording arrives with a Record header set to "on", this
feature will be enabled for the channel. The feature designated here can be any built-in
or dynamic feature defined in features.conf.This setting has no effect if the endpoint's one_touch_recording option is disabledone_touch_recordingrecord_off_featureThe feature to enact when one-touch recording is turned off.When an INFO request for one-touch recording arrives with a Record header set to "off", this
feature will be enabled for the channel. The feature designated here can be any built-in
or dynamic feature defined in features.conf.This setting has no effect if the endpoint's one_touch_recording option is disabledone_touch_recordingrecord_on_featureName of the RTP engine to use for channels created for this endpointDetermines whether SIP REFER transfers are allowed for this endpointDetermines whether a user=phone parameter is placed into the request URI if the user is determined to be a phone numberString placed as the username portion of an SDP origin (o=) line.String used for the SDP session (s=) line.DSCP TOS bits for audio streams
See https://wiki.asterisk.org/wiki/display/AST/IP+Quality+of+Service for more information about QoS settings
DSCP TOS bits for video streams
See https://wiki.asterisk.org/wiki/display/AST/IP+Quality+of+Service for more information about QoS settings
Priority for audio streams
See https://wiki.asterisk.org/wiki/display/AST/IP+Quality+of+Service for more information about QoS settings
Priority for video streams
See https://wiki.asterisk.org/wiki/display/AST/IP+Quality+of+Service for more information about QoS settings
Determines if endpoint is allowed to initiate subscriptions with Asterisk.The minimum allowed expiry time for subscriptions initiated by the endpoint.Username to use in From header for requests to this endpoint.Username to use in From header for unsolicited MWI NOTIFYs to this endpoint.Domain to user in From header for requests to this endpoint.Verify that the provided peer certificate is valid
This option only applies if media_encryption is
set to dtls.
Interval at which to renegotiate the TLS session and rekey the SRTP session
This option only applies if media_encryption is
set to dtls.
If this is not set or the value provided is 0 rekeying will be disabled.
Path to certificate file to present to peer
This option only applies if media_encryption is
set to dtls.
Path to private key for certificate file
This option only applies if media_encryption is
set to dtls.
Cipher to use for DTLS negotiation
This option only applies if media_encryption is
set to dtls.
Many options for acceptable ciphers. See link for more:http://www.openssl.org/docs/apps/ciphers.html#CIPHER_STRINGS
Path to certificate authority certificate
This option only applies if media_encryption is
set to dtls.
Path to a directory containing certificate authority certificates
This option only applies if media_encryption is
set to dtls.
Whether we are willing to accept connections, connect to the other party, or both.
This option only applies if media_encryption is
set to dtls.
res_pjsip will make a connection to the peer.
res_pjsip will accept connections from the peer.
res_pjsip will offer and accept connections from the peer.
Type of hash to use for the DTLS fingerprint in the SDP.
This option only applies if media_encryption is
set to dtls.
Determines whether 32 byte tags should be used instead of 80 byte tags.
This option only applies if media_encryption is
set to sdes or dtls.
Variable set on a channel involving the endpoint.
When a new channel is created using the endpoint set the specified
variable(s) on that channel. For multiple channel variables specify
multiple 'set_var'(s).
Context to route incoming MESSAGE requests to.
If specified, incoming MESSAGE requests will be routed to the indicated
dialplan context. If no message_context is
specified, then the context setting is used.
An accountcode to set automatically on any channels created for this endpoint.
If specified, any channel created for this endpoint will automatically
have this accountcode set on it.
Number of seconds between RTP comfort noise keepalive packets.
At the specified interval, Asterisk will send an RTP comfort noise frame. This may
be useful for situations where Asterisk is behind a NAT or firewall and must keep a
hole open in order to allow for media to arrive at Asterisk.
Maximum number of seconds without receiving RTP (while off hold) before terminating call.
This option configures the number of seconds without RTP (while off hold) before
considering a channel as dead. When the number of seconds is reached the underlying
channel is hung up. By default this option is set to 0, which means do not check.
Maximum number of seconds without receiving RTP (while on hold) before terminating call.
This option configures the number of seconds without RTP (while on hold) before
considering a channel as dead. When the number of seconds is reached the underlying
channel is hung up. By default this option is set to 0, which means do not check.
List of IP ACL section names in acl.conf
This matches sections configured in acl.conf. The value is
defined as a list of comma-delimited section names.
List of IP addresses to deny access from
The value is a comma-delimited list of IP addresses. IP addresses may
have a subnet mask appended. The subnet mask may be written in either
CIDR or dotted-decimal notation. Separate the IP address and subnet
mask with a slash ('/')
List of IP addresses to permit access from
The value is a comma-delimited list of IP addresses. IP addresses may
have a subnet mask appended. The subnet mask may be written in either
CIDR or dotted-decimal notation. Separate the IP address and subnet
mask with a slash ('/')
List of Contact ACL section names in acl.conf
This matches sections configured in acl.conf. The value is
defined as a list of comma-delimited section names.
List of Contact header addresses to deny
The value is a comma-delimited list of IP addresses. IP addresses may
have a subnet mask appended. The subnet mask may be written in either
CIDR or dotted-decimal notation. Separate the IP address and subnet
mask with a slash ('/')
List of Contact header addresses to permit
The value is a comma-delimited list of IP addresses. IP addresses may
have a subnet mask appended. The subnet mask may be written in either
CIDR or dotted-decimal notation. Separate the IP address and subnet
mask with a slash ('/')
Context for incoming MESSAGE requests.
If specified, incoming SUBSCRIBE requests will be searched for the matching
extension in the indicated context.
If no subscribe_context is specified,
then the context setting is used.
Force the user on the outgoing Contact header to this value.
On outbound requests, force the user portion of the Contact header to this value.
Allow the sending and receiving RTP codec to differ
When set to "yes" the codec in use for sending will be allowed to differ from
that of the received one. PJSIP will not automatically switch the sending one
to the receiving one.
Enable RFC 5761 RTCP multiplexing on the RTP port
With this option enabled, Asterisk will attempt to negotiate the use of the "rtcp-mux"
attribute on all media streams. This will result in RTP and RTCP being sent and received
on the same port. This shifts the demultiplexing logic to the application rather than
the transport layer. This option is useful when interoperating with WebRTC endpoints
since they mandate this option's use.
Whether to notifies all the progress details on blind transfer
Some SIP phones (Mitel/Aastra, Snom) expect a sip/frag "200 OK"
after REFER has been accepted. If set to no then asterisk
will not send the progress details, but immediately will send "200 OK".
Whether to notifies dialog-info 'early' on InUse&Ringing state
Control whether dialog-info subscriptions get 'early' state
on Ringing when already INUSE.
Mailbox name to use when incoming MWI NOTIFYs are received
If an MWI NOTIFY is received from this endpoint,
this mailbox will be used when notifying other modules of MWI status
changes. If not set, incoming MWI NOTIFYs are ignored.
Authentication type
Authentication objects hold the authentication information for use
by other objects such as endpoints or registrations.
This also allows for multiple objects to use a single auth object. See
the auth_type config option for password style choices.
Authentication type
This option specifies which of the password style config options should be read
when trying to authenticate an endpoint inbound request. If set to userpass
then we'll read from the 'password' option. For md5 we'll read
from 'md5_cred'.
Lifetime of a nonce associated with this authentication config.MD5 Hash used for authentication.Only used when auth_type is md5.PlainText password used for authentication.Only used when auth_type is userpass.SIP realm for endpoint
The treatment of this value depends upon how the authentication
object is used.
When used as an inbound authentication object, the realm is sent
as part of the challenge so the peer can know which key to use
when responding. An empty value will use the
global section's
default_realm value when issuing a challenge.
When used as an outbound authentication object, the realm is
matched with the received challenge realm to determine which
authentication object to use when responding to the challenge. An
empty value matches any challenging realm when determining
which authentication object matches a received challenge.
Using the same auth section for inbound and outbound
authentication is not recommended. There is a difference in
meaning for an empty realm setting between inbound and outbound
authentication uses.Must be 'auth'Username to use for accountDomain Alias
Signifies that a domain is an alias. If the domain on a session is
not found to match an AoR then this object is used to see if we have
an alias for the AoR to which the endpoint is binding. This objects
name as defined in configuration should be the domain alias and a
config option is provided to specify the domain to be aliased.
Must be of type 'domain_alias'.Domain to be aliasedSIP TransportTransportsThere are different transports and protocol derivatives
supported by res_pjsip. They are in order of
preference: UDP, TCP, and WebSocket (WS).Changes to transport configuration in pjsip.conf will only be
effected on a complete restart of Asterisk. A module reload
will not suffice.Number of simultaneous Asynchronous OperationsIP Address and optional port to bind to for this transportFile containing a list of certificates to read (TLS ONLY)Path to directory containing a list of certificates to read (TLS ONLY)Certificate file for endpoint (TLS ONLY)
A path to a .crt or .pem file can be provided. However, only
the certificate is read from the file, not the private key.
The priv_key_file option must supply a
matching key file.
Preferred cryptography cipher names (TLS ONLY)Comma separated list of cipher names or numeric equivalents.
Numeric equivalents can be either decimal or hexadecimal (0xX).
There are many cipher names. Use the CLI command
pjsip list ciphers to see a list of cipher
names available for your installation. See link for more:http://www.openssl.org/docs/apps/ciphers.html#CIPHER_SUITE_NAMES
Domain the transport comes fromExternal IP address to use in RTP handling
When a request or response is sent out, if the destination of the
message is outside the IP network defined in the option localnet,
and the media address in the SDP is within the localnet network, then the
media address in the SDP will be rewritten to the value defined for
external_media_address.
External address for SIP signallingExternal port for SIP signallingMethod of SSL transport (TLS ONLY)The default as defined by PJSIP. This is currently TLSv1, but may change with future releases.This option is equivalent to setting 'default'Network to consider local (used for NAT purposes).This must be in CIDR or dotted decimal format with the IP
and mask separated with a slash ('/').Password required for transportPrivate key file (TLS ONLY)Protocol to use for SIP trafficRequire client certificate (TLS ONLY)Must be of type 'transport'.Require verification of client certificate (TLS ONLY)Require verification of server certificate (TLS ONLY)Enable TOS for the signalling sent over this transportSee https://wiki.asterisk.org/wiki/display/AST/IP+Quality+of+Service
for more information on this parameter.This option does not apply to the ws
or the wss protocols.Enable COS for the signalling sent over this transportSee https://wiki.asterisk.org/wiki/display/AST/IP+Quality+of+Service
for more information on this parameter.This option does not apply to the ws
or the wss protocols.The timeout (in milliseconds) to set on WebSocket connections.If a websocket connection accepts input slowly, the timeout
for writes to it can be increased to keep it from being disconnected.
Value is in milliseconds; default is 100 ms.Allow this transport to be reloaded.Allow this transport to be reloaded when res_pjsip is reloaded.
This option defaults to "no" because reloading a transport may disrupt
in-progress calls.Use the same transport for outgoing reqests as incoming ones.When a request from a dynamic contact
comes in on a transport with this option set to 'yes',
the transport name will be saved and used for subsequent
outgoing requests like OPTIONS, NOTIFY and INVITE. It's
saved as a contact uri parameter named 'x-ast-txp' and will
display with the contact uri in CLI, AMI, and ARI output.
On the outgoing request, if a transport wasn't explicitly
set on the endpoint AND the request URI is not a hostname,
the saved transport will be used and the 'x-ast-txp'
parameter stripped from the outgoing packet.
A way of creating an aliased name to a SIP URI
Contacts are a way to hide SIP URIs from the dialplan directly.
They are also used to make a group of contactable parties when
in use with AoR lists.
Must be of type 'contact'.SIP URI to contact peerTime to keep alive a contact
Time to keep alive a contact. String style specification.
Interval at which to qualify a contact
Interval between attempts to qualify the contact for reachability.
If 0 never qualify. Time in seconds.
Timeout for qualify
If the contact doesn't repond to the OPTIONS request before the timeout,
the contact is marked unavailable.
If 0 no timeout. Time in fractional seconds.
Authenticates a qualify request if needed
If true and a qualify request receives a challenge or authenticate response
authentication is attempted before declaring the contact available.
Outbound proxy used when sending OPTIONS request
If set the provided URI will be used as the outbound proxy when an
OPTIONS request is sent to a contact for qualify purposes.
Stored Path vector for use in Route headers on outgoing requests.User-Agent header from registration.
The User-Agent is automatically stored based on data present in incoming SIP
REGISTER requests and is not intended to be configured manually.
Endpoint name
The name of the endpoint this contact belongs to
Asterisk Server name
Asterisk Server name on which SIP endpoint registered.
IP-address of the last Via header from registration.
The last Via header should contain the address of UA which sent the request.
The IP-address of the last Via header is automatically stored based on data present
in incoming SIP REGISTER requests and is not intended to be configured manually.
IP-port of the last Via header from registration.
The IP-port of the last Via header is automatically stored based on data present
in incoming SIP REGISTER requests and is not intended to be configured manually.
Call-ID header from registration.
The Call-ID header is automatically stored based on data present
in incoming SIP REGISTER requests and is not intended to be configured manually.
A contact that cannot survive a restart/boot.
The option is set if the incoming SIP REGISTER contact is rewritten
on a reliable transport and is not intended to be configured manually.
The configuration for a location of an endpoint
An AoR is what allows Asterisk to contact an endpoint via res_pjsip. If no
AoRs are specified, an endpoint will not be reachable by Asterisk.
Beyond that, an AoR has other uses within Asterisk, such as inbound
registration.
An AoR is a way to allow dialing a group
of Contacts that all use the same
endpoint for calls.
This can be used as another way of grouping a list of contacts to dial
rather than specifing them each directly when dialing via the dialplan.
This must be used in conjuction with the PJSIP_DIAL_CONTACTS.
Registrations: For Asterisk to match an inbound registration to an endpoint,
the AoR object name must match the user portion of the SIP URI in the "To:"
header of the inbound SIP registration. That will usually be equivalent
to the "user name" set in your hard or soft phones configuration.
Permanent contacts assigned to AoR
Contacts specified will be called whenever referenced
by chan_pjsip.
Use a separate "contact=" entry for each contact required. Contacts
are specified using a SIP URI.
Default expiration time in seconds for contacts that are dynamically bound to an AoR.Allow subscriptions for the specified mailbox(es)This option applies when an external entity subscribes to an AoR
for Message Waiting Indications. The mailboxes specified will be subscribed to.
More than one mailbox can be specified with a comma-delimited string.
app_voicemail mailboxes must be specified as mailbox@context;
for example: mailboxes=6001@default. For mailboxes provided by external sources,
such as through the res_external_mwi module, you must specify strings supported by
the external system.
For endpoints that cannot SUBSCRIBE for MWI, you can set the mailboxes option in your
endpoint configuration section to enable unsolicited MWI NOTIFYs to the endpoint.
The voicemail extension to send in the NOTIFY Message-Account headerMaximum time to keep an AoR
Maximium time to keep a peer with explicit expiration. Time in seconds.
Maximum number of contacts that can bind to an AoR
Maximum number of contacts that can associate with this AoR. This value does
not affect the number of contacts that can be added with the "contact" option.
It only limits contacts added through external interaction, such as
registration.
The rewrite_contact option
registers the source address as the contact address to help with
NAT and reusing connection oriented transports such as TCP and
TLS. Unfortunately, refreshing a registration may register a
different contact address and exceed
max_contacts. The
remove_existing option can help by
removing the soonest to expire contact(s) over
max_contacts which is likely the
old rewrite_contact contact source
address being refreshed.
This should be set to 1 and
remove_existing set to yes if you
wish to stick with the older chan_sip behaviour.
Minimum keep alive time for an AoR
Minimum time to keep a peer with an explicit expiration. Time in seconds.
Determines whether new contacts replace existing ones.
On receiving a new registration to the AoR should it remove enough
existing contacts not added or updated by the registration to
satisfy max_contacts? Any removed
contacts will expire the soonest.
The rewrite_contact option
registers the source address as the contact address to help with
NAT and reusing connection oriented transports such as TCP and
TLS. Unfortunately, refreshing a registration may register a
different contact address and exceed
max_contacts. The
remove_existing option can help by
removing the soonest to expire contact(s) over
max_contacts which is likely the
old rewrite_contact contact source
address being refreshed.
This should be set to yes and
max_contacts set to 1 if you
wish to stick with the older chan_sip behaviour.
Must be of type 'aor'.Interval at which to qualify an AoR
Interval between attempts to qualify the AoR for reachability.
If 0 never qualify. Time in seconds.
Timeout for qualify
If the contact doesn't repond to the OPTIONS request before the timeout,
the contact is marked unavailable.
If 0 no timeout. Time in fractional seconds.
Authenticates a qualify request if needed
If true and a qualify request receives a challenge or authenticate response
authentication is attempted before declaring the contact available.
Outbound proxy used when sending OPTIONS request
If set the provided URI will be used as the outbound proxy when an
OPTIONS request is sent to a contact for qualify purposes.
Enables Path support for REGISTER requests and Route support for other requests.
When this option is enabled, the Path headers in register requests will be saved
and its contents will be used in Route headers for outbound out-of-dialog requests
and in Path headers for outbound 200 responses. Path support will also be indicated
in the Supported header.
Options that apply to the SIP stack as well as other system-wide settings
The settings in this section are global. In addition to being global, the values will
not be re-evaluated when a reload is performed. This is because the values must be set
before the SIP stack is initialized. The only way to reset these values is to either
restart Asterisk, or unload res_pjsip.so and then load it again.
Set transaction timer T1 value (milliseconds).
Timer T1 is the base for determining how long to wait before retransmitting
requests that receive no response when using an unreliable transport (e.g. UDP).
For more information on this timer, see RFC 3261, Section 17.1.1.1.
Set transaction timer B value (milliseconds).
Timer B determines the maximum amount of time to wait after sending an INVITE
request before terminating the transaction. It is recommended that this be set
to 64 * Timer T1, but it may be set higher if desired. For more information on
this timer, see RFC 3261, Section 17.1.1.1.
Use the short forms of common SIP header names.Initial number of threads in the res_pjsip threadpool.The amount by which the number of threads is incremented when necessary.Number of seconds before an idle thread should be disposed of.Maximum number of threads in the res_pjsip threadpool.
A value of 0 indicates no maximum.Disable automatic switching from UDP to TCP transports.
Disable automatic switching from UDP to TCP transports if outgoing
request is too large. See RFC 3261 section 18.1.1.
Must be of type 'system'.Options that apply globally to all SIP communications
The settings in this section are global. Unlike options in the system
section, these options can be refreshed by performing a reload.
Value used in Max-Forwards header for SIP requests.The interval (in seconds) to send keepalives to active connection-oriented transports.The interval (in seconds) to check for expired contacts.Disable Multi Domain support
If disabled it can improve realtime performace by reducing number of database requsts.
The maximum amount of time from startup that qualifies should be attempted on all contacts.
If greater than the qualify_frequency for an aor, qualify_frequency will be used instead.The number of seconds over which to accumulate unidentified requests.
If unidentified_request_count unidentified requests are received
during unidentified_request_period, a security event will be generated.
The number of unidentified requests from a single IP to allow.
If unidentified_request_count unidentified requests are received
during unidentified_request_period, a security event will be generated.
The interval at which unidentified requests are older than
twice the unidentified_request_period are pruned.Must be of type 'global'.Value used in User-Agent header for SIP requests and Server header for SIP responses.When set, Asterisk will dynamically create and destroy a NoOp priority 1 extension for a given
peer who registers or unregisters with us.Endpoint to use when sending an outbound request to a URI without a specified endpoint.The voicemail extension to send in the NOTIFY Message-Account header if not specified on endpoint or aorEnable/Disable SIP debug logging. Valid options include yes|no or
a host addressThe order by which endpoint identifiers are processed and checked.
Identifier names are usually derived from and can be found in the endpoint
identifier module itself (res_pjsip_endpoint_identifier_*).
You can use the CLI command "pjsip show identifiers" to see the
identifiers currently available.
One of the identifiers is "auth_username" which matches on the username in
an Authentication header. This method has some security considerations because an
Authentication header is not present on the first message of a dialog when
digest authentication is used. The client can't generate it until the server
sends the challenge in a 401 response. Since Asterisk normally sends a security
event when an incoming request can't be matched to an endpoint, using auth_username
requires that the security event be deferred until a request is received with
the Authentication header and only generated if the username doesn't result in a
match. This may result in a delay before an attack is recognized. You can control
how many unmatched requests are received from a single ip address before a security
event is generated using the unidentified_request parameters.
When Asterisk generates an outgoing SIP request, the From header username will be
set to this value if there is no better option (such as CallerID) to be
used.When Asterisk generates a challenge, the digest realm will be
set to this value if there is no better option (such as auth/realm) to be
used.MWI taskprocessor high water alert trigger level.On a heavily loaded system you may need to adjust the
taskprocessor queue limits. If any taskprocessor queue size
reaches its high water level then pjsip will stop processing
new requests until the alert is cleared. The alert clears
when all alerting taskprocessor queues have dropped to their
low water clear level.
MWI taskprocessor low water clear alert level.On a heavily loaded system you may need to adjust the
taskprocessor queue limits. If any taskprocessor queue size
reaches its high water level then pjsip will stop processing
new requests until the alert is cleared. The alert clears
when all alerting taskprocessor queues have dropped to their
low water clear level.
Set to -1 for the low water level to be 90% of
the high water level.Enable/Disable sending unsolicited MWI to all endpoints on startup.When the initial unsolicited MWI notification are
enabled on startup then the initial notifications
get sent at startup. If you have a lot of endpoints
(thousands) that use unsolicited MWI then you may
want to consider disabling the initial startup
notifications.
When the initial unsolicited MWI notifications are
disabled on startup then the notifications will start
on the endpoint's next contact update.
Enable/Disable ignoring SIP URI user field options.If you have this option enabled and there are semicolons
in the user field of a SIP URI then the field is truncated
at the first semicolon. This effectively makes the semicolon
a non-usable character for PJSIP endpoint names, extensions,
and AORs. This can be useful for improving compatability with
an ITSP that likes to use user options for whatever reason.
sip:1235557890;phone-context=national@x.x.x.x;user=phone
1235557890;phone-context=national
1235557890
The caller-id and redirecting number strings
obtained from incoming SIP URI user fields are always truncated
at the first semicolon.
Qualify a chan_pjsip endpoint.
The endpoint you want to qualify.Qualify a chan_pjsip endpoint.Provide details about an identify section.The object's type. This will always be 'identify'.The name of this object.The name of the endpoint associated with this information.Provide details about an Address of Record (AoR) section.The object's type. This will always be 'aor'.The name of this object.The total number of contacts associated with this AoR.The number of non-permanent contacts associated with this AoR.The name of the endpoint associated with this information.Provide details about an authentication section.The object's type. This will always be 'auth'.The name of this object.The name of the endpoint associated with this information.Provide details about an authentication section.The object's type. This will always be 'transport'.The name of this object.The name of the endpoint associated with this information.Provide details about an endpoint section.The object's type. This will always be 'endpoint'.The name of this object.The aggregate device state for this endpoint.The number of active channels associated with this endpoint.Provide details about a contact's status.The AoR that owns this contact.This contact's URI.This contact's status.The round trip time in microseconds.The name of the endpoint associated with this information.Content of the User-Agent header in REGISTER requestAbsolute time that this contact is no longer valid afterIP address:port of the last Via header in REGISTER request.
Will only appear in the event if available.Content of the Call-ID header in REGISTER request.
Will only appear in the event if available.The sorcery ID of the contact.A boolean indicating whether a qualify should be authenticated.The contact's outbound proxy.The Path header received on the REGISTER.The interval in seconds at which the contact will be qualified.The elapsed time in decimal seconds after which an OPTIONS
message is sent before the contact is considered unavailable.Provide details about a contact's status.The object's type. This will always be 'endpoint'.The name of this object.The transport configurations associated with this endpoint.The aor configurations associated with this endpoint.The inbound authentication configurations associated with this endpoint.The outbound authentication configurations associated with this endpoint.The aggregate device state for this endpoint.The number of active channels associated with this endpoint.
Lists PJSIP endpoints.
Provides a listing of all endpoints. For each endpoint an EndpointList event
is raised that contains relevant attributes and status information. Once all
endpoints have been listed an EndpointListComplete event is issued.
Provide final information about an endpoint list.
Detail listing of an endpoint and its objects.
The endpoint to list.
Provides a detailed listing of options for a given endpoint. Events are issued
showing the configuration and status of the endpoint and associated objects. These
events include EndpointDetail, AorDetail,
AuthDetail, TransportDetail, and
IdentifyDetail. Some events may be listed multiple times if multiple objects are
associated (for instance AoRs). Once all detail events have been raised a final
EndpointDetailComplete event is issued.
Provide final information about endpoint details.
Controls ODBC transaction properties.
Gets or sets the active transaction ID. If set, and the transaction ID does not
exist and a database name is specified as an argument, it will be created.Controls whether a transaction will be automatically committed when the channel
hangs up. Defaults to false. If a transaction ID is specified in the optional argument,
the property will be applied to that ID, otherwise to the current active ID.Controls the data isolation on uncommitted transactions. May be one of the
following: read_committed, read_uncommitted,
repeatable_read, or serializable. Defaults to the
database setting in res_odbc.conf or read_committed
if not specified. If a transaction ID is specified as an optional argument, it will be
applied to that ID, otherwise the current active ID.The ODBC() function allows setting several properties to influence how a connected
database processes transactions.
Commits a currently open database transaction.
Commits the database transaction specified by transaction ID
or the current active transaction, if not specified.
Rollback a currently open database transaction.
Rolls back the database transaction specified by transaction ID
or the current active transaction, if not specified.SIP resource for outbound registrationsOutbound RegistrationThis module allows res_pjsip to register to other SIP servers.The configuration for outbound registration
Registration is COMPLETELY separate from the rest of
pjsip.conf. A minimal configuration consists of
setting a server_uri and a client_uri.
Determines whether failed authentication challenges are treated
as permanent failures.If this option is enabled and an authentication challenge fails,
registration will not be attempted again until the configuration is reloaded.Client SIP URI used when attemping outbound registration
This is the address-of-record for the outbound registration (i.e. the URI in
the To header of the REGISTER).For registration with an ITSP, the client SIP URI may need to consist of
an account name or number and the provider's hostname for their registrar, e.g.
client_uri=1234567890@example.com. This may differ between providers.For registration to generic registrars, the client SIP URI will depend
on networking specifics and configuration of the registrar.
Contact User to use in requestExpiration time for registrations in secondsMaximum number of registration attempts.Authentication object(s) to be used for outbound registrations.
This is a comma-delimited list of auth
sections defined in pjsip.conf used to respond
to outbound authentication challenges.
Using the same auth section for inbound and outbound
authentication is not recommended. There is a difference in
meaning for an empty realm setting between inbound and outbound
authentication uses. See the auth realm description for details.
Full SIP URI of the outbound proxy used to send registrationsInterval in seconds between retries if outbound registration is unsuccessfulInterval used when receiving a 403 Forbidden response.
If a 403 Forbidden is received, chan_pjsip will wait
forbidden_retry_interval seconds before
attempting registration again. If 0 is specified, chan_pjsip will not
retry after receiving a 403 Forbidden response. Setting this to a non-zero
value goes against a "SHOULD NOT" in RFC3261, but can be used to work around
buggy registrars.
Interval used when receiving a Fatal response.
If a fatal response is received, chan_pjsip will wait
fatal_retry_interval seconds before
attempting registration again. If 0 is specified, chan_pjsip will not
retry after receiving a fatal (non-temporary 4xx, 5xx, 6xx) response.
Setting this to a non-zero value may go against a "SHOULD NOT" in RFC3261,
but can be used to work around buggy registrars.if also set the forbidden_retry_interval
takes precedence over this one when a 403 is received.
Also, if auth_rejection_permanent equals 'yes' then
a 401 and 407 become subject to this retry interval.SIP URI of the server to register against
This is the URI at which to find the registrar to send the outbound REGISTER. This URI
is used as the request URI of the outbound REGISTER request from Asterisk.For registration with an ITSP, the setting may often be just the domain of
the registrar, e.g. sip:sip.example.com.
Transport used for outbound authenticationA transport configured in
pjsip.conf. As with other res_pjsip modules, this will use the first available transport of the appropriate type if unconfigured.Whether to add a 'line' parameter to the Contact for inbound call matching
When enabled this option will cause a 'line' parameter to be added to the Contact
header placed into the outgoing registration request. If the remote server sends a call
this line parameter will be used to establish a relationship to the outbound registration,
ultimately causing the configured endpoint to be used.
Endpoint to use for incoming related calls
When line support is enabled this configured endpoint name is used for incoming calls
that are related to the outbound registration.
Must be of type 'registration'.Enables Path support for outbound REGISTER requests.
When this option is enabled, outbound REGISTER requests will advertise
support for Path headers so that intervening proxies can add to the Path
header as necessary.
Unregister an outbound registration.
The outbound registration to unregister or '*all' to unregister them all.
Unregisters the specified (or all) outbound registration(s) and stops future registration attempts.
Call PJSIPRegister to start registration and schedule re-registrations according to configuration.
Register an outbound registration.
The outbound registration to register or '*all' to register them all.
Unregisters the specified (or all) outbound registration(s) then starts registration and schedules re-registrations
according to configuration.
Lists PJSIP outbound registrations.
In response OutboundRegistrationDetail events showing configuration and status
information are raised for each outbound registration object. AuthDetail
events are raised for each associated auth object as well. Once all events are completed an
OutboundRegistrationDetailComplete is issued.
Resource for integration with Homer using HEPv3General settings.
The general settings section contains information
to configure Asterisk as a Homer capture agent.
Enable or disable packet capturing.The preferred type of UUID to pass to Homer.Use the PJSIP Call-IdUse the Asterisk channel nameThe address and port of the Homer server to send packets to.If set, the authentication password to send to Homer.The ID for this capture agent.Statsd client.Global configuration settingsEnable/disable the statsd moduleAddress of the statsd serverPrefix to prepend to every metricAppend a newline to every event. This is useful if you want to fake out a server using netcat (nc -lu 8125)SIP resource for outbound publishOutbound PublishThis module allows res_pjsip to publish to other SIP servers.The configuration for outbound publish
Publish is COMPLETELY separate from the rest of
pjsip.conf. A minimal configuration consists of
setting a server_uri and event.
Expiration time for publications in secondsAuthentication object(s) to be used for outbound publishes.
This is a comma-delimited list of auth
sections defined in pjsip.conf used to respond
to outbound authentication challenges.
Using the same auth section for inbound and outbound
authentication is not recommended. There is a difference in
meaning for an empty realm setting between inbound and outbound
authentication uses. See the auth realm description for details.
Full SIP URI of the outbound proxy used to send publishesSIP URI of the server and entity to publish to
This is the URI at which to find the entity and server to send the outbound PUBLISH to.
This URI is used as the request URI of the outbound PUBLISH request from Asterisk.
SIP URI to use in the From header
This is the URI that will be placed into the From header of outgoing PUBLISH
messages. If no URI is specified then the URI provided in server_uri
will be used.
SIP URI to use in the To header
This is the URI that will be placed into the To header of outgoing PUBLISH
messages. If no URI is specified then the URI provided in server_uri
will be used.
Event type of the PUBLISH.Maximum number of authentication attempts before stopping the publication.Transport used for outbound publishA transport configured in
pjsip.conf. As with other res_pjsip modules, this will use the first available transport of the appropriate type if unconfigured.Must be of type 'outbound-publish'.Core external MWI supportPersistent cache of external MWI Mailboxs.Allows the alteration of sorcery backend mapping for
the persistent cache of external MWI mailboxes.
Determine if the calendar is marked busy at this time.
Check the specified calendar's current busy status.CALENDAR_EVENTCALENDAR_QUERYCALENDAR_QUERY_RESULTCALENDAR_WRITE
Get calendar event notification data from a notification call.
The VEVENT SUMMARY property or Exchange event 'subject'The text description of the eventThe organizer of the eventThe location of the eventtThe categories of the eventThe priority of the eventThe name of the calendar associated with the eventThe unique identifier for this eventThe start time of the eventThe end time of the eventThe busy state of the event 0=FREE, 1=TENTATIVE, 2=BUSYWhenever a calendar event notification call is made, the event data
may be accessed with this function.CALENDAR_BUSYCALENDAR_QUERYCALENDAR_QUERY_RESULTCALENDAR_WRITEQuery a calendar server and store the data on a channel
The calendar that should be queriedThe start time of the query (in seconds since epoch)The end time of the query (in seconds since epoch)Get a list of events in the currently accessible timeframe of the calendar
The function returns the id for accessing the result with CALENDAR_QUERY_RESULT()CALENDAR_BUSYCALENDAR_EVENTCALENDAR_QUERY_RESULTCALENDAR_WRITE
Retrieve data from a previously run CALENDAR_QUERY() call
The query ID returned by CALENDAR_QUERYnumber of events occurring during time rangeA summary of the eventThe full event descriptionThe event organizerThe event locationThe categories of the eventThe priority of the eventThe name of the calendar associted with the eventThe unique identifier for the eventThe start time of the event (in seconds since epoch)The end time of the event (in seconds since epoch)The busy status of the event 0=FREE, 1=TENTATIVE, 2=BUSYReturn data from a specific event returned by the queryAfter running CALENDAR_QUERY and getting a result id, calling
CALENDAR_QUERY with that id and a field
will return the data for that field. If multiple events matched the query, and entry
is provided, information from that event will be returned.CALENDAR_BUSYCALENDAR_EVENTCALENDAR_QUERYCALENDAR_WRITEWrite an event to a calendarThe calendar to write toA summary of the eventThe full event descriptionThe event organizerThe event locationThe categories of the eventThe priority of the eventThe unique identifier for the eventThe start time of the event (in seconds since epoch)The end time of the event (in seconds since epoch)The busy status of the event 0=FREE, 1=TENTATIVE, 2=BUSYExample: CALENDAR_WRITE(calendar,field1,field2,field3)=val1,val2,val3The field and value arguments can easily be set/passed using the HASHKEYS() and HASH() functionsThe status of the write operation to the calendar
The event was successfully written to the calendar.
The event was not written to the calendar due to network issues, permissions, etc.
CALENDAR_BUSYCALENDAR_EVENTCALENDAR_QUERYCALENDAR_QUERY_RESULT
Retrieve an SMDI message.
Instead of searching on the forwarding station, search on the message desk terminal.Instead of searching on the forwarding station, search on the message desk number.This function is used to retrieve an incoming SMDI message. It returns
an ID which can be used with the SMDI_MSG() function to access details of
the message. Note that this is a destructive function in the sense that
once an SMDI message is retrieved using this function, it is no longer in
the global SMDI message queue, and can not be accessed by any other Asterisk
channels. The timeout for this function is optional, and the default is
3 seconds. When providing a timeout, it should be in milliseconds.
The default search is done on the forwarding station ID. However, if
you set one of the search key options in the options field, you can change
this behavior.
SMDI_MSG
Retrieve details about an SMDI message.
Valid message components are:The message desk numberThe message desk terminalThe forwarding stationThe callerID of the calling party that was forwardedThe call type. The value here is the exact character
that came in on the SMDI link. Typically, example values
are:Options:Direct CallsForward All CallsForward Busy CallsForward No Answer CallsThis function is used to access details of an SMDI message that was
pulled from the incoming SMDI message queue using the SMDI_MSG_RETRIEVE()
function.SMDI_MSG_RETRIEVE
Answer channel
Answers channel if not already in answer state. Returns -1 on
channel failure, or 0 if successful.hangupAGI
Interrupts Async AGI
Interrupts expected flow of Async AGI commands and returns control to previous source
(typically, the PBX dialplan).hangupAGI
Returns status of the connected channel.
Returns the status of the specified channelname.
If no channel name is given then returns the status of the current channel.Return values:Channel is down and available.Channel is down, but reserved.Channel is off hook.Digits (or equivalent) have been dialed.Line is ringing.Remote end is ringing.Line is up.Line is busy.AGI
Sends audio file on channel and allows the listener to control the stream.
The file extension must not be included in the filename.Defaults to #Defaults to *Offset, in milliseconds, to start the audio playbackSend the given file, allowing playback to be controlled by the given
digits, if any. Use double quotes for the digits if you wish none to be
permitted. If offsetms is provided then the audio will seek to offsetms
before play starts. Returns 0 if playback completes without a digit
being pressed, or the ASCII numerical value of the digit if one was pressed,
or -1 on error or if the channel was disconnected. Returns the
position where playback was terminated as endpos.It sets the following channel variables upon completion:Contains the status of the attempt as a text stringContains the offset in ms into the file where playback
was at when it stopped. -1 is end of file.If the playback is stopped by the user this variable contains
the key that was pressed.get optioncontrol stream fileAGI
Removes database key/value
Deletes an entry in the Asterisk database for a given
family and key.Returns 1 if successful, 0
otherwise.database getdatabase putdatabase deltreeAGI
Removes database keytree/value
Deletes a family or specific keytree
within a family in the Asterisk database.Returns 1 if successful, 0 otherwise.database getdatabase putdatabase delAGI
Gets database value
Retrieves an entry in the Asterisk database for a given family
and key.Returns 0 if key is not set.
Returns 1 if key is set and returns the variable
in parenthesis.Example return code: 200 result=1 (testvariable)database putdatabase deldatabase deltreeAGI
Adds/updates database value
Adds or updates an entry in the Asterisk database for a given
family, key, and
value.Returns 1 if successful, 0 otherwise.database getdatabase deldatabase deltreeAGI
Executes a given Application
Executes application with given
options.Returns whatever the application returns, or
-2 on failure to find application.AGI
Prompts for DTMF on a channel
Stream the given file, and receive DTMF data.Returns the digits received from the channel at the other end.AGI
Evaluates a channel expression
Returns 0 if variablename is not set
or channel does not exist. Returns 1 if variablename
is set and returns the variable in parenthesis. Understands complex variable names and builtin
variables, unlike GET VARIABLE.Example return code: 200 result=1 (testvariable)get variableset variableAGI
Stream file, prompt for DTMF, with timeout.
Behaves similar to STREAM FILE but used with a timeout option.stream filecontrol stream fileAGI
Gets a channel variable.
Returns 0 if variablename is not set.
Returns 1 if variablename is set and returns
the variable in parentheses.Example return code: 200 result=1 (testvariable)get full variableset variableAGI
Hangup a channel.
Hangs up the specified channel. If no channel name is given, hangs
up the current channelAGI
Does nothing.
Does nothing.AGI
Receives one character from channels supporting it.
The maximum time to wait for input in milliseconds, or 0
for infinite. Most channelsReceives a character of text on a channel. Most channels do not support
the reception of text. Returns the decimal value of the character
if one is received, or 0 if the channel does not support
text reception. Returns -1 only on error/hangup.receive textAGI
Receives text from channels supporting it.
The timeout to be the maximum time to wait for input in
milliseconds, or 0 for infinite.Receives a string of text on a channel. Most channels
do not support the reception of text. Returns -1 for failure
or 1 for success, and the string in parenthesis.receive charsend textAGI
Records to a given file.
The destination filename of the recorded audio.The audio format in which to save the resulting file.The DTMF digits that will terminate the recording process.The maximum recording time in milliseconds. Set to -1 for no
limit.Causes the recording to first seek to the specified offset before
recording begins.Causes Asterisk to play a beep as recording begins. This argument
can take any value.The number of seconds of silence that are permitted before the
recording is terminated, regardless of the
escape_digits or timeout
arguments. If specified, this parameter must be preceded by
s=.Record to a file until a given dtmf digit in the sequence is received.
Returns -1 on hangup or error. The format will specify what kind of file
will be recorded. The timeout is the maximum record time in
milliseconds, or -1 for no timeout.
offset samples is optional, and, if provided, will seek
to the offset without exceeding the end of the
file. beep can take any value, and causes Asterisk
to play a beep to the channel that is about to be recorded. silence is
the number of seconds of silence allowed before the function returns despite the
lack of dtmf digits or reaching timeout. silence
value must be preceded by s= and is also optional.AGI
Says a given character string.
Say a given character string, returning early if any of the given DTMF digits
are received on the channel. Returns 0 if playback completes
without a digit being pressed, or the ASCII numerical value of the digit if one
was pressed or -1 on error/hangup.say digitssay numbersay phoneticsay datesay timesay datetimeAGI
Says a given digit string.
Say a given digit string, returning early if any of the given DTMF digits
are received on the channel. Returns 0 if playback completes
without a digit being pressed, or the ASCII numerical value of the digit if one
was pressed or -1 on error/hangup.say alphasay numbersay phoneticsay datesay timesay datetimeAGI
Says a given number.
Say a given number, returning early if any of the given DTMF digits
are received on the channel. Returns 0 if playback
completes without a digit being pressed, or the ASCII numerical value of
the digit if one was pressed or -1 on error/hangup.say alphasay digitssay phoneticsay datesay timesay datetimeAGI
Says a given character string with phonetics.
Say a given character string with phonetics, returning early if any of the
given DTMF digits are received on the channel. Returns 0 if
playback completes without a digit pressed, the ASCII numerical value of the digit
if one was pressed, or -1 on error/hangup.say alphasay digitssay numbersay datesay timesay datetimeAGI
Says a given date.
Is number of seconds elapsed since 00:00:00 on January 1, 1970.
Coordinated Universal Time (UTC).Say a given date, returning early if any of the given DTMF digits are
received on the channel. Returns 0 if playback
completes without a digit being pressed, or the ASCII numerical value of the
digit if one was pressed or -1 on error/hangup.say alphasay digitssay numbersay phoneticsay timesay datetimeAGI
Says a given time.
Is number of seconds elapsed since 00:00:00 on January 1, 1970.
Coordinated Universal Time (UTC).Say a given time, returning early if any of the given DTMF digits are
received on the channel. Returns 0 if playback completes
without a digit being pressed, or the ASCII numerical value of the digit if
one was pressed or -1 on error/hangup.say alphasay digitssay numbersay phoneticsay datesay datetimeAGI
Says a given time as specified by the format given.
Is number of seconds elapsed since 00:00:00
on January 1, 1970, Coordinated Universal Time (UTC)Is the format the time should be said in. See
voicemail.conf (defaults to ABdY
'digits/at' IMp).Acceptable values can be found in /usr/share/zoneinfo
Defaults to machine default.Say a given time, returning early if any of the given DTMF digits are
received on the channel. Returns 0 if playback
completes without a digit being pressed, or the ASCII numerical value of the
digit if one was pressed or -1 on error/hangup.say alphasay digitssay numbersay phoneticsay datesay timeAGI
Sends images to channels supporting it.
Sends the given image on a channel. Most channels do not support the
transmission of images. Returns 0 if image is sent, or if
the channel does not support image transmission. Returns -1
only on error/hangup. Image names should not include extensions.AGI
Sends text to channels supporting it.
Text consisting of greater than one word should be placed
in quotes since the command only accepts a single argument.Sends the given text on a channel. Most channels do not support the
transmission of text. Returns 0 if text is sent, or if the
channel does not support text transmission. Returns -1 only
on error/hangup.receive textAGI
Autohangup channel in some time.
Cause the channel to automatically hangup at time
seconds in the future. Of course it can be hungup before then as well. Setting to
0 will cause the autohangup feature to be disabled on this channel.AGI
Sets callerid for the current channel.
Changes the callerid of the current channel.AGI
Sets channel context.
Sets the context for continuation upon exiting the application.set extensionset priorityAGI
Changes channel extension.
Changes the extension for continuation upon exiting the application.set contextset priorityAGI
Enable/Disable Music on hold generator
Enables/Disables the music on hold generator. If class
is not specified, then the default music on hold class will be
used. This generator will be stopped automatically when playing a file.Always returns 0.AGI
Set channel dialplan priority.
Changes the priority for continuation upon exiting the application.
The priority must be a valid priority or label.set contextset extensionAGI
Sets a channel variable.
Sets a variable to the current channel.get variableget full variableAGI
Sends audio file on channel.
File name to play. The file extension must not be
included in the filename.Use double quotes for the digits if you wish none to be
permitted.If sample offset is provided then the audio will seek to sample
offset before play starts.Send the given file, allowing playback to be interrupted by the given
digits, if any. Returns 0 if playback completes without a digit
being pressed, or the ASCII numerical value of the digit if one was pressed,
or -1 on error or if the channel was disconnected. If
musiconhold is playing before calling stream file it will be automatically
stopped and will not be restarted after completion.It sets the following channel variables upon completion:The status of the playback attempt as a text string.control stream fileget optionAGI
Toggles TDD mode (for the deaf).
Enable/Disable TDD transmission/reception on a channel. Returns 1 if
successful, or 0 if channel is not TDD-capable.AGI
Logs a message to the asterisk verbose log.
Sends message to the console via verbose
message system. level is the verbose level (1-4).
Always returns 1AGI
Waits for a digit to be pressed.
Waits up to timeout milliseconds for channel to
receive a DTMF digit. Returns -1 on channel failure, 0
if no digit is received in the timeout, or the numerical value of the ascii of the digit if
one is received. Use -1 for the timeout value if
you desire the call to block indefinitely.AGI
Creates a speech object.
Create a speech object to be used by the other Speech AGI commands.speech setspeech destroyspeech load grammarspeech unload grammarspeech activate grammarspeech deactivate grammarspeech recognizeAGI
Sets a speech engine setting.
Set an engine-specific setting.speech createspeech destroyspeech load grammarspeech unload grammarspeech activate grammarspeech deactivate grammarspeech recognizeAGI
Destroys a speech object.
Destroy the speech object created by SPEECH CREATE.speech createspeech setspeech load grammarspeech unload grammarspeech activate grammarspeech deactivate grammarspeech recognizeAGI
Loads a grammar.
Loads the specified grammar as the specified name.speech createspeech setspeech destroyspeech unload grammarspeech activate grammarspeech deactivate grammarspeech recognizeAGI
Unloads a grammar.
Unloads the specified grammar.speech createspeech setspeech destroyspeech load grammarspeech activate grammarspeech deactivate grammarspeech recognizeAGI
Activates a grammar.
Activates the specified grammar on the speech object.speech createspeech setspeech destroyspeech load grammarspeech unload grammarspeech deactivate grammarspeech recognizeAGI
Deactivates a grammar.
Deactivates the specified grammar on the speech object.speech createspeech setspeech destroyspeech load grammarspeech unload grammarspeech activate grammarspeech recognizeAGI
Recognizes speech.
Plays back given prompt while listening for
speech and dtmf.speech createspeech setspeech destroyspeech load grammarspeech unload grammarspeech activate grammarspeech deactivate grammarAGI
Executes an AGI compliant application.
How AGI should be invoked on the channel.Arguments to pass to the AGI script or server.Executes an Asterisk Gateway Interface compliant
program on a channel. AGI allows Asterisk to launch external programs written
in any language to control a telephony channel, play audio, read DTMF digits,
etc. by communicating with the AGI protocol.The following variants of AGI exist, and are chosen based on the value
passed to command:The classic variant of AGI, this will launch the script
specified by command as a new process.
Communication with the script occurs on stdin and
stdout. If the full path to the script is not
provided, the astagidir specified in
asterisk.conf will be used.
Connect Asterisk to a FastAGI server using a TCP connection.
The URI to the FastAGI server should be given in the form
[scheme]://host.domain[:port][/script/name],
where scheme is either agi
or hagi.In the case of hagi, an SRV lookup will be
performed to try to connect to a list of FastAGI servers. The hostname in
the URI must be prefixed with _agi._tcp. prior to the DNS resolution. For
example, if you specify the URI hagi://agi.example.com/foo.agi
the DNS query would be for _agi._tcp.agi.example.com. You
will need to make sure this resolves correctly.Use AMI to control the channel in AGI. AGI commands can be invoked
using the AMI action, with a variety of AGI specific
events passed back over the AMI connection. AsyncAGI should be invoked
by passing agi:async to the command
parameter.As of 1.6.0, this channel will
not stop dialplan execution on hangup inside of this application. Dialplan
execution will continue normally, even upon hangup until the AGI application
signals a desire to stop (either by exiting or, in the case of a net script, by
closing the connection).A locally executed AGI script will receive SIGHUP on
hangup from the channel except when using DeadAGI
(or when the channel is already hungup). A fast AGI server will
correspondingly receive a HANGUP inline with the command dialog.
Both of these signals may be disabled by setting the AGISIGHUP
channel variable to no before executing the AGI application.
Alternatively, if you would like the AGI application to exit immediately
after a channel hangup is detected, set the AGIEXITONHANGUP
variable to yes.
; Start the AGI script /tmp/my-cool-script.sh, passing it the contents
; of the channel variable FOO
same => n,AGI(/tmp/my-cool-script.sh,${FOO})
; Start the AGI script my-cool-script.sh located in the astagidir
; directory, specified in asterisk.conf
same => n,AGI(my-cool-script.sh)
; Connect to the FastAGI server located at 127.0.0.1 and start the script
; awesome-script
same => n,AGI(agi://127.0.0.1/awesome-script)
; Start AsyncAGI
same => n,AGI(agi:async)
This application sets the following channel variable upon completion:The status of the attempt to the run the AGI script
text string, one of:AGIAsyncAGIStartAsyncAGIEndEAGIDeadAGIasterisk.conf
Executes an EAGI compliant application.
Using 'EAGI' provides enhanced AGI, with incoming audio available out of band
on file descriptor 3. In all other respects, it behaves in the same fashion as
AGI. See the documentation for the AGI dialplan application for
more information on invoking AGI on a channel.This application sets the following channel variable upon completion:AGIDeadAGI
Executes AGI on a hungup channel.
This application is deprecated and may be removed in a future version
of Asterisk. Use the replacement application AGI instead
of DeadAGI.
Execute AGI on a 'dead' or hungup channel. See the documentation for the
AGI dialplan application for more information on invoking
AGI on a channel.This application sets the following channel variable upon completion:AGIEAGI
Add an AGI command to execute by Async AGI.
Channel that is currently in Async AGI.Application to execute.This will be sent back in CommandID header of AsyncAGI exec
event notification.Add an AGI command to the execute queue of the channel in Async AGI.AsyncAGIStartAsyncAGIExecAsyncAGIEndRaised when a channel starts AsyncAGI command processing.URL encoded string read from the AsyncAGI server.AsyncAGIEndAsyncAGIExecAGIAGIRaised when a channel stops AsyncAGI command processing.AsyncAGIStartAsyncAGIExecAGIAGIRaised when AsyncAGI completes an AGI command.Optional command ID sent by the AsyncAGI server to identify the command.URL encoded result string from the executed AGI command.AsyncAGIStartAsyncAGIEndAGIAGIRaised when a received AGI command starts processing.The AGI command as received from the external source.Random identification number assigned to the execution of this command.AGIExecEndAGIRaised when a received AGI command completes processing.The numeric result code from AGIThe text result reason from AGIAGIExecStartAGI
Lists subscriptions.
Provides a listing of all inbound subscriptions. An event InboundSubscriptionDetail
is issued for each subscription object. Once all detail events are completed an
InboundSubscriptionDetailComplete event is issued.
Lists subscriptions.
Provides a listing of all outbound subscriptions. An event OutboundSubscriptionDetail
is issued for each subscription object. Once all detail events are completed an
OutboundSubscriptionDetailComplete event is issued.
Displays settings for configured resource lists.
Provides a listing of all resource lists. An event ResourceListDetail
is issued for each resource list object. Once all detail events are completed a
ResourceListDetailComplete event is issued.
Module that implements publish and subscribe support.Persists SIP subscriptions so they survive restarts.Entire SIP SUBSCRIBE packet that created the subscriptionThe source address of the subscriptionThe source port of the subscriptionThe type of transport the subscription was received onThe local address the subscription was received onThe local port the subscription was received onThe sequence number of the next NOTIFY to be sentThe local tag of the dialog for the subscriptionThe name of the endpoint that subscribedThe time at which the subscription expiresThe Contact URI of the dialog for the subscriptionResource list configuration parameters.This configuration object allows for RFC 4662 resource list subscriptions
to be specified. This can be useful to decrease the amount of subscription traffic
that a server has to process.Current limitations limit the size of SIP NOTIFY requests that Asterisk sends
to 64000 bytes. If your resource list notifications are larger than this maximum, you
will need to make adjustments.Must be of type 'resource_list'The SIP event package that the list resource belong to.
The SIP event package describes the types of resources that Asterisk reports
the state of.
Device state and presence reporting.
This is identical to presence.
Message-waiting indication (MWI) reporting.
The name of a resource to report state onIn general Asterisk looks up list items in the following way:1. Check if the list item refers to another configured resource list.2. Pass the name of the resource off to event-package-specific handlers
to find the specified resource.The second part means that the way the list item is specified depends
on what type of list this is. For instance, if you have the event
set to presence, then list items should be in the form of
dialplan_extension@dialplan_context. For message-summary mailbox
names should be listed.Indicates if the entire list's state should be sent out.If this option is enabled, and a resource changes state, then Asterisk will construct
a notification that contains the state of all resources in the list. If the option is
disabled, Asterisk will construct a notification that only contains the states of
resources that have changed.Even with this option disabled, there are certain situations where Asterisk is forced
to send a notification with the states of all resources in the list. When a subscriber
renews or terminates its subscription to the list, Asterisk MUST send a full state
notification.Time Asterisk should wait, in milliseconds, before sending notifications.When a resource's state changes, it may be desired to wait a certain amount before Asterisk
sends a notification to subscribers. This allows for other state changes to accumulate, so that
Asterisk can communicate multiple state changes in a single notification instead of rapidly sending
many notifications.The configuration for inbound publicationsOptional name of an endpoint that is only allowed to publish to this resourceMust be of type 'inbound-publication'.
Park yourself.
Specify in which parking lot to park a call.The parking lot used is selected in the following order:1) parking_lot_name option to this application2) PARKINGLOT variable3) CHANNEL(parkinglot) function
(Possibly preset by the channel driver.)4) Default parking lot.A list of options for this parked call.Used to park yourself (typically in combination with an attended
transfer to know the parking space).If you set the PARKINGEXTEN variable to a
parking space extension in the parking lot, Park() will attempt to park the
call on that extension. If the extension is already in use then execution
will continue at the next priority.
If the parkeddynamic option is enabled in
res_parking.conf the following variables can be
used to dynamically create new parking lots. When using dynamic parking
lots, be aware of the conditions as explained in the notes section
below.
The PARKINGDYNAMIC variable specifies the
parking lot to use as a template to create a dynamic parking lot. It
is an error to specify a non-existent parking lot for the template.
If not set then the default parking lot is used as the template.
The PARKINGDYNCONTEXT variable specifies the
dialplan context to use for the newly created dynamic parking lot. If
not set then the context from the parking lot template is used. The
context is created if it does not already exist and the new parking lot
needs to create extensions.
The PARKINGDYNEXTEN variable specifies the
parkext to use for the newly created dynamic
parking lot. If not set then the parkext is used from
the parking lot template. If the template does not specify a
parkext then no extensions are created for the newly
created parking lot. The dynamic parking lot cannot be created if it
needs to create extensions that overlap existing parking lot extensions.
The only exception to this is for the parkext
extension and only if neither of the overlaping parking lot's
parkext is exclusive.
The PARKINGDYNPOS variable specifies the
parking positions to use for the newly created dynamic parking lot. If
not set then the parkpos from the parking lot template
is used.
This application must be used as the first extension priority
to be recognized as a parking access extension for blind transfers.
Blind transfers and the DTMF one-touch parking feature need this
distinction to operate properly. The parking access extension in
this case is treated like a dialplan hint.
ParkedCall
Retrieve a parked call.
Specify from which parking lot to retrieve a parked call.The parking lot used is selected in the following order:1) parking_lot_name option2) PARKINGLOT variable3) CHANNEL(parkinglot) function
(Possibly preset by the channel driver.)4) Default parking lot.Parking space to retrieve a parked call from.
If not provided then the first available parked call in the
parking lot will be retrieved.Used to retrieve a parked call from a parking lot.If a parking lot's parkext option is set, then Parking lots
will automatically create and manage dialplan extensions in
the parking lot context. If that is the case then you will not
need to manage parking extensions yourself, just include the
parking context of the parking lot.Park
Park and Announce.
Specify in which parking lot to park a call.The parking lot used is selected in the following order:1) parking_lot_name option to this application2) PARKINGLOT variable3) CHANNEL(parkinglot) function
(Possibly preset by the channel driver.)4) Default parking lot.A list of options for this parked call.Colon-separated list of files to announce. The word
PARKED will be replaced by a say_digits of the extension in which
the call is parked.The app_dial style resource to call to make the
announcement. Console/dsp calls the console.Park a call into the parkinglot and announce the call to another channel.The variable PARKEDAT will contain the parking extension
into which the call was placed. Use with the Local channel to allow the dialplan to make
use of this information.ParkParkedCall
Get a list of parking lots
List all parking lots as a series of AMI events
List parked calls.
If specified, only show parked calls from the parking lot with this name.List parked calls.
Park a channel.
Channel name to park.Channel name to use when constructing the dial string that will be dialed if the parked channel
times out. If TimeoutChannel is in a two party bridge with
Channel, then TimeoutChannel will receive an announcement and be
treated as having parked Channel in the same manner as the Park Call DTMF feature.
If specified, then this channel will receive an announcement when Channel
is parked if AnnounceChannel is in a state where it can receive announcements
(AnnounceChannel must be bridged). AnnounceChannel has no bearing on the actual
state of the parked call.Overrides the timeout of the parking lot for this park action. Specified in milliseconds, but will be converted to
seconds. Use a value of 0 to disable the timeout.
The parking lot to use when parking the channelPark an arbitrary channel with optional arguments for specifying the parking lot used, how long
the channel should remain parked, and what dial string to use as the parker if the call times out.
Raised when a channel is parked.Dial String that can be used to call back the parker on ParkingTimeout.Name of the parking lot that the parkee is parked inParking Space that the parkee is parked inTime remaining until the parkee is forcefully removed from parking in secondsTime the parkee has been in the parking bridge (in seconds)Raised when a channel leaves a parking lot due to reaching the time limit of being parked.Raised when a channel leaves a parking lot because it hung up without being answered.Raised when a channel leaves a parking lot because it was retrieved from the parking lot and reconnected.Raised when a channel takes the place of a previously parked channelThis event is raised when a channel initially parked in the parking lot
is swapped out with a different channel. The most common case for this is when
an attended transfer to a parking lot occurs. The Parkee information in the event
will indicate the party that was swapped into the parking lot.
Sends an XMPP message to a buddy.
The local named account to listen on (specified in
xmpp.conf)Jabber ID of the buddy to send the message to. It can be a
bare JID (username@domain) or a full JID (username@domain/resource).The message to send.Sends the content of message as text message
from the given account to the buddy identified by
jidExample: JabberSend(asterisk,bob@domain.com,Hello world) sends "Hello world"
to bob@domain.com as an XMPP message from the account
asterisk, configured in xmpp.conf.JABBER_STATUSJABBER_RECEIVE
Reads XMPP messages.
The local named account to listen on (specified in
xmpp.conf)Jabber ID of the buddy to receive message from. It can be a
bare JID (username@domain) or a full JID (username@domain/resource).In seconds, defaults to 20.Receives a text message on the given account
from the buddy identified by jid and returns the contents.Example: ${JABBER_RECEIVE(asterisk,bob@domain.com)} returns an XMPP message
sent from bob@domain.com (or nothing in case of a time out), to
the asterisk XMPP account configured in xmpp.conf.JABBER_STATUSJabberSend
Retrieves a buddy's status.
The local named account to listen on (specified in
xmpp.conf)Jabber ID of the buddy to receive message from. It can be a
bare JID (username@domain) or a full JID (username@domain/resource).Retrieves the numeric status associated with the buddy identified
by jid.
If the buddy does not exist in the buddylist, returns 7.Status will be 1-7.1=Online, 2=Chatty, 3=Away, 4=XAway, 5=DND, 6=OfflineIf not in roster variable will be set to 7.Example: ${JABBER_STATUS(asterisk,bob@domain.com)} returns 1 if
bob@domain.com is online. asterisk is
the associated XMPP account configured in xmpp.conf.JABBER_RECEIVEJabberSend
Send a Jabber Message to a specified chat room
Client or transport Asterisk uses to connect to Jabber.XMPP/Jabber JID (Name) of chat room.Message to be sent to the chat room.The nickname Asterisk uses in the chat room.Allows user to send a message to a chat room via XMPP.To be able to send messages to a chat room, a user must have previously joined it. Use the JabberJoin function to do so.
Join a chat room
Client or transport Asterisk uses to connect to Jabber.XMPP/Jabber JID (Name) of chat room.The nickname Asterisk will use in the chat room.If a different nickname is supplied to an already joined room, the old nick will be changed to the new one.Allows Asterisk to join a chat room.
Leave a chat room
Client or transport Asterisk uses to connect to Jabber.XMPP/Jabber JID (Name) of chat room.The nickname Asterisk uses in the chat room.Allows Asterisk to leave a chat room.
Retrieve the status of a jabber list member
Client or transport Asterisk users to connect to Jabber.XMPP/Jabber JID (Name) of recipient.Variable to store the status of requested user.This application is deprecated. Please use the JABBER_STATUS() function instead.Retrieves the numeric status associated with the specified buddy JID.
The return value in the Variablewill be one of the following.Online.Chatty.Away.Extended Away.Do Not Disturb.Offline.Not In Roster.
Sends a message to a Jabber Client.
Client or transport Asterisk uses to connect to JABBER.XMPP/Jabber JID (Name) of recipient.Message to be sent to the buddy.Sends a message to a Jabber Client.Specifying a prefix of xmpp: will send the
message as an XMPP chat message.Specifying a prefix of xmpp: will specify the
account defined in xmpp.conf to send the message from.
Note that this field is required for XMPP messages.XMPP MessagingGlobal configuration settingsEnable/disable XMPP message debuggingAuto-remove users from buddy list.Auto-remove users from buddy list. Depending on the setup
(e.g., using your personal Gtalk account for a test) this could cause loss of
the contact list.
Auto-register users from buddy listEnable support for XEP-0248 for use with distributed device stateWhether or not the PubSub server supports/is using auto-create for nodesWhether to automatically accept or deny users' subscription requestsConfiguration options for an XMPP clientXMPP username with optional resourceXMPP passwordGoogle OAuth 2.0 refresh tokenGoogle OAuth 2.0 application's client idGoogle OAuth 2.0 application's secretRoute to server, e.g. talk.google.comCustom status messageNode for publishing events via PubSubDialplan context to send incoming messages toXMPP resource priorityXMPP server portTimeout in seconds to hold incoming messagesTimeout (in seconds) on the message stack. Messages stored longer
than this value will be deleted by Asterisk. This option applies to incoming messages only
which are intended to be processed by the JABBER_RECEIVE dialplan function.
Enable debuggingConnection is either a client or a componentWhether or not to distribute events using this connectionWhether to use TLS for the connection or notWhether to use SASL for the connection or notForce the use of old-style SSL for the connectionIf enabled, periodically send an XMPP message from this client with an empty messageAuto-remove users from buddy list.Auto-remove users from buddy list. Depending on the setup
(e.g., using your personal Gtalk account for a test) this could cause loss of
the contact list.
Auto-register users bfrom buddy listWhether to automatically accept or deny users' subscription requestsSend incoming messages into the dialplanDefault XMPP status for the clientCan be one of the following XMPP statuses:Manual addition of buddy to list
Manual addition of buddy to the buddy list. For distributed events, these budies are
automatically added in the whitelist as 'owners' of the node(s).
Module that integrates res_pjsip with res_phoneprov.PJSIP Phoneprov ProviderThis module creates the integration between res_pjsip and
res_phoneprov.
Each user to be integrated requires a phoneprov
section defined in pjsip.conf. Each section identifies
the endpoint associated with the user and any other name/value pairs to be passed
on to res_phoneprov's template substitution. Only MAC and
PROFILE variables are required. Any other variables
supplied will be passed through.Example:[1000]type = phoneprovrendpoint = ep1000MAC = deadbeef4dadPROFILE = grandstream2LINEKEYS = 2LINE = 1OTHERVAR = othervalueThe following variables are automatically defined if an endpoint
is defined for the user:Source: The user_name defined in the first auth reference
in the endpoint.Source: The user_pass defined in the first auth reference
in the endpoint.Source: The number part of the callerid defined in
the endpoint.Source: The name part of the callerid defined in
the endpoint.Source: The id of the phoneprov section.In addition to the standard variables, the following are also automatically defined:Source: The id of the endpoint.Source: The id of the transport used by the endpoint.Source: The id of the auth used by the endpoint.All other template substitution variables must be explicitly defined in the
phoneprov_default or phoneprov sections.Provides variables for each user.Must be of type 'phoneprov'.The endpoint from which variables will be retrieved.The mac address for this user. (required)The phoneprov profile to use for this user. (required)Other name/value pairs to be passed through for use in templates.
List the current known presence states.
This will list out all known presence states in a
sequence of PresenceStateChange events.
When finished, a PresenceStateListComplete event
will be emitted.PresenceStatePresenceStatusPRESENCE_STATE
Indicates the end of the list the current known extension states.
Conveys the status of the event list.Conveys the number of statuses reported.
Execute specified template for each extension.
Output the specified template for each extension associated with the specified MAC address.
Generate a string for each phoneprov user.
Pass in a string, with phoneprov variables you want substituted in the format of
%{VARNAME}, and you will get the string rendered for each user in phoneprov
excluding ones with MAC address exclude_mac. Probably not
useful outside of res_phoneprov.Example: ${PP_EACH_USER(<item><fn>%{DISPLAY_NAME}</fn></item>|${MAC})
Gets headers from an inbound PJSIP channel. Adds, updates or removes the
specified SIP header from an outbound PJSIP channel.
Returns instance number
of header name.Adds a new header name
to this session.Updates instance number
of header name to a new value.
The header must already exist.Removes all instances of previously added headers
whose names match name. A *
may be appended to name to remove all headers
beginning withname.
name may be set to a single *
to clear all previously added headers. In all cases,
the number of headers actually removed is returned.The name of the header.If there's more than 1 header with the same name, this specifies which header
to read or update. If not specified, defaults to 1 meaning
the first matching header. Not valid for add or
remove.PJSIP_HEADER allows you to read specific SIP headers from the inbound
PJSIP channel as well as write(add, update, remove) headers on the outbound
channel. One exception is that you can read headers that you have already
added on the outbound channel.Examples:;; Set 'somevar' to the value of the 'From' header.exten => 1,1,Set(somevar=${PJSIP_HEADER(read,From)});; Set 'via2' to the value of the 2nd 'Via' header.exten => 1,1,Set(via2=${PJSIP_HEADER(read,Via,2)});; Add an 'X-Myheader' header with the value of 'myvalue'.exten => 1,1,Set(PJSIP_HEADER(add,X-MyHeader)=myvalue);; Add an 'X-Myheader' header with an empty value.exten => 1,1,Set(PJSIP_HEADER(add,X-MyHeader)=);; Update the value of the header named 'X-Myheader' to 'newvalue'.; 'X-Myheader' must already exist or the call will fail.exten => 1,1,Set(PJSIP_HEADER(update,X-MyHeader)=newvalue);; Remove all headers whose names exactly match 'X-MyHeader'.exten => 1,1,Set(PJSIP_HEADER(remove,X-MyHeader)=);; Remove all headers that begin with 'X-My'.exten => 1,1,Set(PJSIP_HEADER(remove,X-My*)=);; Remove all previously added headers.exten => 1,1,Set(PJSIP_HEADER(remove,*)=);The remove action can be called by reading
or writing PJSIP_HEADER.;; Display the number of headers removedexten => 1,1,Verbose( Removed ${PJSIP_HEADER(remove,X-MyHeader)} headers);; Set a variable to the number of headers removedexten => 1,1,Set(count=${PJSIP_HEADER(remove,X-MyHeader)});; Just remove them ignoring any countexten => 1,1,Set(=${PJSIP_HEADER(remove,X-MyHeader)})exten => 1,1,Set(PJSIP_HEADER(remove,X-MyHeader)=);If you call PJSIP_HEADER in a normal dialplan context you'll be
operating on the caller's (incoming) channel which
may not be what you want. To operate on the callee's (outgoing)
channel call PJSIP_HEADER in a pre-dial handler. Example:;[handler]exten => addheader,1,Set(PJSIP_HEADER(add,X-MyHeader)=myvalue)exten => addheader,2,Set(PJSIP_HEADER(add,X-MyHeader2)=myvalue2);[somecontext]exten => 1,1,Dial(PJSIP/${EXTEN},,b(handler^addheader^1));pjproject common configurationAsterisk startup time options for PJPROJECTThe id of this object, as well as its type, must be
'startup' or it won't be found.Must be of type 'startup'.Initial maximum pjproject logging level to log.Valid values are: 0-6, and default
This option is needed very early in the startup process
so it can only be read from config files because the
modules for other methods have not been loaded yet.
PJPROJECT to Asterisk Log Level MappingWarnings and errors in the pjproject libraries are generally handled
by Asterisk. In many cases, Asterisk wouldn't even consider them to
be warnings or errors so the messages emitted by pjproject directly
are either superfluous or misleading. The 'log_mappings'
object allows mapping the pjproject levels to Asterisk levels, or nothing.
The id of this object, as well as its type, must be
'log_mappings' or it won't be found.Must be of type 'log_mappings'.A comma separated list of pjproject log levels to map to Asterisk LOG_ERROR.A comma separated list of pjproject log levels to map to Asterisk LOG_WARNING.A comma separated list of pjproject log levels to map to Asterisk LOG_NOTICE.A comma separated list of pjproject log levels to map to Asterisk LOG_DEBUG.A comma separated list of pjproject log levels to map to Asterisk LOG_VERBOSE.The from parameter can be a configured endpoint
or in the form of "display-name" <URI>.Specifying a prefix of pjsip: will send the
message as a SIP MESSAGE request.
Muting audio streams in the channel
Must be one of Inbound stream (to the PBX)Outbound stream (from the PBX)Both streamsThe MUTEAUDIO function can be used to mute inbound (to the PBX) or outbound audio in a call.
Examples:
MUTEAUDIO(in)=on
MUTEAUDIO(in)=off
Mute an audio stream.
The channel you want to mute.Set muting on inbound audio stream. (to the PBX)Set muting on outbound audio stream. (from the PBX)Set muting on inbound and outbound audio streams.Turn muting on.Turn muting off.Mute an incoming or outgoing audio stream on a channel.Options that apply to every parking lotEnables dynamically created parkinglots.If the option is enabled then the following variables can
be used to dynamically create new parking lots.
The PARKINGDYNAMIC variable specifies the
parking lot to use as a template to create a dynamic parking lot. It
is an error to specify a non-existent parking lot for the template.
If not set then the default parking lot is used as the template.
The PARKINGDYNCONTEXT variable specifies the
dialplan context to use for the newly created dynamic parking lot. If
not set then the context from the parking lot template is used. The
context is created if it does not already exist and the new parking lot
needs to create extensions.
The PARKINGDYNEXTEN variable specifies the
parkext to use for the newly created dynamic
parking lot. If not set then the parkext is used from
the parking lot template. If the template does not specify a
parkext then no extensions are created for the newly
created parking lot. The dynamic parking lot cannot be created if it
needs to create extensions that overlap existing parking lot extensions.
The only exception to this is for the parkext
extension and only if neither of the overlaping parking lot's
parkext is exclusive.
The PARKINGDYNPOS variable specifies the
parking positions to use for the newly created dynamic parking lot. If
not set then the parkpos from the parking lot template
is used.
Defined parking lots for res_parking to use to park calls onThe name of the context where calls are parked and picked up from.This option is only used if parkext is set.Extension to park calls to this parking lot.If this option is used, this extension will automatically
be created to place calls into parking lots. In addition, if
parkext_exclusive is set for this parking
lot, the name of the parking lot will be included in the
application's arguments so that it only parks to this parking
lot. The extension will be created in context.
Using this option also creates extensions for retrieving
parked calls from the parking spaces in the same context.
Generated parking extensions cannot overlap.
The only exception is if neither overlapping
parkext is exclusive.
If yes, the extension registered as parkext will park exclusively to this parking lot.Numerical range of parking spaces which can be used to retrieve parked calls.If parkext is set, these extensions
will automatically be mapped in context
in order to pick up calls parked to these parking spaces.
If yes, this parking lot will add hints automatically for parking spaces.Amount of time a call will remain parked before giving up (in seconds).Which music class to use for parked calls. They will use the default if unspecified.Determines what should be done with the parked channel if no one picks it up before it times out.Valid Options:Automatically have the parked channel dial the device that parked the call with dial
timeout set by the parkingtime option. When the call times out an extension
to dial the PARKER will automatically be created in the park-dial context with
an extension of the flattened parker device name. If the call is not answered, the parked channel
that is timing out will continue in the dial plan at that point if there are more priorities in
the extension (which won't be the case unless the dialplan deliberately includes such priorities
in the park-dial context through pattern matching or deliberately written
flattened peer extensions).Place the call into the PBX at comebackcontext instead. The extension will
still be set as the flattened peer name. If an extension the flattened peer name isn't available
then it will fall back to the s extension. If that also is unavailable it will
attempt to fall back to s@default. The normal dial extension will still be
created in the park-dial context with the extension also being the flattened
peer name.Flattened Peer Names - Extensions can not include slash characters since those are used for pattern
matching. When a peer name is flattened, slashes become underscores. For example if the parker of a call
is called SIP/0004F2040001 then flattened peer name and therefor the extensions created
and used on timeouts will be SIP_0004F204001.When parking times out and the channel returns to the dial plan, the following variables are set:
extension that the call was parked in prior to timing out.Deprecated. Use PARKING_SPACE instead.name of the lot that the call was parked in prior to timing out.The device that parked the callThe flat version of PARKERTimeout for the Dial extension created to call back the parker when a parked call times out.Context where parked calls will enter the PBX on timeout when comebacktoorigin=noThe extension the call enters will prioritize the flattened peer name in this context.
If the flattened peer name extension is unavailable, then the 's' extension in this context will be
used. If that also is unavailable, the 's' extension in the 'default' context will be used.If the name of a sound file is provided, use this as the courtesy toneBy default, this tone is only played to the caller of a parked call. Who receives the tone
can be changed using the parkedplay option.Who we should play the courtesytone to on the pickup of a parked call from this lotApply to neither side.Apply only to the call connecting with the call coming out of the parking lot.Apply only to the call coming out of the parking lot.Apply to both sides.If courtesy tone is not specified then this option will be ignored.Who to apply the DTMF transfer features to when parked calls are picked up or timeout.Who to apply the DTMF parking feature to when parked calls are picked up or timeout.Who to apply the DTMF hangup feature to when parked calls are picked up or timeout.Who to apply the DTMF MixMonitor recording feature to when parked calls are picked up or timeout.Rule to use when trying to figure out which parking space a call should be parked with.Always try to place in the lowest available space in the parking lotTrack the last parking space used and always attempt to use the one immediately after.
Monitor a channel.
Optional. If not set, defaults to wavIf set, changes the filename used to the one specified.Used to start monitoring a channel. The channel's input and output
voice packets are logged to files until the channel hangs up or
monitoring is stopped by the StopMonitor application.By default, files are stored to /var/spool/asterisk/monitor/.
Returns -1 if monitor files can't be opened or if the channel is
already monitored, otherwise 0.StopMonitor
Stop monitoring a channel.
Stops monitoring a channel. Has no effect if the channel is not monitored.
Change monitoring filename of a channel.
The new filename base to use for monitoring this channel.Changes monitoring filename of a channel. Has no effect if the
channel is not monitored.
Pause monitoring of a channel.
Pauses monitoring of a channel until it is re-enabled by a call to UnpauseMonitor.UnpauseMonitor
Unpause monitoring of a channel.
Unpauses monitoring of a channel on which monitoring had
previously been paused with PauseMonitor.PauseMonitor
Monitor a channel.
Used to specify the channel to record.Is the name of the file created in the monitor spool directory.
Defaults to the same name as the channel (with slashes replaced with dashes).Is the audio recording format. Defaults to wav.Boolean parameter as to whether to mix the input and output channels
together after the recording is finished.This action may be used to record the audio on a
specified channel.
Stop monitoring a channel.
The name of the channel monitored.This action may be used to end a previously started 'Monitor' action.
Change monitoring filename of a channel.
Used to specify the channel to record.Is the new name of the file created in the
monitor spool directory.This action may be used to change the file
started by a previous 'Monitor' action.
Pause monitoring of a channel.
Used to specify the channel to record.This action may be used to temporarily stop the
recording of a channel.
Unpause monitoring of a channel.
Used to specify the channel to record.This action may be used to re-enable recording
of a channel after calling PauseMonitor.
Send a NOTIFY to either an endpoint or an arbitrary URI.
The endpoint to which to send the NOTIFY.Abritrary URI to which to send the NOTIFY.Appends variables as headers/content to the NOTIFY. If the variable is
named Content, then the value will compose the body
of the message if another variable sets Content-Type.
name=valueSends a NOTIFY to an endpoint or an arbitrary URI.All parameters for this event must be specified in the body of this
request via multiple Variable: name=value sequences.One (and only one) of Endpoint or
URI must be specified. If URI is used,
the default outbound endpoint will be used to send the message. If the default
outbound endpoint isn't configured, this command can not send to an arbitrary
URI.Module that supports sending NOTIFY requests to endpoints from external sourcesUnused, but reserved.Configuration of a NOTIFY request.Each key-value pair in a notify
configuration section defines either a SIP header to send
in the request or a line of content in the request message
body. A key of Content is treated
as part of the message body and is appended in sequential
order; any other header is treated as part of the SIP
request.A key/value pair to add to a NOTIFY request.If the key is Content,
it will be treated as part of the message body. Otherwise,
it will be added as a header in the NOTIFY request.The following headers are reserved and cannot be
specified:HTTP binding for the Stasis APIGeneral configuration settingsEnable/disable the ARI moduleThis option enables or disables the ARI module.ARI uses Asterisk's HTTP server, which must also be enabled in http.conf.http.confhttps://wiki.asterisk.org/wiki/display/AST/Asterisk+Builtin+mini-HTTP+ServerThe timeout (in milliseconds) to set on WebSocket connections.If a websocket connection accepts input slowly, the timeout
for writes to it can be increased to keep it from being disconnected.
Value is in milliseconds; default is 100 ms.Responses from ARI are formatted to be human readableRealm to use for authentication. Defaults to Asterisk REST Interface.Comma separated list of allowed origins, for Cross-Origin Resource Sharing. May be set to * to allow all origins.Per-user configuration settingsDefine this configuration section as a user.Configure this section as a userWhen set to yes, user is only authorized for read-only requestsCrypted or plaintext password (see password_format)password_format may be set to plain (the default) or crypt. When set to crypt, crypt(3) is used to validate the password. A crypted password can be generated using mkpasswd -m sha-512. When set to plain, the password is in plaintext
Receive a FAX and save as a TIFF/F file.
This application is provided by res_fax, which is a FAX technology agnostic module
that utilizes FAX technology resource modules to complete a FAX transmission.Session arguments can be set by the FAXOPT function and to check results of the ReceiveFax() application.FAXOPT
Sends a specified TIFF/F file as a FAX.
TIFF file to send as a FAX.This application is provided by res_fax, which is a FAX technology agnostic module
that utilizes FAX technology resource modules to complete a FAX transmission.Session arguments can be set by the FAXOPT function and to check results of the SendFax() application.FAXOPT
Gets/sets various pieces of information about a fax session.
R/W Error Correction Mode (ECM) enable with 'yes', disable with 'no'.R/O FAX transmission error code upon failure.R/O Filename of the first file of the FAX transmission.R/O Filenames of all of the files in the FAX transmission (comma separated).R/W FAX header information.R/W Local Station Identification.R/W Minimum transfer rate set before transmission.R/W Maximum transfer rate set before transmission.R/W Modem type (v17/v27/v29).R/W T38 fax gateway, with optional fax activity timeout in seconds (yes[,timeout]/no)R/W Enable FAX detect with optional timeout in seconds (yes,t38,cng[,timeout]/no)R/O Number of pages transferred.R/O Negotiated transmission rate.R/O Remote Station Identification after transmission.R/O Negotiated image resolution after transmission.R/O Session ID of the FAX transmission.R/O Result Status of the FAX transmission.R/O Verbose Result Status of the FAX transmission.R/W The timeout used for T.38 negotiation.FAXOPT can be used to override the settings for a FAX session listed in res_fax.conf,
it can also be used to retrieve information about a FAX session that has finished eg. pages/status.ReceiveFaxSendFax
Lists active FAX sessions
Will generate a series of FAXSession events with information about each FAXSession. Closes with
a FAXSessionsComplete event which includes a count of the included FAX sessions. This action works in
the same manner as the CLI command 'fax show sessions'A single list item for the FAXSessions AMI commandName of the channel responsible for the FAX sessionThe FAX technology that the FAX session is usingThe numerical identifier for this particular sessionFAX session passthru/relay typeFAX session operation typeCurrent state of the FAX sessionFile or list of files associated with this FAX sessionRaised when all FAXSession events are completed for a FAXSessions commandCount of FAXSession events sent in response to FAXSessions action
Responds with a detailed description of a single FAX session
The session ID of the fax the user is interested in.Provides details about a specific FAX session. The response will include a common subset of
the output from the CLI command 'fax show session <session_number>' for each technology. If the
FAX technolgy used by this session does not include a handler for FAXSession, then this action
will fail.Raised in response to FAXSession manager commandThe numerical identifier for this particular sessionWhether error correcting mode is enabled for the FAX session. This field is not
included when operation is 'V.21 Detect' or if operation is 'gateway' and state is
'Uninitialized'
Bit rate of the FAX. This field is not included when operation is 'V.21 Detect' or
if operation is 'gateway' and state is 'Uninitialized'.Resolution of each page of the FAX. Will be in the format of X_RESxY_RES. This field
is not included if the operation is anything other than Receive/Transmit.Current number of pages transferred during this FAX session. May change as the FAX
progresses. This field is not included when operation is 'V.21 Detect' or if operation is
'gateway' and state is 'Uninitialized'.Filename of the image being sent/recieved for this FAX session. This field is not
included if Operation isn't 'send' or 'receive'.Total number of pages sent during this session. This field is not included if
Operation isn't 'send' or 'receive'. Will always be 0 for 'receive'.Total number of pages received during this session. This field is not included if
Operation is not 'send' or 'receive'. Will be 0 for 'send'.Total number of bad lines sent/recieved during this session. This field is not
included if Operation is not 'send' or 'received'.
Responds with fax statistics
Provides FAX statistics including the number of active sessions, reserved sessions, completed
sessions, failed sessions, and the number of receive/transmit attempts. This command provides all
of the non-technology specific information provided by the CLI command 'fax show stats'Raised in response to FAXStats manager commandNumber of active FAX sessionsNumber of reserved FAX sessionsTotal FAX sessions for which Asterisk is/was the transmitterTotal FAX sessions for which Asterisk is/was the recipientTotal FAX sessions which have been completed successfullyTotal FAX sessions which failed to complete successfully
Expire (remove) an object from a sorcery memory cache.
The name of the cache to expire the object from.The name of the object to expire.Expires (removes) an object from a sorcery memory cache.
Expire (remove) ALL objects from a sorcery memory cache.
The name of the cache to expire all objects from.Expires (removes) ALL objects from a sorcery memory cache.
Mark an object in a sorcery memory cache as stale.
The name of the cache to mark the object as stale in.The name of the object to mark as stale.If true, then immediately reload the object from the backend cache instead of waiting for the next retrievalMarks an object as stale within a sorcery memory cache.
Marks ALL objects in a sorcery memory cache as stale.
The name of the cache to mark all object as stale in.Marks ALL objects in a sorcery memory cache as stale.
Expire all objects from a memory cache and populate it with all objects from the backend.
The name of the cache to populate.Expires all objects from a memory cache and populate it with all objects from the backend.
Play Music On Hold indefinitely.
Plays hold music specified by class. If omitted, the default music
source for the channel will be used. Change the default class with
Set(CHANNEL(musicclass)=...). If duration is given, hold music will be played
specified number of seconds. If duration is ommited, music plays indefinitely.
Returns 0 when done, -1 on hangup.This application does not automatically answer and should be preceeded by
an application such as Answer() or Progress().
Play Music On Hold.
Starts playing music on hold, uses default music class for channel.
Starts playing music specified by class. If omitted, the default music
source for the channel will be used. Always returns 0.
Stop playing Music On Hold.
Stops playing music on hold.Module that identifies endpointsIdentifies endpoints via some criteria.This module provides alternatives to matching inbound requests to
a configured endpoint. At least one of the matching mechanisms
must be provided, or the object configuration will be invalid.If multiple criteria are provided, an inbound request will
be matched if it matches any of the criteria.The matching mechanisms are provided by the following
configuration options:Match by source IP address.Match by SIP header.Name of EndpointIP addresses or networks to match against.
The value is a comma-delimited list of IP addresses. IP addresses may
have a subnet mask appended. The subnet mask may be written in either
CIDR or dot-decimal notation. Separate the IP address and subnet
mask with a slash ('/').
Perform SRV lookups for provided hostnames.When enabled, srv_lookups will
perform SRV lookups for _sip._udp, _sip._tcp, and _sips._tcp of the given
hostnames to determine additional addresses that traffic may originate from.
Header/value pair to match against.A SIP header who value is used to match against. SIP
requests containing the header, along with the specified value, will be
mapped to the specified endpoint. The header must be specified with a
:, as in match_header = SIPHeader: value.
Must be of type 'identify'.
Lists PJSIP inbound registrations.
In response, InboundRegistrationDetail events showing configuration
and status information are raised for all contacts, static or dynamic. Once all events
are completed an InboundRegistrationDetailComplete is issued.
This command just dumps all coonfigured AORs with contacts, even if the contact
is a permanent one. To really get just inbound registrations, use
PJSIPShowRegistrationInboundContactStatuses.
PJSIPShowRegistrationInboundContactStatuses
Lists ContactStatuses for PJSIP inbound registrations.
In response, ContactStatusDetail events showing status information
are raised for each inbound registration (dynamic contact) object. Once all events
are completed a ContactStatusDetailComplete event is issued.
Module that privides simple configuration wizard capabilities.PJSIP Configuration WizardThis module allows creation of common PJSIP configuration scenarios
without having to specify individual endpoint, aor, auth, identify and registration objects.
For example, the following configuration snippet would create the
endpoint, aor, contact, auth and phoneprov objects necessary for a phone to
get phone provisioning information, register, and make and receive calls.
A hint is also created in the default context for extension 1000.[myphone]type = wizardsends_auth = noaccepts_auth = yessends_registrations = noaccepts_registrations = yeshas_phoneprov = yestransport = ipv4has_hint = yeshint_exten = 1000inbound_auth/username = testnameinbound_auth/password = test passwordendpoint/allow = ulawendpoint/context = defaultphoneprov/MAC = 001122aa4455phoneprov/PROFILE = profile1The first 8 items are specific to the wizard. The rest of the items
are passed verbatim to the underlying objects.The following configuration snippet would create the
endpoint, aor, contact, auth, identify and registration objects necessary for a trunk
to another pbx or ITSP that requires registration.[mytrunk]type = wizardsends_auth = yesaccepts_auth = nosends_registrations = yesaccepts_registrations = notransport = ipv4remote_hosts = sip1.myitsp.com:5060,sip2.myitsp.com:5060outbound_auth/username = testnameoutbound_auth/password = test passwordendpoint/allow = ulawendpoint/context = defaultOf course, any of the items in either example could be placed into
templates and shared among wizard objects.For more information, visit:https://wiki.asterisk.org/wiki/display/AST/PJSIP+Configuration+WizardProvides config wizard.For more information, visit:https://wiki.asterisk.org/wiki/display/AST/PJSIP+Configuration+WizardMust be 'wizard'.The name of a transport to use for this object.If not specified,
the default will be used.List of remote hosts.A comma-separated list of remote hosts in the form of
host[:port].
If set, an aor static contact and an identify match will be created for each
entry in the list. If send_registrations is also set, a registration will
also be created for each.Shortcut for specifying proxy on individual objects.Shortcut for specifying endpoint/outbound_proxy,
aor/outbound_proxy, and registration/outbound_proxy individually.
Send outbound authentication to remote hosts.At least outbound_auth/username is required.Accept incoming authentication from remote hosts.At least inbound_auth/username is required.Send outbound registrations to remote hosts.remote_hosts is required and a registration object will
be created for each host in the remote _hosts string. If authentication is required,
sends_auth and an outbound_auth/username must also be supplied.Sets "line" and "endpoint parameters on registrations.Setting this to true will cause the wizard to skip the
creation of an identify object to match incoming requests to the endpoint and
instead add the line and endpoint parameters to the outbound registration object.
Accept inbound registration from remote hosts.An AOR with dynamic contacts will be created. If
the number of contacts nneds to be limited, set aor/max_contacts.Create a phoneprov object for this endpoint.A phoneprov object will be created. phoneprov/MAC
must be specified.A pattern to use for constructing outbound registration server_uris.
The literal ${REMOTE_HOST} will be substituted with the
appropriate remote_host for each registration.A pattern to use for constructing outbound registration client_uris.
The literals ${REMOTE_HOST} and ${USERNAME}
will be substituted with the appropriate remote_host and outbound_auth/username.A pattern to use for constructing outbound contact uris.
The literal ${REMOTE_HOST} will be substituted with the
appropriate remote_host for each contact.Create hint and optionally a default application.Create hint and optionally a default application.The context in which to place hints.Ignored if hint_exten is not specified otherwise specifies the
context into which the dialplan hints will be placed. If not specified,
defaults to the endpoint's context or default if that isn't
found.
Extension to map a PJSIP hint to.Will create the following entry in hint_context:exten => <hint_exten>,hint,PJSIP/<wizard_id>Normal dialplan precedence rules apply so if there's already a hint for
this extension in hint_context, this one will be ignored.
For more information, visit: https://wiki.asterisk.org/wiki/display/AST/PJSIP+Configuration+WizardApplication to call when 'hint_exten' is dialed.Ignored if hint_exten isn't specified otherwise
will create the following priority 1 extension in hint_context:exten => <hint_exten>,1,<hint_application>You can specify any valid extensions.conf application expression.Examples: Dial(${HINT})Gosub(stdexten,${EXTEN},1(${HINT}))Any extensions.conf style variables specified are passed directly to the
dialplan.Normal dialplan precedence rules apply so if there's already a priority 1
application for this specific extension in hint_context,
this one will be ignored. For more information, visit: https://wiki.asterisk.org/wiki/display/AST/PJSIP+Configuration+WizardVariables to be passed directly to the endpoint.Variables to be passed directly to the aor.If an aor/contact is explicitly defined then remote_hosts
will not be used to create contacts automatically.Variables to be passed directly to the inbound auth.Variables to be passed directly to the outbound auth.Variables to be passed directly to the identify.If an identify/match is explicitly defined then remote_hosts
will not be used to create matches automatically.Variables to be passed directly to the outbound registrations.Variables to be passed directly to the phoneprov object.
To activate phoneprov, at least phoneprov/MAC must be set.
Get selected mailboxes with message counts.
Mailbox ID in the form of
/regex/ for all mailboxes matching the regular
expression. Otherwise it is for a specific mailbox.Get a list of mailboxes with their message counts.
Raised in response to a MWIGet command.
Specific mailbox ID.The number of old messages in the mailbox.The number of new messages in the mailbox.MWIGet
Raised in response to a MWIGet command.
The number of mailboxes reported.MWIGet
Delete selected mailboxes.
Delete the specified mailboxes.
Update the mailbox message counts.
Specific mailbox ID.The number of old messages in the mailbox. Defaults
to zero if missing.The number of new messages in the mailbox. Defaults
to zero if missing.Update the mailbox message counts.
List the current known device states.
This will list out all known device states in a
sequence of DeviceStateChange events.
When finished, a DeviceStateListComplete event
will be emitted.DeviceStateChangeDEVICE_STATE
Indicates the end of the list the current known extension states.
Conveys the status of the event list.Conveys the number of statuses reported.R/W Fax DetectReturns 0 or 1Write yes or noR/W t38supportReturns 0 or 1Write yes or noR/0 Returns caller URLR/0 Returns caller h323idR/0 Returns caller dialed digitsR/0 Returns caller emailR/0 Returns callee emailR/0 Returns callee dialed digitsR/0 Returns caller URLR/W Get or set the maximum number of call forwards for this channel.
This number describes the number of times a call may be forwarded by this channel
before the call fails. "Forwards" in this case refers to redirects by phones as well
as calls to local channels.
Note that this has no relation to the SIP Max-Forwards header.