    			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.

    		Return a dial string for dialing all contacts on an AOR.

Name of the endpoint

Name of an AOR to use, if not specified the configured AORs on the endpoint are used

Optional request user to use in the request URI

Returns 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 offered

When 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

    		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.

Re-negotiate format to g722

; 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_OFFER

R/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 identifier

Their Synchronization Source identifier

Our lost packet count

Received packet jitter

Received packet count

Transmitted packet jitter

Transmitted packet count

Remote lost packet count

Round trip time

Retrieve a summary of all RTCP Jitter statistics.

The following data items are returned in a semi-colon delineated list:

Our minimum jitter

Our max jitter

Our average jitter

Our jitter standard deviation

Their minimum jitter

Their max jitter

Their average jitter

Their jitter standard deviation

Retrieve a summary of all RTCP packet loss statistics.

The following data items are returned in a semi-colon delineated list:

Our minimum lost packets

Our max lost packets

Our average lost packets

Our lost packets standard deviation

Their minimum lost packets

Their max lost packets

Their average lost packets

Their lost packets standard deviation

Retrieve a summary of all RTCP round trip time information.

The following data items are returned in a semi-colon delineated list:

Minimum round trip time

Maximum round trip time

Average round trip time

Standard deviation round trip time

Transmitted packet count

Received packet count

Transmitted packet jitter

Received packet jitter

Their max jitter

Their minimum jitter

Their average jitter

Their jitter standard deviation

Our max jitter

Our minimum jitter

Our average jitter

Our jitter standard deviation

Transmitted packet loss

Received packet loss

Their max lost packets

Their minimum lost packets

Their average lost packets

Their lost packets standard deviation

Our max lost packets

Our minimum lost packets

Our average lost packets

Our lost packets standard deviation

Round trip time

Maximum round trip time

Minimum round trip time

Average round trip time

Standard deviation round trip time

Our Synchronization Source identifier

Their Synchronization Source identifier

When 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 request URI of the `INVITE` request associated with the creation of this channel.

The local URI.

The remote URI.

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.

PJSIP specific CHANNEL examples

; 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)})

    			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 headers

SIPRemoveHeader();

// remove all P- headers

SIPRemoveHeader(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 requests

A 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=value

Sends 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.

SIPqualifypeer

    Raised when a SIP session times out.

The source of the session timeout.

    Jingle Channel Driver

Transports

There 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 Strategy

Placing 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 Support

Support for video does not need to be explicitly enabled. Configuring any video codec on your endpoint will automatically enable it.

DTMF

The only supported method for DTMF is RFC2833. This is always enabled on audio streams and negotiated if possible.

Incoming Calls

Incoming 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.

CallerID

The 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 to

    A 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 purposes

    Codecs to allow

    Codecs to disallow

    Connection to accept traffic on and on which to send traffic out

    The 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 offer

    Maximum number of pyaloads to offer

    Published when a malicious call ID request arrives.

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 useragent.

R/O Get the name of the peer.

R/O `1` if T38 is offered or enabled in this channel, otherwise `0`

R/O Get QOS information about the RTP stream

This option takes two additional arguments:

Argument 1:

`audio` Get data about the audio stream

`video` Get data about the video stream

`text` Get data about the text stream

Argument 2:

`local_ssrc` Local SSRC (stream ID)

`local_lostpackets` Local lost packets

`local_jitter` Local calculated jitter

`local_maxjitter` Local calculated jitter (maximum)

`local_minjitter` Local calculated jitter (minimum)

`local_normdevjitter`Local calculated jitter (normal deviation)

`local_stdevjitter` Local calculated jitter (standard deviation)

`local_count` Number of received packets

`remote_ssrc` Remote SSRC (stream ID)

`remote_lostpackets`Remote lost packets

`remote_jitter` Remote reported jitter

`remote_maxjitter` Remote calculated jitter (maximum)

`remote_minjitter` Remote calculated jitter (minimum)

`remote_normdevjitter`Remote calculated jitter (normal deviation)

`remote_stdevjitter`Remote calculated jitter (standard deviation)

`remote_count` Number of transmitted packets

`rtt` Round trip time

`maxrtt` 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 destination

`video` Get video destination

`text` 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 destination

`video` Get video destination

`text` 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 `unknown`

`

This 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:

None

Reverse Charging Requested

R/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:

`full`

`immediate`

`half`

W/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` Disabled

`fax` 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 below

Equivalent 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.

    			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 channel

If 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.

    			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.

    			Do a DUNDi lookup of a phone number.

If not specified the default will be `e164`.

Bypass the internal DUNDi cache

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`.

Bypass the internal DUNDi cache

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.

The number of the result that you want to retrieve, this starts at `1`

The total number of results that are available.

This function will retrieve results from a previous use\n" of the `DUNDIQUERY` function.

    			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 priority

Arguments 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 removed

Name 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.

    			Queue a call for a call queue.

`` ``

Mark all calls as "answered elsewhere" when cancelled.

` `

Continue in the dialplan if the callee hangs up.

` `

data-quality (modem) call (minimum delay).

` `

When the caller hangs up, transfer the called member to the specified destination and start execution at that location.

Any channel variables you want the called channel to inherit from the caller channel must be prefixed with one or two underbars ('_').

` `

When the caller hangs up, transfer the called member to the next priority of the current extension and start execution at that location.

Any channel variables you want the called channel to inherit from the caller channel must be prefixed with one or two underbars ('_').

Using this option from a Macro() or GoSub() might not make sense as there would be no return points.

` `

Allow callee to hang up by pressing `*`.

` `

Allow caller to hang up by pressing `*`.

` `

No retries on the timeout; will exit this application and go to the next step.

` `

Ignore call forward requests from queue members and do nothing when they are requested.

` `

Asterisk will ignore any connected line update requests or any redirecting party update requests it may receive on this dial attempt.

` `

Ring instead of playing MOH. Periodic Announcements are still made, if applicable.

` `

Ring instead of playing MOH when a member channel is actually ringing.

` `

Allow the called user to transfer the calling user.

` `

Allow the calling user to transfer the call.

` `

Allow the called user to write the conversation to disk via Monitor.

` `

Allow the calling user to write the conversation to disk via Monitor.

` `

Allow the called party to enable parking of the call by sending the DTMF sequence defined for call parking in `features.conf`.

` `

Allow the calling party to enable parking of the call by sending the DTMF sequence defined for call parking in `features.conf`.

` `

Allow the called user to write the conversation to disk via MixMonitor.

` `

Allow the calling user to write the conversation to disk via MixMonitor.

`` `

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.conf` timeout 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.

Queue QueueLog AddQueueMember RemoveQueueMember PauseQueueMember UnpauseQueueMember QUEUE_VARIABLES QUEUE_MEMBER QUEUE_MEMBER_COUNT QUEUE_EXISTS QUEUE_WAITING_COUNT QUEUE_MEMBER_LIST QUEUE_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.

Queue QueueLog AddQueueMember RemoveQueueMember PauseQueueMember UnpauseQueueMember QUEUE_VARIABLES QUEUE_MEMBER QUEUE_MEMBER_COUNT QUEUE_EXISTS QUEUE_WAITING_COUNT QUEUE_MEMBER_LIST QUEUE_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)

Queue QueueLog AddQueueMember RemoveQueueMember PauseQueueMember UnpauseQueueMember QUEUE_VARIABLES QUEUE_MEMBER QUEUE_MEMBER_COUNT QUEUE_EXISTS QUEUE_WAITING_COUNT QUEUE_MEMBER_LIST QUEUE_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)

Queue QueueLog AddQueueMember RemoveQueueMember PauseQueueMember UnpauseQueueMember QUEUE_VARIABLES QUEUE_MEMBER QUEUE_MEMBER_COUNT QUEUE_EXISTS QUEUE_WAITING_COUNT QUEUE_MEMBER_LIST QUEUE_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)

Queue QueueLog AddQueueMember RemoveQueueMember PauseQueueMember UnpauseQueueMember QUEUE_VARIABLES QUEUE_MEMBER QUEUE_MEMBER_COUNT QUEUE_EXISTS QUEUE_WAITING_COUNT QUEUE_MEMBER_LIST QUEUE_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)

Queue QueueLog AddQueueMember RemoveQueueMember PauseQueueMember UnpauseQueueMember QUEUE_VARIABLES QUEUE_MEMBER QUEUE_MEMBER_COUNT QUEUE_EXISTS QUEUE_WAITING_COUNT QUEUE_MEMBER_LIST QUEUE_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.

Queue QueueLog AddQueueMember RemoveQueueMember PauseQueueMember UnpauseQueueMember QUEUE_VARIABLES QUEUE_MEMBER QUEUE_MEMBER_COUNT QUEUE_EXISTS QUEUE_WAITING_COUNT QUEUE_MEMBER_LIST QUEUE_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.

Queue QueueLog AddQueueMember RemoveQueueMember PauseQueueMember UnpauseQueueMember QUEUE_VARIABLES QUEUE_MEMBER QUEUE_MEMBER_COUNT QUEUE_EXISTS QUEUE_WAITING_COUNT QUEUE_MEMBER_LIST QUEUE_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()` function

Queue QueueLog AddQueueMember RemoveQueueMember PauseQueueMember UnpauseQueueMember QUEUE_VARIABLES QUEUE_MEMBER QUEUE_MEMBER_COUNT QUEUE_EXISTS QUEUE_WAITING_COUNT QUEUE_MEMBER_LIST QUEUE_MEMBER_PENALTY` `

    			Check if a named queue exists on this server

``

Returns 1 if the specified queue exists, 0 if it does not

Queue QueueLog AddQueueMember RemoveQueueMember PauseQueueMember UnpauseQueueMember QUEUE_VARIABLES QUEUE_MEMBER QUEUE_MEMBER_COUNT QUEUE_EXISTS QUEUE_WAITING_COUNT QUEUE_MEMBER_LIST QUEUE_MEMBER_PENALTY` `

    			Count number of calls currently waiting in a queue.

``

Returns the number of callers currently waiting in the specified queuename.

Queue QueueLog AddQueueMember RemoveQueueMember PauseQueueMember UnpauseQueueMember QUEUE_VARIABLES QUEUE_MEMBER QUEUE_MEMBER_COUNT QUEUE_EXISTS QUEUE_WAITING_COUNT QUEUE_MEMBER_LIST QUEUE_MEMBER_PENALTY` `

    			Returns a list of interfaces on a queue.

``

Returns a comma-separated list of members associated with the specified queuename.

Queue QueueLog AddQueueMember RemoveQueueMember PauseQueueMember UnpauseQueueMember QUEUE_VARIABLES QUEUE_MEMBER QUEUE_MEMBER_COUNT QUEUE_EXISTS QUEUE_WAITING_COUNT QUEUE_MEMBER_LIST QUEUE_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()` function

Queue QueueLog AddQueueMember RemoveQueueMember PauseQueueMember UnpauseQueueMember QUEUE_VARIABLES QUEUE_MEMBER QUEUE_MEMBER_COUNT QUEUE_EXISTS QUEUE_WAITING_COUNT QUEUE_MEMBER_LIST QUEUE_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.conf

Whether 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_UNKNOWN

AST_DEVICE_NOT_INUSE

AST_DEVICE_INUSE

AST_DEVICE_BUSY

AST_DEVICE_INVALID

AST_DEVICE_UNAVAILABLE

AST_DEVICE_RINGING

AST_DEVICE_RINGINUSE

AST_DEVICE_ONHOLD

If set when paused, the reason the queue member was paused.

    Raised when a member is added to the queue.

QueueMemberRemoved
AddQueueMember

    Raised when a member is removed from the queue.

QueueMemberAdded
RemoveQueueMember

    Raised when a member is paused/unpaused in the queue.

The reason a member was paused.

PauseQueueMember
UnPauseQueueMember

    Raised when a member's penalty is changed.

QUEUE_MEMBER

    Raised when a member's ringinuse setting is changed.

QUEUE_MEMBER

    Raised when a caller joins a Queue.

This channel's current position in the queue.

The total number of channels in the queue.

QueueCallerLeave
Queue

    Raised when a caller leaves a Queue.

QueueCallerJoin

    Raised 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.

AgentRingNoAnswer
AgentComplete
AgentConnect

    Raised 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.

AgentCalled

    Raised 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.

AgentCalled
AgentConnect

    Raised when a queue member hangs up on a caller in the queue.

AgentCalled
AgentConnect

    Raised when a queue member answers and is bridged to a caller in the queue.

AgentCalled
AgentComplete
AgentDump

    			Block telemarketers with SIT.

`

Comma delimited list of options.

`

Causes the line to be answered before playing the tone.

` `

Causes Zapateller to only play the tone if there is no callerid information available.

``

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:

    			An example number guessing game

`` ``

The computer should cheat

` `

How many games to play before hanging up

``

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_skel

    The number of games a single execution of SkelGuessNumber will play

    Should the computer cheat?

If enabled, the computer will ignore winning guesses.

    Prompts for SkelGuessNumber to play

    A prompt directing the user to enter a number less than the max number

    The sound file to play when a wrong guess is made

    The sound file to play when a correct guess is made

    The sound file to play when a guess is too low

    The sound file to play when a guess is too high

    The sound file to play when a player loses

    Defined levels for the SkelGuessNumber game

    The maximum in the range of numbers to guess (1 is the implied minimum)

    The maximum number of guesses before a game is considered lost

    			Attempt to detect answering machines.

`

Is maximum initial silence duration before greeting.

If this is exceeded, the result is detection as a MACHINE

` `

is the maximum length of a greeting.

If this is exceeded, the result is detection as a MACHINE

` `

Is the silence after detecting a greeting.

If this is exceeded, the result is detection as a HUMAN

` `

Is the maximum time allowed for the algorithm

to decide on whether the audio represents a HUMAN, or a MACHINE

` `

Is the minimum duration of Voice considered to be a word

` `

Is the minimum duration of silence after a word to consider the audio that follows to be a new word

` `

Is the maximum number of words in a greeting

If this is REACHED, then the result is detection as a MACHINE

` `

What 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 MACHINE

`

This 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 detection

Indicates 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.

WaitForSilence WaitForNoise

    			Jump to label, saving return address.

`` `` ``

Jumps to the label specified, saving the return address.

GosubIf Macro Goto Return StackPop

    			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.

Gosub Return MacroIf IF GotoIf Goto

    			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.

Gosub StackPop

    			Remove one address from gosub stack.

Removes last label on the stack, discarding it.

Return Gosub `

    			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()).

Gosub GosubIf Return` `

    			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.

Gosub GosubIf Return` `

    			View info about the location which called Gosub

`` `` ``

Read the calling `c`ontext, `e`xtension, `p`riority, or `l`abel, 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().

GoSub

    Raised 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.

` GoSub gosub LOCAL LOCAL_PEEK

    			Direct Inward System Access.

`

If you need to present a DISA dialtone without entering a password, simply set passcode to `no-password`

You may specified a filename instead of a passcode, this filename must contain individual passcodes

` `

Specifies 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 application will not answer initially.

` `

The extension entered will be considered complete when a `#` is entered.

``

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 `;`.

Authenticate VMAuthenticate

    			Plays morse code.

`

String to playback as morse code to channel

`

Plays 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 dit

The pitch of the tone in (Hz), default is 800

SayAlpha SayPhonetic

    			Execute a system command.

`

Command to 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().

`

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 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().

`

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.

    Invoke 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.

    			Find-Me/Follow-Me application.

`` ``

Record the caller's name so it can be announced to the callee on each step.

` `

Before initiating the outgoing call(s), Gosub to the specified location using the current channel.

` `

Before initiating an outgoing call, Gosub to the specified location using the newly created channel. The Gosub will be executed for each destination channel.

` `

Disable the 'Please hold while we try to connect your call' announcement.

` `

Asterisk will ignore any connected line update requests it may receive on this dial attempt.

` `

Disable local call optimization so that applications with audio hooks between the local bridge don't get dropped when the calls get joined directly.

` `

Don't answer the incoming call until we're ready to connect the caller or give up.

This option is ignored if the call is already answered.

If the call is not already answered, the 'a' and 's' options are ignored while the 'd' option is implicitly enabled.

` `

Playback the unreachable status message if we've run out of steps or the callee has elected not to be reachable.

` `

Playback the incoming status message prior to starting the follow-me step(s)

``

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.

    			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`.

` ``

Supplied channel names are prefixes. For example, `SIP/bob` will match `SIP/bob-00000000` and `SIP/bobby-00000000`.

``

Pickup a specified channel if ringing.

    			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).

    			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.

    			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.

` ``

In addition to the name, also read the extension number to the caller before presenting dialing options.

` `

Allow the caller to enter the first name of a user in the directory instead of using the last name. If specified, the optional number argument will be used for the number of characters the user should enter.

` `

Allow the caller to enter the last name of a user in the directory. This is the default. If specified, the optional number argument will be used for the number of characters the user should enter.

` `

Allow the caller to enter either the first or the last name of a user in the directory. If specified, the optional number argument will be used for the number of characters the user should enter.

` `

Allow the caller to additionally enter an alias for a user in the directory. This option must be specified in addition to the `f`, `l`, or `b` option.

` `

Instead of reading each name sequentially and asking for confirmation, create a menu of up to 8 names.

` `

Read digits even if the channel is not answered.

` `

Pause for n milliseconds after the digits are typed. This is helpful for people with cellphones, who are not holding the receiver to their ear while entering DTMF.

`

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 operator
User requested assistant
User allowed DTMF wait duration to pass without sending DTMF
The channel hung up before the application finished
User selected a user to call from the directory
User exited with '#' during selection
The application failed

    			Hangs up the requested channel.

`` ``

Hang up all channels on a specified device instead of a single resource

``

Hangs up the requested channel. If there are no channels to hangup, the application will report it.

    			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.

    			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.

` ``

Start at time ms from the beginning of the file.

``

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 string

Contains 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 `restart` Control options will stop a playback operation if that operation was not initiated from the ControlPlayback application or the control stream file AGI command.

Playback
ControlPlayback
stream file
control stream file

    			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.

    			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.

    			Read an extension into a variable.

`` `

File to play before reading digits or tone with option `i`

` `

Context in which to match extensions.

` ``

Return immediately if the channel is not answered.

` `

Play filename as an indication tone from your `indications.conf` or a directly specified list of frequencies and durations.

` `

Read digits even if the channel is not answered.

`` `

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.

    			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.

SendText SendURL

    			Send a URL.

`` ``

Execution will wait for an acknowledgement that the URL has been loaded before continuing.

``

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.

SendImage SendText

    			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

    			Leave a Voicemail message.

`` ``

Play the `busy` greeting to the calling party.

` `

Accept digits for a new extension in context c, if played during the greeting. Context defaults to the current context.

` `

Use the specified amount of gain when recording the voicemail message. The units are whole-number decibels (dB). Only works on supported technologies, which is DAHDI only.

` `

Skip the playback of instructions for leaving a message to the calling party.

` `

Play the `unavailable` greeting.

` `

Mark message as `URGENT`.

` `

Mark message as `PRIORITY`.

``

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.

`` ``

Consider the mailbox parameter as a prefix to the mailbox that is entered by the caller.

` `

Use the specified amount of gain when recording a voicemail message. The units are whole-number decibels (dB).

` `

Skip checking the passcode for the mailbox.

` `

Skip folder prompt and go directly to folder specified. Defaults to `INBOX` (or `0`).

INBOX

Old

Work

Family

Friends

Cust1

Cust2

Cust3

Cust4

Cust5

``

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.

`` ``

Skip playing the initial prompts.

``

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.

Count of messages in specified folder. If folder is not specified, defaults to `INBOX`.

E-mail address associated with the mailbox.

Returns a boolean of whether the corresponding mailbox exists.

Full name associated with the mailbox.

Mailbox language if overridden, otherwise the language of the channel.

Mailbox locale if overridden, otherwise global locale.

Pager e-mail address associated with the mailbox.

Mailbox access password.

Mailbox timezone if overridden, otherwise global timezone

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.

    			Jack Audio Connection Kit

``

Connect to the specified jack server name

` `

Connect the output port that gets created to the specified jack input port

` `

Connect the input port that gets created to the specified jack output port

` `

By default, Asterisk will use the channel name for the jack client name.

Use this option to specify a custom client name.

``

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.

    			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.`

` ``

Append to the file instead of overwriting it.

` `

Only save audio to the file while the channel is bridged.

If you utilize this option inside a Local channel, you must make sure the Local channel is not optimized away. To do this, be sure to call your Local channel with the `/n` option. For example: Dial(Local/start@mycontext/n)

` `

Play a periodic beep while this call is being recorded.

Interval, in seconds. Default is 15.

` `

Adjust the heard volume by a factor of x (range `-4` to `4`)

` `

Adjust the spoken volume by a factor of x (range `-4` to `4`)

` `

Adjust both, heard and spoken volumes by a factor of x (range `-4` to `4`)

` `

Use the specified file to record the receive audio feed. Like with the basic filename argument, if an absolute path isn't given, it will create the file in the configured monitoring directory.

` `

Use the specified file to record the transmit audio feed. Like with the basic filename argument, if an absolute path isn't given, it will create the file in the configured monitoring directory.

` `

Stores the MixMonitor's ID on this channel variable.

` `

Play a beep on the channel that starts the recording.

` `

Play a beep on the channel that stops the recording.

` `

Create a copy of the recording as a voicemail in the indicated mailbox(es) separated by commas eg. m(1111@default,2222@default,...). Folders can be optionally specified using the syntax: mailbox@context/folder

`` `

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().

Monitor StopMixMonitor PauseMonitor UnpauseMonitor AUDIOHOOK_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.

    			Interfaces with an external IVR application.

`` ``

Tells ExternalIVR() not to answer the channel.

` `

Tells ExternalIVR() not to send a hangup and exit when the channel receives a hangup, instead it sends an `I` informative message meaning that the external application MUST hang up the call with an `H` command.

` `

Tells ExternalIVR() to run on a channel that has been hung up and will not look for hangups. The external application must exit with an `E` command.

``

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`.

    			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.

` ``

Don't answer the channel if it has not already been answered.

``

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 deactivate

`

This 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 not

Returns `1` if spoker spoke, or `0` if not

Returns number of results that were recognized.

Gets information about speech recognition results.

    			Start a while loop.

``

Start a While Loop. Execution will return to this point when `EndWhile()` is called until expr is no longer true.

EndWhile ExitWhile ContinueWhile

    			End a while loop.

Return to the previous called `While()`.

While ExitWhile ContinueWhile

    			End a While loop.

Exits a `While()` loop, whether or not the conditional has been satisfied.

While EndWhile ContinueWhile

    			Restart a While loop.

Returns to the top of the while loop and re-evaluates the conditional.

While EndWhile ExitWhile

    			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.

    			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.

    			Send a Fax

`

Filename of TIFF file to fax

` `

Makes 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 end

To generate a header line on each page

Cause of failure

The CSID of the remote side

Number of pages sent

Transmission rate

Resolution of sent fax

    			Receive a Fax

`

Filename of TIFF file save incoming fax

` `

Makes 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 end

To generate a header line on each page

Cause of failure

The CSID of the remote side

Number of pages sent

Transmission rate

Resolution of sent fax

    			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.

UserEvent UserEvent

    			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

    			Execute Interface Test Server.

Perform test server function and write call report. Results stored in `/var/log/asterisk/testreports/<testid>-server.txt`

TestClient

    			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.txt`

TestServer

    			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.

` ``

Append to existing recording rather than replacing.

` `

Do not answer, but record anyway if line not yet answered.

` `

Exit when 0 is pressed, setting the variable RECORD_STATUS to `OPERATOR` instead of `DTMF`

` `

quiet (do not play a beep tone).

` `

skip recording if the line is not yet answered.

` `

use alternate '*' terminator key (DTMF) instead of default '#'

` `

Don't truncate recorded silence.

` `

Ignore all terminator keys (DTMF) and keep recording until hangup.

` `

Keep recorded file upon hangup.

` `

Terminate recording if *any* DTMF digit is received.

``

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.

This is the final status of the command

A 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.

    			Get ADSI CPE ID.

Obtains and displays ADSI CPE ID and other information in order to properly setup `dahdi.conf` for on-hook operations.

    Conference Bridge Application

    Unused, 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_profile

Configure the context as a bridge_profile

Configure the context as a menu

    Sets if the user is an admin or not

    Sets if this is a marked user or not

    Sets if all users should start out muted

    Play MOH when user is alone or waiting on a marked user

    Silence enter/leave prompts and user intros for this user

    Sets if the number of users should be announced to the user

    Announce user count to all the other users when this user joins

Sets 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 conference

    Sets if the user must wait for a marked user to enter before joining a conference

    Kick the user from the conference when the last marked user leaves

    Set whether or not notifications of when a user begins and ends talking should be sent out as events over AMI

    Sets whether or not DTMF should pass through the conference

    Prompt user for their name when joining a conference and play it to the conference when they enter

    Prompt 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 conference

    The MOH class to use for this user

    Sound file to play to the user when they join a conference

    Apply a denoise filter to the audio before mixing

Sets 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^31

    Place 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 profile

    Kick 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 profile

The type parameter determines how a context in the configuration file is interpreted.

Configure the context as a user_profile

Configure the context as a bridge_profile

Configure the context as a menu

    Place a jitter buffer on the conference's audio stream

    Set 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 profile

    A conference user menu

Conference 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 menu

The type parameter determines how a context in the configuration file is interpreted.

Configure the context as a user_profile

Configure the context as a bridge_profile

Configure the context as a menu

    When using the CONFBRIDGE dialplan function, use a menu profile as a template for creating a new temporary profile

    DTMF sequences to assign various confbridge actions to

The 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_volume`

`playback` 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 conference

    Raised when a conference starts.

The name of the Confbridge conference.

ConfbridgeEnd
ConfBridge

    Raised when a conference ends.

The name of the Confbridge conference.

ConfbridgeStart
ConfBridge

    Raised when a channel joins a Confbridge conference.

The name of the Confbridge conference.

Identifies this user as an admin user.

ConfbridgeLeave
ConfBridge

    Raised when a channel leaves a Confbridge conference.

The name of the Confbridge conference.

Identifies this user as an admin user.

ConfbridgeJoin
ConfBridge

    Raised when a conference starts recording.

The name of the Confbridge conference.

ConfbridgeStopRecord
ConfBridge

    Raised when a conference that was recording stops recording.

The name of the Confbridge conference.

ConfbridgeRecord
ConfBridge

    Raised when a Confbridge participant mutes.

The name of the Confbridge conference.

Identifies this user as an admin user.

ConfbridgeUnmute
ConfBridge

    Raised when a confbridge participant unmutes.

The name of the Confbridge conference.

Identifies this user as an admin user.

ConfbridgeMute
ConfBridge

    Raised when a confbridge participant begins or ends talking.

The name of the Confbridge conference.

Identifies this user as an admin user.

ConfBridge

    			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.

` ``

The specified MOH class will be used/suggested for music on hold operations. This option will only be useful for entertainment modes that use it (m and h).

` `

Which entertainment mechanism should be used while on hold in the holding bridge. Only the first letter is read.

Play music on hold (default)

Ring without pause

Generate silent audio

Put the channel on hold

No entertainment

` `

Automatically exit the bridge and return to the PBX after duration seconds.

``

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.

    			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 `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, twice

WaitForSilence(1000) will wait for 1 second of silence, once

WaitForSilence(300,3,10) will wait for 300ms silence, 3 times, and returns after 10 sec, even if silence is not detected

Sets 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 `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

    		Receive Mini-Voicemail and forward via e-mail.

`

Voicemail username

Voicemail domain

` ``

Jump to the `o` extension in the current dialplan context.

` `

Jump to the `a` extension in the current dialplan context.

` `

Amount of gain to use

Use the specified amount of gain when recording the voicemail message. The units are whole-number decibels (dB).

``

This application is part of the Mini-Voicemail system, configured in `minivm.conf`

MiniVM 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_DURATION

If 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 username

Voicemail domain

` ``

Play the `busy` greeting to the calling party.

` `

Skip the playback of instructions for leaving a message to the calling party.

` `

Play the `unavailable` greeting.

``

This 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 username

Voicemail domain

` ``

E-mail template to use for voicemail notification

``

This 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 delete

`

This 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 username

Voicemail domain

` ``

Record the `unavailable` greeting.

` `

Record the `busy` greeting.

` `

Record the temporary greeting.

` `

Account name.

``

This 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 username

Voicemail domain

` `

Number 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.

MinivmRecord
MinivmGreet
MinivmNotify
MinivmDelete
MinivmAccMess
MinivmMWI
MINIVMACCOUNT

    		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).

MinivmRecord
MinivmGreet
MinivmNotify
MinivmDelete
MinivmAccMess
MinivmMWI
MINIVMCOUNTER

    Raised when a notification is sent out by a MiniVoiceMail application

What action was taken. Currently, this will always be `SentNotification`

The mailbox that the notification was about, specified as `mailbox`@`context`

A message counter derived from the `MVM_COUNTER` channel variable.

    			Dump Info About The Calling Channel.

`

Minimum verbose level

`

Displays 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.

NoOp Verbose

    			Communicates with SMS service centres and SMS capable analogue phones.

`

The name of the queue used in `/var/spool/asterisk/sms`

` ``

Answer, i.e. send initial FSK packet.

` `

Act as service centre talking to a phone.

` `

Use protocol 2 (default used is protocol 1).

` `

Set the initial delay to N ms (default is `300`). addr and body are a deprecated format to send messages out.

` `

Set the Status Report Request (SRR) bit.

` `

The body should be coded as octets not 7-bit symbols.

`` `` ``

SMS 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.

    			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.

    			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 parallel

If 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 file to play to the called party

Play an announcement to the called party, where x is the prompt to be played

` `

Immediately answer the calling channel when the called channel answers in all cases. Normally, the calling channel is answered when the called channel answers, but when options such as `A()` and `M()` are used, the calling channel is not answered until all actions on the called channel (such as playing an announcement) are completed. This option can be used to answer the calling channel before doing anything on the called channel. You will rarely need to use this option, the default behavior is adequate in most cases.

` `

Before initiating an outgoing call, `Gosub` to the specified location using the newly created channel. The `Gosub` will be executed for each destination channel.

` `

Before initiating the outgoing call(s), `Gosub` to the specified location using the current channel.

` `

Reset the call detail record (CDR) for this call.

` `

If the Dial() application cancels this call, always set HANGUPCAUSE to 'answered elsewhere'

` `

Allow the calling user to dial a 1 digit extension while waiting for a call to be answered. Exit to that extension if it exists in the current context, or the context defined in the EXITCONTEXT variable, if it exists.

Many SIP and ISDN phones cannot send DTMF digits until the call is connected. If you wish to use this option with these phones, you can use the `Answer` application before dialing.

` `

Send the specified DTMF strings after the called party has answered, but before the call gets bridged. The called DTMF string is sent to the called party, and the calling DTMF string is sent to the calling party. Both arguments can be used alone. If progress is specified, its DTMF is sent to the called party immediately after receiving a `PROGRESS` message.

See `SendDTMF` for valid digits.

` `

Execute the `h` extension for peer after the call ends

` `

If x is not provided, force the CallerID sent on a call-forward or deflection to the dialplan extension of this `Dial()` using a dialplan `hint`. For example, some PSTNs do not allow CallerID to be set to anything other than the numbers assigned to you. If x is provided, force the CallerID sent to x.

` `

When the caller hangs up, transfer the called party to the specified destination and start execution at that location.

Any channel variables you want the called channel to inherit from the caller channel must be prefixed with one or two underbars ('_').

` `

When the caller hangs up, transfer the called party to the next priority of the current extension and start execution at that location.

Any channel variables you want the called channel to inherit from the caller channel must be prefixed with one or two underbars ('_').

Using this option from a Macro() or GoSub() might not make sense as there would be no return points.

` `

Proceed with dialplan execution at the next priority in the current extension if the destination channel hangs up.

` `

If the call is answered, transfer the calling party to the specified priority and the called party to the specified priority plus one.

You cannot use any additional action post answer options in conjunction with this option.

` `

Allow the called party to hang up by sending the DTMF sequence defined for disconnect in `features.conf`.

` `

Allow the calling party to hang up by sending the DTMF sequence defined for disconnect in `features.conf`.

Many SIP and ISDN phones cannot send DTMF digits until the call is connected. If you wish to allow DTMF disconnect before the dialed party answers with these phones, you can use the `Answer` application before dialing.

` `

Asterisk will ignore any forwarding requests it may receive on this dial attempt.

` `

Asterisk will ignore any connected line update requests or any redirecting party update requests it may receive on this dial attempt.

` `

Allow the called party to enable parking of the call by sending the DTMF sequence defined for call parking in `features.conf`.

` `

Allow the calling party to enable parking of the call by sending the DTMF sequence defined for call parking in `features.conf`.

` `

Maximum call time, in milliseconds

Warning time, in milliseconds

Repeat time, in milliseconds

Limit the call to x milliseconds. Play a warning when y milliseconds are left. Repeat the warning every z milliseconds until time expires.

This option is affected by the following variables:

If set, this variable causes Asterisk to play the prompts to the caller.

If set, this variable causes Asterisk to play the prompts to the callee.

If specified, filename specifies the sound prompt to play when the timeout is reached. If not set, the time remaining will be announced.

If specified, filename specifies the sound prompt to play when the call begins. If not set, the time remaining will be announced.

If specified, filename specifies the sound prompt to play as a warning when time x is reached. If not set, the time remaining will be announced.

` `

Provide hold music to the calling party until a requested channel answers. A specific music on hold class (as defined in `musiconhold.conf`) can be specified.

` `

Name of the macro that should be executed.

Macro arguments

Execute the specified macro for the called channel before connecting to the calling channel. Arguments can be specified to the Macro using `^` as a delimiter. The macro can set the variable MACRO_RESULT to specify the following actions after the macro is finished executing:

If set, this action will be taken after the macro finished executing.

Hangup both legs of the call
Behave as if line congestion was encountered
Behave as if a busy signal was encountered
Hangup the called party and allow the calling party to continue dialplan execution at the next priority
Transfer the call to the specified destination.

You cannot use any additional action post answer options in conjunction with this option. Also, pbx services are run on the peer (called) channel, so you will not be able to set timeouts via the `TIMEOUT()` function in this macro.

Be aware of the limitations that macros have, specifically with regards to use of the `WaitExten` application. For more information, see the documentation for `Macro()`.

` `

With delete either not specified or set to `0`, the recorded introduction will not be deleted if the caller hangs up while the remote party has not yet answered.

With delete set to `1`, the introduction will always be deleted.

This option is a modifier for the call screening/privacy mode. (See the `p` and `P` options.) It specifies that no introductions are to be saved in the priv-callerintros directory.

` `

This option is a modifier for the call screening/privacy mode. It specifies that if CallerID is present, do not screen the call.

` `

If x is not provided, specify that the CallerID that was present on the calling channel be stored as the CallerID on the called channel. This was the behavior of Asterisk 1.0 and earlier. If x is provided, specify the CallerID stored on the called channel. Note that `o(${CALLERID(all)})` is similar to option `o` without the parameter.

` `

With mode either not specified or set to `1`, the originator hanging up will cause the phone to ring back immediately.

With mode set to `2`, when the operator flashes the trunk, it will ring their phone back.

Enables operator services mode. This option only works when bridging a DAHDI channel to another DAHDI channel only. if specified on non-DAHDI interfaces, it will be ignored. When the destination answers (presumably an operator services station), the originator no longer has control of their line. They may hang up, but the switch will not release their line until the destination party (the operator) hangs up.

` `

This option enables screening mode. This is basically Privacy mode without memory.

` `

Enable privacy mode. Use x as the family/key in the AstDB database if it is provided. The current extension is used if a database family/key is not specified.

` `

Specify the Q.850/Q.931 cause to send on unanswered channels when another channel answers the call. As with `Hangup()`, cause can be a numeric cause code or a name such as `NO_ANSWER`, `USER_BUSY`, `CALL_REJECTED` or `ANSWERED_ELSEWHERE` (the default if Q isn't specified). You can also specify `0` or `NONE` to send no cause. See the `causes.h` file for the full list of valid causes and names.

chan_sip does not support setting the cause on a CANCEL to anything other than ANSWERED_ELSEWHERE.

` `

Default: Indicate ringing to the calling party, even if the called party isn't actually ringing. Pass no audio to the calling party until the called channel has answered.

Indicate progress to calling party. Send audio 'tone' from the `indications.conf` tonezone currently in use.

` `

Default: Indicate ringing to the calling party, even if the called party isn't actually ringing. Allow interruption of the ringback if early media is received on the channel.

` `

Hang up the call x seconds after the called party has answered the call.

` `

Force the outgoing CallerID tag parameter to be set to the string x.

Works with the `f` option.

` `

Allow the called party to transfer the calling party by sending the DTMF sequence defined in `features.conf`. This setting does not perform policy enforcement on transfers initiated by other methods.

` `

Allow the calling party to transfer the called party by sending the DTMF sequence defined in `features.conf`. This setting does not perform policy enforcement on transfers initiated by other methods.

` `

Name of the subroutine to execute via `Gosub`

Arguments for the `Gosub` routine

Execute via `Gosub` the routine x for the called channel before connecting to the calling channel. Arguments can be specified to the `Gosub` using `^` as a delimiter. The `Gosub` routine can set the variable GOSUB_RESULT to specify the following actions after the `Gosub` returns.

Hangup both legs of the call.
Behave as if line congestion was encountered.
Behave as if a busy signal was encountered.
Hangup the called party and allow the calling party to continue dialplan execution at the next priority.
Transfer the call to the specified destination.

You cannot use any additional action post answer options in conjunction with this option. Also, pbx services are run on the peer (called) channel, so you will not be able to set timeouts via the `TIMEOUT()` function in this routine.

` `

Force the outgoing callerid presentation indicator parameter to be set to one of the values passed in x: `allowed_not_screened` `allowed_passed_screen` `allowed_failed_screen` `allowed` `prohib_not_screened` `prohib_passed_screen` `prohib_failed_screen` `prohib` `unavailable`

Works with the `f` option.

` `

Allow the called party to enable recording of the call by sending the DTMF sequence defined for one-touch recording in `features.conf`.

` `

Allow the calling party to enable recording of the call by sending the DTMF sequence defined for one-touch recording in `features.conf`.

` `

Allow the called party to enable recording of the call by sending the DTMF sequence defined for one-touch automixmonitor in `features.conf`.

` `

Allow the calling party to enable recording of the call by sending the DTMF sequence defined for one-touch automixmonitor in `features.conf`.

` `

On a call forward, cancel any dial timeout which has been set for this call.

`` `

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.

RetryDial SendDTMF Gosub Macro

    			Place a call, retrying on failure allowing an optional exit extension.

`

Filename of sound that will be played when no channel can be reached

` `

Number of seconds to wait after a dial attempt failed before a new attempt is made

` `

Number of retries

When this is reached flow will continue at the next priority in the dialplan

` `

Same format as arguments provided to the Dial application

`

This 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

    			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.

SendImage SendURL

    			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 parallel

If you need more than one, enter them as Technology2/Resource2& Technology3/Resource3&.....

` ``

Before initiating an outgoing call, Gosub to the specified location using the newly created channel. The Gosub will be executed for each destination channel.

` `

Before initiating the outgoing call(s), Gosub to the specified location using the current channel.

` `

Full duplex audio

` `

Ignore attempts to forward the call

` `

Quiet, do not play beep to caller

` `

Record the page into a file (`CONFBRIDGE(bridge,record_conference)`)

` `

Only dial a channel if its device state says that it is `NOT_INUSE`

` `

The announcement to playback to all devices

Play an announcement to all paged participants

` `

Do not play announcement to caller (alters `A(x)` behavior)

`` `

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

    			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.

    			Authenticate a user

`

Password the user should know

` ``

Set the channels' account code to the password that is entered

` `

Interpret the given path as database key, not a literal file.

The value is not used at all in the authentication when using this option. If the family/key is set to `/pin/100` (value does not matter) then the password field needs to be set to `/pin` and the pin entered by the user would be authenticated against `100`.

` `

Interpret the given path as a file which contains a list of account codes and password hashes delimited with `:`, listed one per line in the file. When one of the passwords is matched, the channel will have its account code set to the corresponding account code in the file.

` `

Remove the database key upon successful entry (valid with `d` only)

`` `

maximum 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.

VMAuthenticate DISA

    			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.

    			Listen to a channel, and optionally whisper into it.

`` ``

Only spy on channels involved in a bridged call.

` `

Instead of whispering on a single channel barge in on both channels involved in the call.

` `

Specify a DTMF digit that can be used to spy on the next available channel.

` `

Override the typical numeric DTMF functionality and instead use DTMF to switch between spy modes.

spy mode

whisper mode

barge mode

` `

Enable enforced mode, so the spying channel can only monitor extensions whose name is in the ext : delimited list.

` `

Exit when the spied-on channel hangs up.

` `

Only spy on channels in which one or more of the groups listed in grp matches one or more groups from the SPYGROUP variable set on the channel to be spied upon.

both grp and SPYGROUP can contain either a single group or a colon-delimited list of groups, such as `sales:support:accounting`.

` `

Say the name of the person being spied on if that person has recorded his/her name. If a context is specified, then that voicemail context will be searched when retrieving the name, otherwise the `default` context be used when searching for the name (i.e. if SIP/1000 is the channel being spied on and no mailbox is specified, then `1000` will be used when searching for the name).

` `

Only listen to audio coming from this channel.

` `

Don't play a beep when beginning to spy on a channel, or speak the selected channel name.

` `

Record the session to the monitor spool directory. An optional base for the filename may be specified. The default is `chanspy`.

` `

Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.

` `

Stop when no more channels are left to spy on.

` `

The `chanprefix` parameter is a channel uniqueid or fully specified channel name.

` `

Adjust the initial volume in the range from `-4` to `4`. A negative value refers to a quieter setting.

` `

Enable `whisper` mode, so the spying channel can talk to the spied-on channel.

` `

Enable `private whisper` mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.

` `

Specify a DTMF digit that can be used to exit the application while actively spying on a channel. If there is no channel being spied on, the DTMF digit will be ignored.

` `

Allow the user to exit ChanSpy to a valid single digit numeric extension in the current context or the context specified by the SPY_EXIT_CONTEXT channel variable. The name of the last channel that was spied on will be stored in the SPY_CHANNEL variable.

``

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.

ExtenSpy ChanSpyStart ChanSpyStop

    			Listen to a channel, and optionally whisper into it.

`

Specify extension.

Optionally specify a context, defaults to `default`.

` ``

Only spy on channels involved in a bridged call.

` `

Instead of whispering on a single channel barge in on both channels involved in the call.

` `

Specify a DTMF digit that can be used to spy on the next available channel.

` `

Override the typical numeric DTMF functionality and instead use DTMF to switch between spy modes.

spy mode

whisper mode

barge mode

` `

Enable enforced mode, so the spying channel can only monitor extensions whose name is in the ext : delimited list.

` `

Exit when the spied-on channel hangs up.

` `

Only spy on channels in which one or more of the groups listed in grp matches one or more groups from the SPYGROUP variable set on the channel to be spied upon.

both grp and SPYGROUP can contain either a single group or a colon-delimited list of groups, such as `sales:support:accounting`.

` `

Say the name of the person being spied on if that person has recorded his/her name. If a context is specified, then that voicemail context will be searched when retrieving the name, otherwise the `default` context be used when searching for the name (i.e. if SIP/1000 is the channel being spied on and no mailbox is specified, then `1000` will be used when searching for the name).

` `

Only listen to audio coming from this channel.

` `

Don't play a beep when beginning to spy on a channel, or speak the selected channel name.

` `

Record the session to the monitor spool directory. An optional base for the filename may be specified. The default is `chanspy`.

` `

Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.

` `

Stop when there are no more extensions left to spy on.

` `

Adjust the initial volume in the range from `-4` to `4`. A negative value refers to a quieter setting.

` `

Enable `whisper` mode, so the spying channel can talk to the spied-on channel.

` `

Enable `private whisper` mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.

` `

Specify a DTMF digit that can be used to exit the application while actively spying on a channel. If there is no channel being spied on, the DTMF digit will be ignored.

` `

Allow the user to exit ChanSpy to a valid single digit numeric extension in the current context or the context specified by the SPY_EXIT_CONTEXT channel variable. The name of the last channel that was spied on will be stored in the SPY_CHANNEL variable.

``

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.

ChanSpy ChanSpyStart ChanSpyStop

    			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.

ChanSpyStart ChanSpyStop

    			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.

    			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 i

` `

Maximum 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`.

` ``

to return immediately if the line is not up.

` `

to play filename as an indication tone from your `indications.conf`.

` `

to read digits even if the line is not up.

`` `

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

    			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" IMp`

` ``

Allow the calling user to dial digits to jump to that extension. This option is automatically enabled if SAY_DTMF_INTERRUPT is present on the channel and set to 'true' (case insensitive)

``

Uses 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.

STRFTIME STRPTIME IFTIME

    			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" IMp`

`

Say the date and time in a specified format.

    			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

    			Play a file.

`` `

Comma separated list of options

`

Do not play if not answered

` `

Playback without answering, otherwise the channel will be answered before the sound is played.

Not all channel types support playing messages while still on hook.

``

Plays 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 fail

This 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 interruptible

WaitExten (application) -- wait for digits from caller, optionally play music on hold

Background WaitExten ControlPlayback stream file control stream file ControlPlayback

    			Generate a Constant 1004Hz tone at 0dbm (mu-law).

``

Generate the tone at 1000Hz like previous version.

``

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.

    			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 of

OSPLookup OSPNext OSPFinish

    			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 call

generate SIP call id for the outbound call. Have not been implemented

generate IAX call id for the outbound call. Have not been implemented

`

Looks 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 of

OSPAuth OSPNext OSPFinish

    			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 of

OSPAuth OSPLookup OSPFinish

    			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 of

OSPAuth OSPLookup OSPNext

    			Redirects given channel to a dialplan target

`` `` `` ``

Sends the specified channel to the specified extension priority

This application sets the following channel variables upon completion

Are set to the result of the redirection

    			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.

    			Load Asterisk ADSI Scripts into phone

`

adsi script to use. If not given uses the default script `asterisk.adsi`

`

This application programs an ADSI Phone with the given script

GetCPEID adsi.conf

    			Virtual Dictation Machine.

`` ``

Start dictation machine using optional base_dir for files.

    			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().

    			Play an NBS local stream.

Executes nbscat to listen to the local NBS stream. User can exit by pressing any key.

    			Forks the current Call Data Record for this channel.

``

If the channel is answered, set the answer time on the forked CDR to the current time. If this option is not used, the answer time on the forked CDR will be the answer time on the original CDR. If the channel is not answered, this option has no effect.

Note that this option is implicitly assumed if the `r` option is used.

` `

End (finalize) the original CDR.

` `

Reset the start and answer times on the forked CDR. This will set the start and answer times (if the channel is answered) to be set to the current time.

Note that this option implicitly assumes the `a` option.

` `

Do not copy CDR variables and attributes from the original CDR to the forked CDR.

This option has changed. Previously, the variables were removed from the original CDR. This no longer occurs - this option now controls whether or not a forked CDR inherits the variables from the original CDR.

``

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.

CDR NoCDR ResetCDR

    			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.

    			Check channel availability

`

Optional extra devices to check

If 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.

` ``

Check for all available channels, not only the first one

` `

Consider the channel unavailable if the channel is in use at all

` `

Simply checks if specified channels exist in the channel list

``

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 exists

The canonical channel name that was used to create the channel

The device state for the device

The cause code returned when requesting the channel

    			Say a noun in declined form in order to count things

`

The number of things

` `

File name stem for the noun that is the the name of the things

`

Selects 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.

SayCountedAdj SayNumber

    			Say a adjective in declined form in order to count things

`

The number of things

` `

File name stem for the adjective

` `

The 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().

SayCountedNoun SayNumber

    			MeetMe conference bridge.

`

The conference number

` ``

Set admin mode.

` `

Set marked mode.

` `

Run AGI script specified in MEETME_AGI_BACKGROUND Default: `conf-background.agi`.

This does not work with non-DAHDI channels in the same conference).

` `

Announce user(s) count on joining a conference.

` `

Continue in dialplan when kicked out of conference.

` `

Dynamically add conference.

` `

Dynamically add conference, prompting for a PIN.

` `

Select an empty conference.

` `

Select an empty pinless conference.

` `

Pass DTMF through the conference.

` `

The file to playback

Play an intro announcement in conference.

` `

Announce user join/leave with review.

` `

Announce user join/leave without review.

` `

Close the conference if there's only one active participant left at exit.

` `

Set listen only mode (Listen only, no talking).

` `

Set initially muted.

` `

Enable music on hold when the conference has a single caller. Optionally, specify a musiconhold class to use. If one is not provided, it will use the channel's currently set music class, or `default`.

` `

Disable the denoiser. By default, if `func_speex` is loaded, Asterisk will apply a denoiser to channels in the MeetMe conference. However, channel drivers that present audio with a varying rate will experience degraded performance with a denoiser attached. This parameter allows a channel joining the conference to choose not to have a denoiser attached without having to unload `func_speex`.

` `

Set talker optimization - treats talkers who aren't speaking as being muted, meaning (a) No encode is done on transmission and (b) Received audio that is not registered as talking is omitted causing no buildup in background noise.

` `

Allow user to exit the conference by pressing `#` (default) or any of the defined keys. Dial plan execution will continue at the next priority following MeetMe. The key used is set to channel variable MEETME_EXIT_KEY.

Option `s` has priority for `*` since it cannot change its activation code.

` `

Always prompt for the pin even if it is specified.

` `

Quiet mode (don't play enter/leave sounds).

` `

Record conference (records as MEETME_RECORDINGFILE using format MEETME_RECORDINGFORMAT. Default filename is `meetme-conf-rec-${CONFNO}-${UNIQUEID}` and the default format is wav.

` `

Present menu (user or admin) when `*` is received (send to menu).

` `

Set talk only mode. (Talk only, no listening).

` `

Set talker detection (sent to manager interface and meetme list).

` `

Announce when a user is joining or leaving the conference. Use the voicemail greeting as the announcement. If the i or I options are set, the application will fall back to them if no voicemail greeting can be found.

The mailbox and voicemail context to play from. If no context provided, assumed context is default.

` `

Wait until the marked user enters the conference.

` `

Leave the conference when the last marked user leaves.

` `

Allow user to exit the conference by entering a valid single digit extension MEETME_EXIT_CONTEXT or the current context if that variable is not defined.

Option `s` has priority for `*` since it cannot change its activation code.

` `

Do not play message when first person enters

` `

Kick the user x seconds after he entered into the conference.

` `

Limit the conference to x ms. Play a warning when y ms are left. Repeat the warning every z ms. The following special variables can be used with this option:

File to play when time is up.

File to play as warning if y is defined. The default is to say the time remaining.

`` ``

Enters 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.

MeetMeCount MeetMeAdmin MeetMeChannelAdmin

    			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.

`` ``

Eject last user that joined.

` `

Extend conference end time, if scheduled.

` `

Kick one user out of conference.

` `

Kick all users out of conference.

` `

Unlock conference.

` `

Lock conference.

` `

Unmute one user.

` `

Mute one user.

` `

Unmute all users in the conference.

` `

Mute all non-admin users in the conference.

` `

Reset one user's volume settings.

` `

Reset all users volume settings.

` `

Lower entire conference speaking volume.

` `

Raise entire conference speaking volume.

` `

Lower one user's talk volume.

` `

Raise one user's talk volume.

` `

Lower one user's listen volume.

` `

Raise one user's listen volume.

` `

Lower entire conference listening volume.

` `

Raise entire conference listening volume.

`` ``

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).

`` ``

Kick the specified user out of the conference he is in.

` `

Unmute the specified user.

` `

Mute the specified user.

``

Run admin command for a specific channel in any conference.

    			Shared Line Appearance Station.

`

Station name

`

This 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_line1`

On exit, this application will set the variable SLASTATION_STATUS to one of the following values:

    			Shared Line Appearance Trunk.

`

Trunk name

` ``

Play back the specified MOH class instead of ringing

``

This 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 conference

Duration of conference in seconds.

Boolean of whether the corresponding conference is dynamic.

Conference number to retrieve information from.

MeetMe
MeetMeCount
MeetMeAdmin
MeetMeChannelAdmin

    			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.

MeetmeLeave
MeetMe

    Raised when a user leaves a MeetMe conference.

The length of time in seconds that the Meetme user was in the conference.

MeetmeJoin

    Raised when a MeetMe conference ends.

MeetmeJoin

    Raised 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.

    			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().

    			Login an agent.

`` ``

silent login - do not announce the login ok segment after agent logged on.

``

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.

Authenticate Queue AddQueueMember RemoveQueueMember PauseQueueMember UnpauseQueueMember AGENT CHANNEL(dtmf-features) CONNECTEDLINE() agents.conf queues.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 agent

MusicOnHold class

The 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.

Agents AgentsComplete

    				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 applications

Option 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.

    			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 digit

` `

Channel where digits will be played

`

It 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.

    			Macro Implementation.

`

The name of the macro

` ``

Executes 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.

MacroExit Goto Gosub

    			Conditional Macro implementation.

`` ``

Executes macro defined in macroiftrue if expr is true (otherwise macroiffalse if provided)

Arguments and return values as in application Macro()

GotoIf GosubIf IF

    			Exclusive Macro Implementation.

`

The name of the macro

` `` ``

Executes 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

    			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.

ConfBridge CONFBRIDGE CONFBRIDGE_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.

    			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.

    			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.

ResetCDR CDR_PROP

    			Resets the Call Data Record.

``

Save the CDR variables during the reset.

` `

Enable the CDRs for this channel only (negate effects of NoCDR).

``

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.

ForkCDR NoCDR CDR_PROP

    			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_DELETE DBdeltree DB

    			Delete a family or keytree from the asterisk database.

`` ``

This application will delete a family or keytree from the Asterisk database.

DB_DELETE DBdel DB

    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.

    			Gets or sets the environment variable specified.

Environment variable name

Variables 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 file

A - 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.

Line mode: offset and length are assumed to be measured in lines, instead of byte offsets.

In write mode only, the append option is used to append to the end of the file, instead of overwriting the existing file.

In write mode and line mode only, this option does not automatically append a newline string to the end of a value. This is useful for deleting lines, instead of setting them to blank.

The format parameter may be used to delimit the type of line terminators in line mode.

Unix newline format.

DOS newline format.

Macintosh newline format.

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_LINE
FILE_FORMAT

    			Obtains the number of lines of a text file.

Format may be one of the following:

Unix newline format.

DOS newline format.

Macintosh newline format.

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.

FILE
FILE_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 determined

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
FILE_COUNT_LINE

    			Raises notifications when Asterisk detects silence or talking on a channel.

W/O. Remove talk detection from the channel.

W/O. Enable TALK_DETECT and/or configure talk detection parameters. Can be called multiple times to change parameters on a channel with talk detection already enabled.

The time in milliseconds before which a user is considered silent.

The time in milliseconds after which a user is considered talking.

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 detection

same => n,Set(TALK_DETECT(set)=1200) ; Update existing talk detection's silence threshold to 1200 ms

same => n,Set(TALK_DETECT(remove)=) ; Remove talk detection

same => n,Set(TALK_DETECT(set)=,128) ; Enable and set talk threshold to 128

This 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 audio

same => n,Set(TALK_DETECT(set)=) ; Perform talk detection on the denoised received audio

    			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.

    			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)})

    			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 `response`

The 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 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 succeed

Number of seconds to wait for DNS to be resolved

For FTP URIs, force a text transfer (boolean)

For FTP URIs, number of seconds to wait for a server response

Include header information in the result (boolean)

For HTTP(S) URIs, number of seconds to wait for a server response

Maximum number of redirects to follow

Hostname or IP address to use as a proxy server

Type of `proxy`

Port number of the `proxy`

A username`:`password combination to use for authenticating requests through a `proxy`

Referer URL to use for the request

UserAgent string to use for the request

A 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.

CURL
HASH

    			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`.

    			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.

Set a fixed jitterbuffer on the channel.

Set an adaptive jitterbuffer on the channel.

Remove a previously set jitterbuffer from the channel.

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.

Fixed with defaults

exten => 1,1,Set(JITTERBUFFER(fixed)=default)

Fixed with 200ms max size

exten => 1,1,Set(JITTERBUFFER(fixed)=200)

Fixed with 200ms max size, resync threshold 1500

exten => 1,1,Set(JITTERBUFFER(fixed)=200,1500)

Adaptive with defaults

exten => 1,1,Set(JITTERBUFFER(adaptive)=default)

Adaptive with 200ms max size, 60ms target extra

exten => 1,1,Set(JITTERBUFFER(adaptive)=200,,60)

Set a fixed jitterbuffer with defaults; then remove it

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.

    			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-r44830M

Example: Set(junky=${VERSION()};

Sets junky to the string `SVN-branch-1.6-r74830M`, or possibly, `SVN-trunk-r45126M`.

    			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:

Unknown

ISO8859-1

Withdrawn

ISO8859-2

ISO8859-3

ISO8859-4

ISO8859-5

ISO8859-7

ISO10646 Bmp String

ISO10646 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 set

Gets 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:

Unknown

ISO8859-1

Withdrawn

ISO8859-2

ISO8859-3

ISO8859-4

ISO8859-5

ISO8859-7

ISO10646 Bmp String

ISO10646 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 set

Gets 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 Away

Call Forwarding By The Called DTE

Call Forwarding Busy

Call Forwarding No Reply

Call Forwarding Unconditional

Call Deflection

Do Not Disturb

Follow Me

Called DTE Out-Of-Order

Send the call to voicemail

Time of Day

Callee is Unavailable

Unknown

You 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:

Unknown

ISO8859-1

Withdrawn

ISO8859-2

ISO8859-3

ISO8859-4

ISO8859-5

ISO8859-7

ISO10646 Bmp String

ISO10646 UTF-8 String

    			Encrypt a string with AES given a 16 character key.

AES Key

Input string

Returns an AES encrypted string encoded in base64.

AES_DECRYPT
BASE64_ENCODE
BASE64_DECODE

    			Decrypt a string encoded in base64 with AES given a 16 character key.

AES Key

Input string.

Returns the plain text string.

AES_ENCRYPT
BASE64_ENCODE
BASE64_DECODE

    			Count the voicemails in a specified mailbox.

If not specified, defaults to `INBOX`

Count the number of voicemails in a specified mailbox, you could also specify the mailbox folder.

Example: `exten => s,1,Set(foo=${VMCOUNT(125@default)})`

    			Gets or sets the global variable specified.

Global variable name

Set or get the value of a global variable specified in varname

    			Gets or sets the shared variable specified.

Variable name

If 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

    			Performs Mathematical Functions.

Is of the form: number1 op number2 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 - integer

h, hex - hex

c, char - char

Performs mathematical functions based on two parameters and an operator. The returned value type is type

Example: 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 dialplan

Example: INC(MyVAR) - Increments MyVar

Note: 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 dialplan

Example: DEC(MyVAR) - Decrements MyVar

Note: DEC(${MyVAR}) - Is wrong, as DEC expects the variable name, not its value

    			Set the TX or RX volume of a channel.

Must be `TX` or `RX`.

Enable DTMF volume control

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)

    			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.

DBdel
DB_DELETE
DBdeltree
DB_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`)

DBdel
DB
DBdeltree

    			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.

    			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

    			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 context

Priority 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

    			Get or Set a presence state.

The provider of the presence, such as `CustomPresence`

Which field of the presence state information is wanted.

The current presence, such as `away`

Further information about the current presence

A custom message that may indicate further details about the presence

On Write - Use this option when the subtype and message provided are Base64 encoded. The values will be stored encoded within Asterisk, but all consumers of the presence state (e.g. the SIP presence event package) will receive decoded values.

On Read - Retrieves unencoded message/subtype in Base64 encoded form.

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:lamp1

The possible values for both uses of this function are:

not_set | unavailable | available | away | xa | chat | dnd

    			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`.

    			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 string

Generate 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

    			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.

    			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`.

    			Initiate an SRV query.

The service for which to look up SRV records. An example would be something like `_sip._udp.example.com`

This 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.

    			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.

    			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 values

Examples:

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

    			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)

    			Gets or sets a CDR variable.

CDR field name:

Caller ID.

Last application arguments.

The final state of the CDR.

`NO ANSWER`

`NO ANSWER` (NULL record)

`FAILED`

`BUSY`

`ANSWERED`

`CONGESTION`

Source.

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.

`OMIT`

`BILLING`

`DOCUMENTATION`

Accessing 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.

Returns billsec or duration fields as floating point values.

Retrieves the raw, unprocessed value.

For example, 'start', 'answer', and 'end' will be retrieved as epoch values, when the `u` option is passed, but formatted as YYYY-MM-DD HH:MM:SS otherwise. Similarly, disposition and amaflags will return their raw integral values.

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-Only

Setting to 1 will disable CDRs for this channel. Setting to 0 will enable CDRs for this channel.

Write-Only

This function sets a property on a channel's CDR. Properties alter the behavior of how the CDR operates for that channel.

    			RealTime Read/Write Functions.

Use delim1 with delim2 on read and field without delim2 on write

If 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_STORE
REALTIME_DESTROY
REALTIME_FIELD
REALTIME_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.

REALTIME
REALTIME_DESTROY
REALTIME_FIELD
REALTIME_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`)

REALTIME
REALTIME_STORE
REALTIME_FIELD
REALTIME_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.

REALTIME
REALTIME_STORE
REALTIME_DESTROY
REALTIME_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.

REALTIME
REALTIME_STORE
REALTIME_DESTROY
REALTIME_FIELD

    			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 shell

Example: `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.

    			Checks if an Asterisk module is loaded in memory.

Module name complete with `.so`

Checks 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`

    			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.arpa`

This 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`.

Returns an integer count of the number of NAPTRs of a certain RR type.

Combination of `c` and Method-type of `ALL` will return a count of all NAPTRs for the record or -1 on error.

Returns the full URI and does not strip off the URI-scheme.

Triggers ISN specific rewriting.

Looks for branches into an Infrastructure ENUM tree.

for a direct DNS lookup without any flipping of digits.

If no record# is given, defaults to `1`.

If no zone-suffix is given, the default will be `e164.arpa`

For 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.arpa`

This 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.

    			Intercepts hold frames on a channel and raises an event instead of passing the frame on

W/O. Removes the hold interception function.

W/O. Enable hold interception on the channel. When enabled, the channel will intercept any hold action that is signalled from the device, and instead simply raise an event (AMI/ARI) indicating that the channel wanted to put other parties on hold.

    			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.

`OMIT`

`BILLING`

`DOCUMENTATION`

R/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 channel

R/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 channel

R/W zone for indications played

R/W ISDN Transfer Capability, one of:

R/W set txgain level on channel drivers that support it.

R/O format used natively for video

R/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.

Standard CHANNEL item examples

; 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)})

    			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 information

Translated Asterisk cause code

Gets technology-specific or translated Asterisk cause code information from the channel for the specified channel that resulted from a dial.

HANGUPCAUSE_KEYS
HangupCauseClear

    			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.

HANGUPCAUSE
HangupCauseClear

    			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).

HANGUPCAUSE HANGUPCAUSE_KEYS `

    			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 cut

` `

Delimiter, 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.

` `

    			Apply automatic gain control to audio on a channel.

`

This can be either `rx` or `tx`

`

The 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 `off`

`

The 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)

` `

    			Counts the number of channels in the specified group.

`

Group name.

` `

Category name

`

Calculates 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.

`

    			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 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`.

    			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:lamp1

The 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.

Retrieve name on the hint instead of list of devices.

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 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

    			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})}'

    			Converts charsets of strings.

Input charset

Output charset

String to convert, from in-charset to out-charset

Converts 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.

    			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` otherwise

Please 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 strings

Example: ${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,EndWhile

This 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,EndWhile

This 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".

    			Encode a string in base64.

Input string

Returns the base64 string.

BASE64_DECODE
AES_DECRYPT
AES_ENCRYPT

    			Decode a base64 string.

Input string.

Returns the plain text string.

BASE64_ENCODE
AES_DECRYPT
AES_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.

    			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.

    			Computes an MD5 digest.

Computes an MD5 digest.

    			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.

    			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.

    			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.

`` ``

Causes the playback of the message to be skipped if the channel is not in the `up` state (i.e. it hasn't been answered yet). If this happens, the application will return immediately.

` `

Don't answer the channel before playing the files.

` `

Only break if a digit hit matches a one digit extension in the destination context.

`` `

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.

ControlPlayback WaitExten BackgroundDetect TIMEOUT

    			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.

Congestion Progress Playtones Hangup

    			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.

Busy Progress Playtones Hangup

    			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.

Exec ExecIf TryExec GotoIfTime

    			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!

GotoIf GotoIfTime Gosub Macro

    			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!.

Goto GotoIfTime GosubIf MacroIf

    			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.

GotoIf Goto IFTIME TESTTIME

    			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.

Answer Busy Congestion

    			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.

Verbose Log

    			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.

Busy Congestion Ringing Playtones

    			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.

Busy Congestion Progress Playtones

    			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`.

SayDigits SayNumber SayPhonetic CHANNEL

    			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`.

SayDigits SayNumber SayPhonetic SayAlpha CHANNEL

    			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`.

SayAlpha SayNumber SayPhonetic CHANNEL

    			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`.

SayAlpha SayDigits SayPhonetic CHANNEL

    			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`.

SayAlpha SayDigits SayNumber

    			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.

CDR CHANNEL

    			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.

` ``

Provide music on hold to the caller while waiting for an extension.

Specify the class for music on hold. CHANNEL(musicclass) will be used instead if set

``

This application waits for the user to enter a new extension for a specified number of seconds.

Background TIMEOUT

    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.

UserEvent UserEvent

    Settings 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.

    Features Configuration

    Milliseconds allowed between digit presses when entering a feature code.

    Sound to play when automon or automixmon is activated

    Sound to play when automon or automixmon is attempted but fails to start

    Seconds allowed between digit presses when dialing a transfer destination

    Seconds to wait for attended transfer destination to answer

    Hang up the call entirely if the attended transfer fails

When 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 destination

atxferdropcall

    Number of times to re-attempt dialing a transfer destination

atxferdropcall

    Sound 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 fails

    Digits to dial to abort an attended transfer attempt

This 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 transfer

This 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 call

This 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 transfer

This 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 calls

In 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 up

    Sound to play to picker when a call cannot be picked up

    Number of dial attempts allowed when attempting a transfer

    Sound 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 calls

    DTMF sequence to initiate an attended transfer

The 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 transfer

The 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 call

Entering this DTMF sequence will cause the bridge to end, no matter the number of parties present

    DTMF sequence to park a call

The 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 call

This 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-filename

where 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_MONITOR TOUCH_MIXMONITOR_FORMAT is used in place of TOUCH_MIXMONITOR There is no equivalent for TOUCH_MONITOR_PREFIX. `"auto"` is always how the filename begins.

automon

    Section for defining custom feature invocations during a call

The 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 call

Each 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),default

This 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",default

The DTMF sequence used to trigger the option

The party that the feature will be invoked on

Feature is invoked on party that presses the DTMF sequence

Feature is invoked on other parties in the bridge

The dialplan application to run when the DTMF sequence is pressed

The arguments to the dialplan application to run

Music on hold class to play to bridge participants that are not the target of the application invocation

    Groupings of items from the applicationmap

Feature 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 group

Each 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 Transfer

Blind Transfer

Auto Monitor

Call Disconnect

Park Call

Auto MixMonitor

When 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.

FEATURE

    Bucket file API

    Scheme in use for bucket

    Time at which the bucket was created

    Time at which the bucket was last modified

    Scheme in use for file

    Time at which the file was created

    Time at which the file was last modified

    Raised when all Asterisk initialization procedures have finished.

Informational message

    Raised 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 Advice of Charge message is sent at the beginning of a call.

AOC-D
AOC-E

    Raised when an Advice of Charge message is sent during a call.

AOCMessage
AOC-S
AOC-E

    Raised when an Advice of Charge message is sent at the end of a call.

AOCMessage
AOC-S
AOC-D

    			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.

    			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-0000012a

Example 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 channel

Dialed number identifier

Absolute lifetime of the channel

Identifier of the bridge the channel is in, may be empty if not in one

Application currently executing on the channel

Data given to the currently executing channel

Media formats the connected party is willing to send or receive

Media formats that frames from the channel are received in

Translation path for media received in native formats

Media formats that frames to the channel are accepted in

Translation path for media sent to the connected party

Configured call group on the channel

Configured pickup group on the channel

Number of seconds the channel has been active

Status

    Raised in response to a Status command.

Number of Status events returned

Status

    			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.

GetConfigJSON
UpdateConfig
CreateConfig
ListCategories

    			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.

GetConfig
UpdateConfig
CreateConfig
ListCategories

    			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.

GetConfig
GetConfigJSON
CreateConfig
ListCategories

    			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.

GetConfig
GetConfigJSON
UpdateConfig
ListCategories

    			List categories in configuration file.

Configuration filename (e.g. `foo.conf`).

This action will dump the categories in a given file.

GetConfig
GetConfigJSON
UpdateConfig
CreateConfig

    			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

    			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/Data

OriginateResponse

    Raised 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 of

Report 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 Count

Mailbox: mailboxid

UrgentMessages: count

NewMessages: count

OldMessages: count

MailboxStatus

    			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.

UserEvent
UserEvent

    			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.

ModuleLoad

    Raised in response to a CoreShowChannels command.

Identifier of the bridge the channel is in, may be empty if not in one

Application currently executing on the channel

Data given to the currently executing application

The amount of time the channel has existed

CoreShowChannels
CoreShowChannelsComplete

    Raised at the end of the CoreShowChannel list produced by the CoreShowChannels command.

Conveys the status of the command reponse list

The total number of list items produced

CoreShowChannels
CoreShowChannel

    			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.

Reload
ModuleCheck

    			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-E

Defines 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 IDs

Charging association identifier. This is optional for AOC-E and can be set to any value between -32768 and 32767

Represents 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-D
AOC-E

    			Checks attributes of manager accounts

Login name, specified in manager.conf

The manager account attribute to return

The 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 blacklist

Example 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.conf

FilterList

    			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.

Redirect
BlindTransfer

    Raised when a hint changes due to a device state change.

Name of the extension.

Context that owns the extension.

Hint set for the extension

Numerical 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.

ExtensionState

    Raised when a hint changes due to a presence state change.

PresenceState

    Raised 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 request

Absolute time that this contact is no longer valid after

IP address:port of the last Via header in REGISTER request

Content of the Call-ID header in REGISTER request

    Raised 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.

AgentLogin
AgentLogoff

    Raised when an Agent has logged off.

The number of seconds the agent was logged in.

AgentLogin

    Raised when talking is detected on a channel.

TALK_DETECT
ChannelTalkingStop

    Raised when talking is no longer detected on a channel.

The length in time, in milliseconds, that talking was detected on the channel.

TALK_DETECT
ChannelTalkingStart

    Raised when a presence state changes

The entity whose presence state has changed

The new status of the presentity

The new subtype of the presentity

The new message of the presentity

This differs from the `PresenceStatus` event because this event is raised for all presence state changes, not only for changes that affect dialplan hints.

PresenceStatus

    Options that apply globally to Channel Event Logging (CEL)

    Determines whether CEL is enabled

    The format to be used for dates when logging

    List of apps for CEL to track

A case-insensitive, comma-separated list of applications to track when one or both of APP_START and APP_END events are flagged for tracking

    List of events for CEL to track

A 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.

    			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.

MSet GLOBAL SET ENV

    			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.

Set

    Raised when an RTCP packet is sent.

`

The SSRC identifier for our stream

` `

The 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.

` RTCPReceived

    Raised when an RTCP packet is received.

`

The SSRC identifier for the remote system

` `

The address the report was received from.

` `

Calculated Round-Trip Time in seconds

` `

The 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

    Raised when a module has been reloaded in Asterisk.

`

The name of the module that was reloaded, or `All` if all modules were reloaded

` `

The numeric status code denoting the success or failure of the reload request.

Success

Request queued

Module not found

Error

Reload already in progress

Module uninitialized

Reload not supported

`

    			Bridge two channels.

`

The current channel is bridged to the specified channel.

` ``

Play a courtesy tone to channel.

` `

When the bridger hangs up, transfer the bridged party to the specified destination and start execution at that location.

Any channel variables you want the called channel to inherit from the caller channel must be prefixed with one or two underbars ('_').

This option will override the 'x' option

` `

When the bridger hangs up, transfer the bridged party to the next priority of the current extension and start execution at that location.

Any channel variables you want the called channel to inherit from the caller channel must be prefixed with one or two underbars ('_').

Using this option from a Macro() or GoSub() might not make sense as there would be no return points.

This option will override the 'x' option

` `

Allow the called party to hang up by sending the * DTMF digit.

` `

Allow the calling party to hang up by pressing the * DTMF digit.

` `

Allow the called party to enable parking of the call by sending the DTMF sequence defined for call parking in `features.conf`.

` `

Allow the calling party to enable parking of the call by sending the DTMF sequence defined for call parking in `features.conf`.

` `

Limit the call to x ms. Play a warning when y ms are left. Repeat the warning every z ms. The following special variables can be used with this option:

Play sounds to the caller. yes|no (default yes)

Play sounds to the callee. yes|no

File to play when time is up.

File to play when call begins.

File to play as warning if y is defined. The default is to say the time remaining.

` `

Hang up the call after x seconds *after* the called party has answered the call.

` `

Allow the called party to transfer the calling party by sending the DTMF sequence defined in `features.conf`.

` `

Allow the calling party to transfer the called party by sending the DTMF sequence defined in `features.conf`.

` `

Allow the called party to enable recording of the call by sending the DTMF sequence defined for one-touch recording in `features.conf`.

` `

Allow the calling party to enable recording of the call by sending the DTMF sequence defined for one-touch recording in `features.conf`.

` `

Cause the called party to be hung up after the bridge, instead of being restarted in the dialplan.

``

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.

Bridge BridgeCreate BridgeEnter

    			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.

Bridge BridgeCreate BridgeEnter BridgeDestroy BridgeInfo BridgeKick BridgeList

    			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.

    Options for configuring a named ACL

    An address/subnet from which to allow access

    An address/subnet from which to disallow access

    Global options for configuring UDPTL

    The start of the UDPTL port range

    The end of the UDPTL port range

    Whether to enable or disable UDP checksums on UDPTL traffic

    The number of error correction entries in a UDPTL packet

    The span over which parity is calculated for FEC in a UDPTL packet

    Whether to only use even-numbered UDPTL ports

    Removed

    Removed

    Raised 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.

    Call Detail Record configuration

CDR 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 logic

As 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 purposes

Normally, 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 batches

Define 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 batch

Define 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 batch

Define 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 scheduler

The 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 submitted

When 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`.

    			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() application

The 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 format

Time in HH:MM:SS format (24-hour time)

Timezone name

To 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.

ExtensionState
HINT
EXTENSION_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.

    Raised when a bridge is created.

BridgeDestroy
BridgeEnter
BridgeLeave

    Raised when a bridge is destroyed.

BridgeCreate
BridgeEnter
BridgeLeave

    Raised when a channel enters a bridge.

The uniqueid of the channel being swapped out of the bridge

BridgeCreate
BridgeDestroy
BridgeLeave

    Raised when a channel leaves a bridge.

BridgeCreate
BridgeDestroy
BridgeEnter

    Raised when the channel that is the source of video in a bridge changes.

The unique ID of the channel that was the video source.

BridgeCreate
BridgeDestroy

    			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.

Bridge
BridgeDestroy
BridgeInfo
BridgeKick

    			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.

Bridge
BridgeDestroy
BridgeKick
BridgeList

    Information 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.

Bridge
BridgeInfo
BridgeKick
BridgeList
BridgeDestroy

    			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.

Bridge
BridgeDestroy
BridgeInfo
BridgeList
BridgeLeave

    			List available bridging technologies and their statuses.

Returns detailed information about the available bridging technologies.

BridgeTechnologySuspend
BridgeTechnologyUnsuspend

    			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.

BridgeTechnologySuspend
BridgeTechnologyUnsuspend

    			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.

BridgeTechnologyList
BridgeTechnologySuspend

    Raised when a new channel is created.

Newstate
Hangup

    Raised when a channel's state changes.

Newchannel
Hangup

    Raised 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.

Newchannel
SoftHangupRequest
HangupRequest
Newstate

    Raised when a hangup is requested.

SoftHangupRequest
Hangup

    Raised when a soft hangup is requested with a specific cause code.

HangupRequest
Hangup

    Raised 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.

CALLERID

    Raised when a channel's connected line information is changed.

CONNECTEDLINE

    Raised when a Channel's AccountCode is changed.

The channel's previous account code

CHANNEL

    Raised when a dial action has started.

The non-technology specific device being dialed.

Dial
Originate
Originate
DialEnd

    Raised 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.

Dial
Originate
Originate
DialBegin

    Raised when a channel goes on hold.

The suggested MusicClass, if provided.

Unhold

    Raised when a channel goes off hold.

Hold

    Raised when one channel begins spying on another channel.

ChanSpyStop
ChanSpy

    Raised when a channel has stopped spying.

ChanSpyStart
ChanSpy

    Raised 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.

HangupHandlerPush
CHANNEL

    				Raised when a hangup handler is added to the handler stack by
    				the CHANNEL() function.

HangupHandlerPop
CHANNEL

    				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 variable

The value of the REMOTESTATIONID channel variable

The number of pages that have been transferred

The negotiated resolution

The negotiated transfer rate

The 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 channel

MusicOnHoldStop
StartMusicOnHold
MusicOnHold

    Raised when music on hold has stopped on a channel.

MusicOnHoldStart
StopMusicOnHold

    Raised when monitoring has started on a channel.

MonitorStop
Monitor
Monitor

    Raised when monitoring has stopped on a channel.

MonitorStart
StopMonitor
StopMonitor

    Raised when a device state changes

The device whose state has changed

The new state of the device

This differs from the `ExtensionStatus` event because this event is raised for all device state changes, not only for changes that affect dialplan hints.

ExtensionStatus

    			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.

LocalOptimizationEnd
LocalOptimizeAway

    Raised 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 `LocalOptimizationBegin`

LocalOptimizationBegin
LocalOptimizeAway

    			Retrieve the data api tree.

Retrieve the data api tree.

    Raised 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 transfers

Transfer completed successfully

A 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.

BlindTransfer

    Raised 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 transfer

This header is only present when DestType is `Bridge` or `Threeway`

Indicates the application that is running when the transfer completes

This header is only present when DestType is `App`

The name of the surviving transferer channel when a transfer results in a threeway call

This header is only present when DestType is `Threeway`

The 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

    			Get DB Entry.

    			Put DB entry.

    			Delete DB entry.

    			Delete DB Tree.

    pjproject common configuration

    Asterisk startup time options for PJPROJECT

The 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 Mapping

Warnings 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.

    Module that identifies endpoints

    Identifies 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 Endpoint

    IP 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'.

    			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 ACL module

ACL

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 List

    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 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'.

    			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=value

Sends 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 sources

    Unused, 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:

    			Monitor a channel.

`

Optional. If not set, defaults to `wav`

` `

If set, changes the filename used to the one specified.

` ``

When the recording ends mix the two leg files into one and delete the two leg files. If the variable MONITOR_EXEC is set, the application referenced in it will be executed instead of soxmix/sox and the raw leg files will NOT be deleted automatically. soxmix/sox or MONITOR_EXEC is handed 3 arguments, the two leg files and a target mixed file name which is the same as the leg file names only without the in/out designator.

If MONITOR_EXEC_ARGS is set, the contents will be passed on as additional arguments to MONITOR_EXEC. Both MONITOR_EXEC and the Mix flag can be set from the administrator interface.

Do not use untrusted strings such as CALLERID(num) or CALLERID(name) as part of MONITOR_EXEC or MONITOR_EXEC_ARGS. You risk a command injection attack executing arbitrary commands if the untrusted strings aren't filtered to remove dangerous characters. See function FILTER().

` `

Don't begin recording unless a call is bridged to another channel.

` `

Play a periodic beep while this call is being recorded.

Interval, in seconds. Default is 15.

` `

Skip recording of input stream (disables `m` option).

` `

Skip recording of output stream (disables `m` option).

``

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.

    Module that privides simple configuration wizard capabilities.

PJSIP Configuration Wizard

This 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 = wizard

sends_auth = no

accepts_auth = yes

sends_registrations = no

accepts_registrations = yes

has_phoneprov = yes

transport = ipv4

has_hint = yes

hint_exten = 1000

inbound_auth/username = testname

inbound_auth/password = test password

endpoint/allow = ulaw

endpoint/context = default

phoneprov/MAC = 001122aa4455

phoneprov/PROFILE = profile1

The 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 = wizard

sends_auth = yes

accepts_auth = no

sends_registrations = yes

accepts_registrations = no

transport = ipv4

remote_hosts = sip1.myitsp.com:5060,sip2.myitsp.com:5060

outbound_auth/username = testname

outbound_auth/password = test password

endpoint/allow = ulaw

endpoint/context = default

Of 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+Wizard`

    Provides config wizard.

For more information, visit:

`https://wiki.asterisk.org/wiki/display/AST/PJSIP+Configuration+Wizard`

    Must 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+Wizard`

    Application 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+Wizard`

    Variables 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.

    			Receive a FAX and save as a TIFF/F file.

`` ``

Enable FAX debugging.

` `

Allow audio fallback FAX transfer on T.38 capable channels.

` `

Force usage of audio mode on T.38 capable channels.

` `

Send progress Manager events (overrides statusevents setting in res_fax.conf).

``

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.

` ``

Enable FAX debugging.

` `

Allow audio fallback FAX transfer on T.38 capable channels.

` `

Force usage of audio mode on T.38 capable channels.

` `

Send progress Manager events (overrides statusevents setting in res_fax.conf).

` `

Initiate a T.38 reinvite on the channel if the remote end does not.

``

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.

ReceiveFax SendFax`

    			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 command

Name of the channel responsible for the FAX session

The FAX technology that the FAX session is using

The numerical identifier for this particular session

FAX session passthru/relay type

FAX session operation type

Current state of the FAX session

File or list of files associated with this FAX session

    Raised when all FAXSession events are completed for a FAXSessions command

Count 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 command

The numerical identifier for this particular session

Whether 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 command

Number of active FAX sessions

Number of reserved FAX sessions

Total FAX sessions for which Asterisk is/was the transmitter

Total FAX sessions for which Asterisk is/was the recipient

Total FAX sessions which have been completed successfully

Total FAX sessions which failed to complete successfully

    			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 number

The message desk terminal

The forwarding station

The callerID of the calling party that was forwarded

The call type. The value here is the exact character that came in on the SMDI link. Typically, example values are:

Options:

Direct Calls

Forward All Calls

Forward Busy Calls

Forward No Answer Calls

This 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

    			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})

    Resource for integration with Homer using HEPv3

    General 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-Id

Use the Asterisk channel name

    The 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.

    			Muting audio streams in the channel

Must be one of

Inbound stream (to the PBX)

Outbound stream (from the PBX)

Both streams

The 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.

    			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.

PresenceState
PresenceStatus
PRESENCE_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.

    			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.

    			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 retrieval

Marks 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.

    			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 jid

Example: 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_STATUS JABBER_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_STATUS JabberSend` `

    			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=Offline

If 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_RECEIVE JabberSend`

    			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 Messaging

    Global configuration settings

    Enable/disable XMPP message debugging

    Auto-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 list

    Enable support for XEP-0248 for use with distributed device state

    Whether or not the PubSub server supports/is using auto-create for nodes

    Whether to automatically accept or deny users' subscription requests

    Configuration options for an XMPP client

    XMPP username with optional resource

    XMPP password

    Route to server, e.g. talk.google.com

    Custom status message

    Node for publishing events via PubSub

    Dialplan context to send incoming messages to

    XMPP resource priority

    XMPP server port

    Timeout in seconds to hold incoming messages

Timeout (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 debugging

    Connection is either a client or a component

    Whether or not to distribute events using this connection

    Whether to use TLS for the connection or not

    Whether to use SASL for the connection or not

    Force the use of old-style SSL for the connection

    If enabled, periodically send an XMPP message from this client with an empty message

    Auto-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 list

    Whether to automatically accept or deny users' subscription requests

    Send incoming messages into the dialplan

    Default XMPP status for the client

Can 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).

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.

    			Answer channel

Answers channel if not already in answer state. Returns `-1` on channel failure, or `0` if successful.

hangup
AGI

    			Interrupts Async AGI

Interrupts expected flow of Async AGI commands and returns control to previous source (typically, the PBX dialplan).

hangup
AGI

    			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 playback

Send 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 string

Contains 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 option
control stream file
AGI

    			Removes database key/value

Deletes an entry in the Asterisk database for a given family and key.

Returns `1` if successful, `0` otherwise.

database get
database put
database deltree
AGI

    			Removes database keytree/value

Deletes a family or specific keytree within a family in the Asterisk database.

Returns `1` if successful, `0` otherwise.

database get
database put
database del
AGI

    			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 put
database del
database deltree
AGI

    			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 get
database del
database deltree
AGI

    			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 variable
set variable
AGI

    			Stream file, prompt for DTMF, with timeout.

Behaves similar to STREAM FILE but used with a timeout option.

stream file
control stream file
AGI

    			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 variable
set variable
AGI

    			Hangup a channel.

Hangs up the specified channel. If no channel name is given, hangs up the current channel

AGI

    			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 channels

Receives 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 text
AGI

    			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 char
send text
AGI

    			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 digits
say number
say phonetic
say date
say time
say datetime
AGI

    			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 alpha
say number
say phonetic
say date
say time
say datetime
AGI

    			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 alpha
say digits
say phonetic
say date
say time
say datetime
AGI

    			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 alpha
say digits
say number
say date
say time
say datetime
AGI

    			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 alpha
say digits
say number
say phonetic
say time
say datetime
AGI

    			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 alpha
say digits
say number
say phonetic
say date
say datetime
AGI

    			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 alpha
say digits
say number
say phonetic
say date
say time
AGI

    			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 text
AGI

    			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 extension
set priority
AGI

    			Changes channel extension.

Changes the extension for continuation upon exiting the application.

set context
set priority
AGI

    			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 context
set extension
AGI

    			Sets a channel variable.

Sets a variable to the current channel.

get variable
get full variable
AGI

    			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 file
get option
AGI

    			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 `1`

AGI

    			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 set
speech destroy
speech load grammar
speech unload grammar
speech activate grammar
speech deactivate grammar
speech recognize
AGI

    			Sets a speech engine setting.

Set an engine-specific setting.

speech create
speech destroy
speech load grammar
speech unload grammar
speech activate grammar
speech deactivate grammar
speech recognize
AGI

    			Destroys a speech object.

Destroy the speech object created by `SPEECH CREATE`.

speech create
speech set
speech load grammar
speech unload grammar
speech activate grammar
speech deactivate grammar
speech recognize
AGI

    			Loads a grammar.

Loads the specified grammar as the specified name.

speech create
speech set
speech destroy
speech unload grammar
speech activate grammar
speech deactivate grammar
speech recognize
AGI

    			Unloads a grammar.

Unloads the specified grammar.

speech create
speech set
speech destroy
speech load grammar
speech activate grammar
speech deactivate grammar
speech recognize
AGI

    			Activates a grammar.

Activates the specified grammar on the speech object.

speech create
speech set
speech destroy
speech load grammar
speech unload grammar
speech deactivate grammar
speech recognize
AGI

    			Deactivates a grammar.

Deactivates the specified grammar on the speech object.

speech create
speech set
speech destroy
speech load grammar
speech unload grammar
speech activate grammar
speech recognize
AGI

    			Recognizes speech.

Plays back given prompt while listening for speech and dtmf.

speech create
speech set
speech destroy
speech load grammar
speech unload grammar
speech activate grammar
speech deactivate grammar
AGI

    			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:

AGI AsyncAGIStart AsyncAGIEnd EAGI DeadAGI asterisk.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:

AGI DeadAGI

    			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:

AGI EAGI

    			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.

AsyncAGIStart AsyncAGIExec AsyncAGIEnd

    Raised when a channel starts AsyncAGI command processing.

`

URL encoded string read from the AsyncAGI server.

` AsyncAGIEnd AsyncAGIExec AGI AGI

    Raised when a channel stops AsyncAGI command processing.

AsyncAGIStart AsyncAGIExec AGI AGI

    Raised 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.

` AsyncAGIStart AsyncAGIEnd AGI AGI

    Raised 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.

` AGIExecEnd AGI

    Raised when a received AGI command completes processing.

`

The numeric result code from AGI

` `

The text result reason from AGI

` AGIExecStart AGI

    			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 channel

Park 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 in

Parking Space that the parkee is parked in

Time remaining until the parkee is forcefully removed from parking in seconds

Time 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 channel

This 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.

    			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 application

2) PARKINGLOT variable

3) `CHANNEL(parkinglot)` function (Possibly preset by the channel driver.)

4) Default parking lot.

` `

A list of options for this parked call.

`

Send ringing instead of MOH to the parked call.

` `

Randomize the selection of a parking space.

` `

Silence announcement of the parking space number.

` `

If the parking times out, go to this place in the dialplan instead of where the parking lot defines the call should go.

` `

Use a timeout of `duration` seconds instead of the timeout specified by the parking lot.

``

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 option

2) PARKINGLOT variable

3) `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 application

2) PARKINGLOT variable

3) `CHANNEL(parkinglot)` function (Possibly preset by the channel driver.)

4) Default parking lot.

` `

A list of options for this parked call.

`

Send ringing instead of MOH to the parked call.

` `

Randomize the selection of a parking space.

` `

If the parking times out, go to this place in the dialplan instead of where the parking lot defines the call should go.

` `

Use a timeout of `duration` seconds instead of the timeout specified by the parking lot.

`` `

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.

Park ParkedCall

    HTTP binding for the Stasis API

    General configuration settings

    Enable/disable the ARI module

This option enables or disables the ARI module.

ARI uses Asterisk's HTTP server, which must also be enabled in `http.conf`.

http.conf https://wiki.asterisk.org/wiki/display/AST/Asterisk+Builtin+mini-HTTP+Server

    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.

    Responses from ARI are formatted to be human readable

    Realm 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 settings

    Define this configuration section as a user.

Configure this section as a user

    When set to yes, user is only authorized for read-only requests

    Crypted 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

    Statsd client.

    Global configuration settings

    Enable/disable the statsd module

    Address of the statsd server

    Prefix to prepend to every metric

    Append a newline to every event. This is useful if you want to fake out a server using netcat (nc -lu 8125)

    SIP Resource using PJProject

    Endpoint

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 tags

    Condense 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 allow

    Enable 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 level

    Internal id_tag for the endpoint

    Dialplan context for inbound sessions

    Mitigation 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 type

Method for setting up Direct Media between endpoints.

Alias for the `invite` value.

    Connected line method type

Method 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 session

    Media Codec(s) to disallow

    DTMF mode

This 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 port

    Enable the ICE mechanism to help traverse NAT

    Way(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 NOTIFYs

    The voicemail extension to send in the NOTIFY Message-Account header

    Default Music On Hold class

    Authentication 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 requests

    Allow 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.

    Allow use of IPv6 for RTP traffic

    Enforce that RTP must be symmetric

    Send the Diversion header, conveying the diversion
    					information to the called user agent

    Send the P-Asserted-Identity header

    Send the Remote-Party-ID header

    Immediately 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 packets

Alias of always

    Maximum 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 required

    Accept identification information received from this endpoint

This 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 interval

    Determines 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_feature
record_off_feature

    The 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 disabled

one_touch_recording
record_off_feature

    The 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 disabled

one_touch_recording
record_on_feature

    Name of the RTP engine to use for channels created for this endpoint

    Determines whether SIP REFER transfers are allowed for this endpoint

    Determines whether a user=phone parameter is placed into the request URI if the user is determined to be a phone number

    String 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.

    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 account

    Domain 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 aliased

    SIP Transport

Transports

There 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 Operations

    IP Address and optional port to bind to for this transport

    File 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 from

    External 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 signalling

    External port for SIP signalling

    Method 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 transport

    Private key file (TLS ONLY)

    Protocol to use for SIP traffic

    Require 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 transport

See `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 transport

See `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 peer

    Time 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.

    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 header

    Maximum 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.

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 explict expiration. Time in seconds.

    Determines whether new contacts replace existing ones.

On receiving a new registration to the AoR should it remove the existing contact that was registered against it?

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 aor

    Enable/Disable SIP debug logging.  Valid options include yes|no or
    						a host address

    The 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.

Sample SIP URI

sip:1235557890;phone-context=national@x.x.x.x;user=phone

Sample SIP URI user field

1235557890;phone-context=national

Sample SIP URI user field truncated

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 request

Absolute time that this contact is no longer valid after

IP 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.

    Options that apply to every parking lot

    Enables 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 on

    The 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 call

The flat version of PARKER

    Timeout 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=no

The 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 tone

By 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 lot

Apply 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 lot

Track the last parking space used and always attempt to use the one immediately after.

    			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 with name. 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 removed

exten => 1,1,Verbose( Removed ${PJSIP_HEADER(remove,X-MyHeader)} headers)

;

; Set a variable to the number of headers removed

exten => 1,1,Set(count=${PJSIP_HEADER(remove,X-MyHeader)})

;

; Just remove them ignoring any count

exten => 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))

;

    			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.

    			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.

DeviceStateChange
DEVICE_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.

    SIP resource for outbound publish

Outbound Publish

This 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 seconds

    Authentication 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 publishes

    SIP 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 publish

A 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'.

    Module that integrates res_pjsip with res_phoneprov.

PJSIP Phoneprov Provider

This 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 = phoneprovr

endpoint = ep1000

MAC = deadbeef4dad

PROFILE = grandstream2

LINEKEYS = 2

LINE = 1

OTHERVAR = othervalue

The 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.

    SIP resource for outbound registrations

Outbound Registration

This 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 request

    Expiration time for registrations in seconds

    Maximum 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 registrations

    Interval in seconds between retries if outbound registration is unsuccessful

    Interval 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 authentication

A 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.

    SIP resource for inbound and outbound Asterisk event publications

Inbound and outbound Asterisk event publication

This 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'.

    Core external MWI support

    Persistent cache of external MWI Mailboxs.

Allows the alteration of sorcery backend mapping for the persistent cache of external MWI mailboxes.

    			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.

    			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 subscription

    The source address of the subscription

    The source port of the subscription

    The type of transport the subscription was received on

    The local address the subscription was received on

    The local port the subscription was received on

    The sequence number of the next NOTIFY to be sent

    The local tag of the dialog for the subscription

    The name of the endpoint that subscribed

    The time at which the subscription expires

    The Contact URI of the dialog for the subscription

    Resource 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 on

In 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 publications

    Optional name of an endpoint that is only allowed to publish to this resource

    Must be of type 'inbound-publication'.

    			Determine if the calendar is marked busy at this time.

Check the specified calendar's current busy status.

CALENDAR_EVENT
CALENDAR_QUERY
CALENDAR_QUERY_RESULT
CALENDAR_WRITE

    			Get calendar event notification data from a notification call.

The VEVENT SUMMARY property or Exchange event 'subject'

The text description of the event

The organizer of the event

The location of the eventt

The categories of the event

The priority of the event

The name of the calendar associated with the event

The unique identifier for this event

The start time of the event

The end time of the event

The busy state of the event 0=FREE, 1=TENTATIVE, 2=BUSY

Whenever a calendar event notification call is made, the event data may be accessed with this function.

CALENDAR_BUSY
CALENDAR_QUERY
CALENDAR_QUERY_RESULT
CALENDAR_WRITE

    Query a calendar server and store the data on a channel

The calendar that should be queried

The 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_BUSY
CALENDAR_EVENT
CALENDAR_QUERY_RESULT
CALENDAR_WRITE

    			Retrieve data from a previously run CALENDAR_QUERY() call

The query ID returned by `CALENDAR_QUERY`

number of events occurring during time range

A summary of the event

The full event description

The event organizer

The event location

The categories of the event

The priority of the event

The name of the calendar associted with the event

The unique identifier for the event

The 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=BUSY

Return data from a specific event returned by the query

After 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_BUSY
CALENDAR_EVENT
CALENDAR_QUERY
CALENDAR_WRITE

    Write an event to a calendar

The calendar to write to

A summary of the event

The full event description

The event organizer

The event location

The categories of the event

The priority of the event

The unique identifier for the event

The 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=BUSY

Example: CALENDAR_WRITE(calendar,field1,field2,field3)=val1,val2,val3

The field and value arguments can easily be set/passed using the HASHKEYS() and HASH() functions

The 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_BUSY
CALENDAR_EVENT
CALENDAR_QUERY
CALENDAR_QUERY_RESULT

R/W Fax Detect

Returns 0 or 1

Write yes or no

R/W t38support

Returns 0 or 1

Write yes or no

R/0 Returns caller URL

R/0 Returns caller h323id

R/0 Returns caller dialed digits

R/0 Returns caller email

R/0 Returns callee email

R/0 Returns callee dialed digits

R/0 Returns caller URL

R/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.