alsa extended 19 21 extended extended extended extended dahdi tonezone res_smdi pri ss7 openr2 core 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 logical group 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 logical group associated with this channel. The DAHDI span associated with this channel. The DAHDI channel associated with this channel. core extended res_crypto res_http_websocket deprecated 17 21 Change the dtmfmode for a SIP call. Changes the dtmfmode for a SIP call. Add a SIP parameter to the From header in the outbound call. Adds a parameter to a SIP call placed with DIAL. Use this with care. Adding the wrong tags may jeopardize the SIP dialog. Always returns 0. 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 parameter from the specified SIP header from an incoming INVITE message. If not specified, defaults to 1. This function returns the value of a SIP parameter in a specified header. 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. This function does not access headers from the REFER message if the call was transferred. To obtain the REFER headers, set the dialplan variable GET_TRANSFERRER_DATA to the prefix of the headers of the REFER message that you need to access; for example, X- to get all headers starting with X-. The variable must be set before a call to the application that starts the channel that may eventually transfer back into the dialplan, and must be inherited by that channel, so prefix it with the _ or __ when setting (or set it in the pre-dial handler executed on the new channel). To get all headers of the REFER message, set the value to *. Headers are returned in the form of a dialplan hash TRANSFER_DATA, and can be accessed with the functions HASHKEYS(TRANSFER_DATA) and, e. g., HASH(TRANSFER_DATA,X-That-Special-Header). Please also note that contents of the SDP (an attachment to the SIP request) can't be accessed with this function. SIP_HEADERS 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. This function does not access headers from the REFER message if the call was transferred. To obtain the REFER headers, set the dialplan variable GET_TRANSFERRER_DATA to the prefix of the headers of the REFER message that you need to access; for example, X- to get all headers starting with X-. The variable must be set before a call to the application that starts the channel that may eventually transfer back into the dialplan, and must be inherited by that channel, so prefix it with the _ or __ when setting (or set it in the pre-dial handler executed on the new channel). To get all headers of the REFER message, set the value to *. Headers are returned in the form of a dialplan hash TRANSFER_DATA, and can be accessed with the functions HASHKEYS(TRANSFER_DATA) and, e. g., HASH(TRANSFER_DATA,X-That-Special-Header). Please also note that contents of the SDP (an attachment to the SIP request) can't be accessed with this function. SIP_HEADERS Gets the list of SIP header names from an incoming INVITE message. If specified, only the headers matching the given prefix are returned. Returns a comma-separated list of header names (without values) from the INVITE message that originated the current channel. Multiple headers with the same name are included in the list only once. The returned list can be iterated over using the functions POP() and SIP_HEADER(). For example, ${SIP_HEADERS(Co)} might return Contact,Content-Length,Content-Type. As a practical example, you may use ${SIP_HEADERS(X-)} to enumerate optional extended headers. This function does not access headers from the incoming SIP REFER message; see the documentation of the function SIP_HEADER for how to access them. Please observe that contents of the SDP (an attachment to the SIP request) can't be accessed with this function. SIP_HEADER POP 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 When specified, SIP notity will be sent as a part of an existing dialog. 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. Specifying a prefix of sip: will send the message as a SIP MESSAGE request. The from parameter can be a configured peer name or in the form of "display-name" <URI>. Ignored 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. core core core core core core res_audiosocket extended core portaudio extended core deprecated deprecated deprecated deprecated deprecated deprecated R/O Get the IP address of the peer. R/O Get the source IP address of the peer. R/O Get the source port of the peer. R/O Get the URI from the From: header. R/O Get the URI from the Contact: header. R/O Get the Request-URI from the INVITE header. R/O Get the useragent. R/O Get the name of the peer. R/O 1 if T38 is offered or enabled in this channel, otherwise 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_normdevjitterLocal calculated jitter (normal deviation) local_stdevjitter Local calculated jitter (standard deviation) local_count Number of received packets remote_ssrc Remote SSRC (stream ID) remote_lostpacketsRemote lost packets remote_jitter Remote reported jitter remote_maxjitter Remote calculated jitter (maximum) remote_minjitter Remote calculated jitter (minimum) remote_normdevjitterRemote calculated jitter (normal deviation) remote_stdevjitterRemote calculated jitter (standard deviation) remote_count Number of transmitted 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. extended iksemel res_xmpp openssl core 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 extended ixjuser deprecated 16 19 res_rtp_multicast core extended oss deprecated 16 19 isdnnet misdn suppserv deprecated chan_dahdi 16 19 res_crypto crypto core 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. extended core 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 Get or change the DTMF mode for a SIP call. When read, returns the current DTMF mode When written, sets the current DTMF mode This function uses the same DTMF mode naming as the dtmf_mode configuration option Get or change the on-hold behavior for a SIP call. When read, returns the current moh passthrough mode When written, sets the current moh passthrough mode If yes, on-hold re-INVITEs are sent. If no, music on hold is generated. This function can be used to override the moh_passthrough configuration option W/O: Initiate a session refresh via an UPDATE or re-INVITE on an established media session The type of update to send. Default is invite. Send the session refresh as a re-INVITE. Send the session refresh as an UPDATE. This function will cause the PJSIP stack to immediately refresh the media session for the channel. This will be done using either a re-INVITE (default) or an UPDATE request. This is most useful when combined with the PJSIP_MEDIA_OFFER dialplan function, as it allows the formats in use on a channel to be re-negotiated after call setup. The formats the endpoint supports are not checked or enforced by this function. Using this function to offer formats not supported by the endpoint may result in a loss of media. ; Within some existing extension on an answered channel same => n,Set(PJSIP_MEDIA_OFFER(audio)=!all,g722) same => n,Set(PJSIP_SEND_SESSION_REFRESH()=invite) PJSIP_MEDIA_OFFER Parse an uri and return a type part of the URI. URI to parse The type parameter specifies which URI part to read Display name. URI scheme. User part. Password part. Host part. Port number, or zero. User parameter. Method parameter. Transport parameter. TTL param, or -1. Loose routing param, or zero. Maddr param. Parse an URI and return a specified part of the URI. 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 contact URI where requests are sent. The local URI. Tag in From header The remote URI. Tag in To header The request URI of the incoming INVITE associated with the creation of this channel. The current state of any T.38 fax on this channel. T.38 faxing is disabled on this channel. Asterisk has sent a re-INVITE to the remote end to initiate a T.38 fax. The remote end has sent a re-INVITE to Asterisk to initiate a T.38 fax. A T.38 fax session has been enabled. A T.38 fax session was attempted but was rejected. On inbound calls, the full IP address and port number that the INVITE request was received on. On outbound calls, the full IP address and port number that the INVITE request was transmitted from. On inbound calls, the full IP address and port number that the INVITE request was received from. On outbound calls, the full IP address and port number that the INVITE request was transmitted to. ; Log the current Call-ID same => n,Log(NOTICE, ${CHANNEL(pjsip,call-id)}) ; Log the destination address of the audio stream same => n,Log(NOTICE, ${CHANNEL(rtp,dest)}) ; Store the round-trip time associated with a ; video stream in the CDR field video-rtt same => n,Set(CDR(video-rtt)=${CHANNEL(rtcp,rtt,video)}) extended 19 21 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. pjproject res_pjsip res_pjsip_pubsub res_pjsip_session core res_pktccops extended 19 21 extended core Published when a malicious call ID request arrives. core nbs deprecated 16 19 extended lua extended zlib res_crypto crypto extended Do a DUNDi lookup of a phone number. If not specified the default will be e164. This will do a DUNDi lookup of the given phone number. This function will return the Technology/Resource found in the first result in the DUNDi lookup. If no results were found, the result will be blank. Initiate a DUNDi query. If not specified the default will be e164. This will do a DUNDi lookup of the given phone number. The result of this function will be a numeric ID that can be used to retrieve the results with the DUNDIRESULT function. Retrieve results from a DUNDIQUERY. The identifier returned by the DUNDIQUERY function. This function will retrieve results from a previous use\n" of the DUNDIQUERY function. core 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. core core extended extended res_ael_share extended 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. func_periodic_hook core Record a call and mix the audio during the recording. Use of StopMixMonitor is required to guarantee the audio file is available for processing during dialplan execution. If filename is an absolute path, uses that path, otherwise creates the file in the configured monitoring directory from asterisk.conf. Will be executed when the recording is over. Any strings matching ^{X} will be unescaped to X. All variables will be evaluated at the time MixMonitor is called. Do not use untrusted strings such as CALLERID(num) or CALLERID(name) as part of the command parameters. You risk a command injection attack executing arbitrary commands if the untrusted strings aren't filtered to remove dangerous characters. See function FILTER(). Records the audio on the current channel to the specified file. This application does not automatically answer and should be preceeded by an application such as Answer or Progress(). MixMonitor runs as an audiohook. If a filename passed to MixMonitor ends with .wav49, Asterisk will silently convert the extension to .WAV for legacy reasons. MIXMONITOR_FILENAME will contain the actual filename that Asterisk is writing to, not necessarily the value that was passed in. 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. Raised when monitoring has started on a channel. MixMonitorStop MixMonitor MixMonitor Raised when monitoring has stopped on a channel. MixMonitorStart StopMixMonitor StopMixMonitor Raised when monitoring is muted or unmuted on a channel. Which part of the recording was muted or unmuted: read, write or both (from channel, to channel or both directions). If the monitoring was muted or unmuted: 1 when muted, 0 when unmuted. MixMonitorMute Leave a Voicemail message. This application allows the calling party to leave a message for the specified list of mailboxes. When multiple mailboxes are specified, the greeting will be taken from the first mailbox specified. Dialplan execution will stop if the specified mailbox does not exist. The Voicemail application will exit if any of the following DTMF digits are received: Jump to the o extension in the current dialplan context. Jump to the a extension in the current dialplan context. This application will set the following channel variable upon completion: This indicates the status of the execution of the VoiceMail application. VoiceMailMain Check Voicemail messages. This application allows the calling party to check voicemail messages. A specific mailbox, and optional corresponding context, may be specified. If a mailbox is not provided, the calling party will be prompted to enter one. If a context is not specified, the default context will be used. The VoiceMailMain application will exit if the following DTMF digit is entered as Mailbox or Password, and the extension exists: Jump to the a extension in the current dialplan context. VoiceMail Authenticate with Voicemail passwords. This application behaves the same way as the Authenticate application, but the passwords are taken from voicemail.conf. If the mailbox is specified, only that mailbox's password will be considered valid. If the mailbox is not specified, the channel variable AUTH_MAILBOX will be set with the authenticated mailbox. The VMAuthenticate application will exit if the following DTMF digit is entered as Mailbox or Password, and the extension exists: Jump to the a extension in the current dialplan context. Play a single voice mail msg from a mailbox by msg id. The msg id of the msg to play back. This application sets the following channel variable upon completion: The status of the playback attempt as a text string. Play the name of a voicemail user This application will say the recorded name of the voicemail user specified as the argument to this application. If no context is provided, default is assumed. Similar to the Background() application, playback of the recorded name can be interrupted by entering an extension, which will be searched for in the current context. Returns the selected attribute from a mailbox. If not specified, INBOX is assumed. Returns the selected attribute from the specified mailbox. If context is not specified, defaults to the default context. Where the folder can be specified, common folders include INBOX, Old, Work, Family and Friends. List All Voicemail User Information. Show the status of given voicemail user's info. The context you want to check. The mailbox you want to check. Retrieves the status of the given voicemail user. 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. core 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. core Read an extension into a variable. File to play before reading digits or tone with option i Context in which to match extensions. An integer number of seconds to wait for a digit response. If greater than 0, that value will override the default timeout. Reads a # terminated string of digits from the user into the given variable. Will set READEXTENSTATUS on exit with one of the following statuses: A valid extension exists in ${variable}. No extension was entered in the specified time. Also sets ${variable} to "t". An invalid extension, ${INVALID_EXTEN}, was entered. Also sets ${variable} to "i". Line was not up and the option 's' was specified. Invalid arguments were passed. core Hangs up the requested channel. Hangs up the requested channel. If there are no channels to hangup, the application will report it. deprecated 16 19 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 res_statsd no extended Allow statistics to be passed to the StatsD server from the dialplan. The metric type to be sent to StatsD. Valid metric types are 'g' for gauge, 'c' for counter, 'ms' for timer, and 's' for sets. The name of the variable to be sent to StatsD. Statistic names cannot contain the pipe (|) character. The value of the variable to be sent to StatsD. Values must be numeric. Values for gauge and counter metrics can be sent with a '+' or '-' to update a value after the value has been initialized. Only counters can be initialized as negative. Sets can send a string as the value parameter, but the string cannot contain the pipe character. The value of the sample rate to be sent to StatsD. Sample rates less than or equal to 0 will never be sent and sample rates greater than or equal to 1 will always be sent. Any rate between 1 and 0 will be compared to a randomly generated value, and if it is greater than the random value, it will be sent. This dialplan application sends statistics to the StatsD server specified inside of statsd.conf. deprecated 16 19 Send a URL. Requests client go to URL (IAX2) or sends the URL to the client (other channels). Result is returned in the SENDURLSTATUS channel variable: URL successfully sent to client. Failed to send URL. Client failed to load URL (wait enabled). Channel does not support URL transport. SendURL continues normally if the URL was sent correctly or if the channel does not support HTML transport. Otherwise, the channel is hung up. SendImage SendText res_adsi deprecated 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 core Forks the current Call Data Record for this channel. Causes the Call Data Record engine to fork a new CDR starting from the time the application is executed. The forked CDR will be linked to the end of the CDRs associated with the channel. CDR NoCDR ResetCDR core 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, unless the async option is used. 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. extended Stores DTMF digits transmitted or received on a channel. Must be TX or RX. The StoreDTMF function can be used to obtain digits sent in the TX or RX direction of any channel. The arguments are: var_name: Name of variable to which to append digits. max_digits: The maximum number of digits to store in the variable. Defaults to 0 (no maximum). After reading maximum digits, no more digits will be stored. For example: StoreDTMF(TX,CDR(digits)) StoreDTMF(RX,testvar,24) StoreDTMF(remove) extended Reloads an Asterisk module, blocking the channel until the reload has completed. The full name(s) of the target module(s) or resource(s) to reload. If omitted, everything will be reloaded. The full names MUST be specified (e.g. chan_iax2 to reload IAX2 or pbx_config to reload the dialplan. Reloads the specified (or all) Asterisk modules and reports success or failure. Success is determined by each individual module, and if all reloads are successful, that is considered an aggregate success. If multiple modules are specified and any module fails, then FAILURE will be returned. It is still possible that other modules did successfully reload, however. Sets RELOADSTATUS to one of the following values: Specified module(s) reloaded successfully. Some or all of the specified modules failed to reload. spandsp res_fax no deprecated res_fax 16 19 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 deprecated 16 19 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. extended 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 exceeded, 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 core 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 spandsp extended A Softmodem that connects the caller to a Telnet server. Softmodem(hostname,port,options): Simulates a FSK(V.23) or V.22bis modem. The modem on the other end is connected to the specified server using a simple TCP connection (like Telnet). res_monitor core Queue a call for a call queue. URL will be sent to the called party if the channel supports it. Announcement file(s) to play to agent before bridging call, overriding the announcement(s) configured in queues.conf, if any. 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. NOTE: Macros are deprecated, GoSub should be used instead. Will run a gosub on the called party's channel (the queue member) once the parties are connected. The subroutine execution starts in the named context at the s exten and priority 1. 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_GET_CHANNEL 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_GET_CHANNEL 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_GET_CHANNEL 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_GET_CHANNEL 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_GET_CHANNEL 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_GET_CHANNEL QUEUE_WAITING_COUNT QUEUE_MEMBER_LIST QUEUE_MEMBER_PENALTY Writes to the queue_log file for OutBound calls and updates Realtime Data. Is used at h extension to be able to have all the parameters. Allows you to write Outbound events into the queue log. Example: exten => h,1,QueueUpdate(${QUEUE}, ${UNIQUEID}, ${AGENT}, ${DIALSTATUS}, ${ANSWEREDTIME}, ${DIALEDTIME} | ${DIALEDNUMBER}) 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_GET_CHANNEL QUEUE_WAITING_COUNT QUEUE_MEMBER_LIST QUEUE_MEMBER_PENALTY Provides a count of queue members based on the provided criteria, or updates a queue member's settings. 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_GET_CHANNEL 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_GET_CHANNEL 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_GET_CHANNEL QUEUE_WAITING_COUNT QUEUE_MEMBER_LIST QUEUE_MEMBER_PENALTY Return caller at the specified position in a queue. Returns the caller channel at position in the specified queuename. If position is unspecified the first channel is returned. 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_GET_CHANNEL 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_GET_CHANNEL 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_GET_CHANNEL QUEUE_WAITING_COUNT QUEUE_MEMBER_LIST QUEUE_MEMBER_PENALTY 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. Change priority of a caller on queue. The name of the queue to take action on. The caller (channel) to change priority on queue. Priority value for change for caller on 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. The time when started last paused the queue member. 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. The Wrapup Time of the queue member. If this value is set will override the wrapup time of queue. 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. 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 extended Sends arbitrary MF digits List of digits 0-9,*#ABC to send; also f or F for a flash-hook if the channel supports flash-hook, and w or W for a wink if the channel supports wink. Key pulse and start digits are not included automatically. * is used for KP, # for ST, A for STP, B for ST2P, and C for ST3P. Amount of time to wait in ms between tones. (defaults to 50ms). Duration of each numeric digit (defaults to 55ms). Duration of KP digits (defaults to 120ms). Duration of ST, STP, ST2P, and ST3P digits (defaults to 65ms). Channel where digits will be played It will send all digits or terminate if it encounters an error. SendDTMF Play MF signal on a specific channel. Channel name to send digit to. The MF digit to play. The duration, in milliseconds, of the digit to be played. Plays an MF digit on the specified channel. core Record to a file. Is the format of the file type to be recorded (wav, gsm, etc). Is the number of seconds of silence to allow before returning. Is the maximum recording duration in seconds. If missing or 0 there is no maximum. If filename contains %d, these characters will be replaced with a number incremented by one each time the file is recorded. Use core show file formats to see the available formats on your system User can press # to terminate the recording and continue to the next priority. If the user hangs up during a recording, all data will be lost and the application will terminate. Will be set to the final filename of the recording, without an extension. This is the final status of the 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. res_audiosocket extended Transmit and receive audio between channel and TCP socket UUID is the universally-unique identifier of the call for the audio socket service. This ID must conform to the string form of a standard UUID. Service is the name or IP address and port number of the audio socket service to which this call should be connected. This should be in the form host:port, such as myserver:9019 Connects to the given TCP service, then transmits channel audio over that socket. In turn, audio is received from the socket and sent to the channel. Only audio frames will be transmitted. Protocol is specified at https://wiki.asterisk.org/wiki/display/AST/AudioSocket This application does not automatically answer and should generally be preceeded by an application such as Answer() or Progress(). no core An example number guessing game This simple number guessing application is a template to build other applications from. It shows you the basic structure to create your own Asterisk applications. Options that apply globally to app_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 core Provide directory of voicemail extensions. This is the context within voicemail.conf to use for the Directory. If not specified and searchcontexts=no in voicemail.conf, then default will be assumed. This is the dialplan context to use when looking for an extension that the user has selected, or when jumping to the o or a extension. If not specified, the current context will be used. Only one of the f, l, or b options may be specified. If more than one is specified, then Directory will act as if b was specified. The number of characters for the user to type defaults to 3. This application will present the calling channel with a directory of extensions from which they can search by name. The list of names and corresponding extensions is retrieved from the voicemail configuration file, voicemail.conf. This application will immediately exit if one of the following DTMF digits are received and the extension to jump to exists: 0 - Jump to the 'o' extension, if it exists. * - Jump to the 'a' extension, if it exists. This application will set the following channel variable before completion: Reason Directory application exited. User requested 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 spandsp extended Enable TDD transmit/receive processing on a channel. The TddRx application is used to begin listening for TDD tones from the channel. If TDD tones are detected, the received message will be posted via manager/stasis events for this channel. This application will exit immediately after setting up an audiohook. AUDIOHOOK_INHERIT Send message using TDD tones on the current channel. Sends TDD tones to the channel in the same way as the TddTx manager action. If TDD processing is not enabled via TddRx, will return an error. TddRx TddTx Send a TDD message on a channel. The name of the channel to send on. The message to be sent. NOTE: TDD uses BAUDOT code which limits the characters that can be sent. Invalid characters are silently ignored. This action sends a message via TDD/TTY tones on the current channel. If TDD processing is not enabled on the channel an error will be returned. https://en.wikipedia.org/wiki/Baudot_code#ITA_2_and_US-TTY Raised when a TDD message arrives on a channel. The TDD message received. Raised when TDD processing is added to a channel. Raised when TDD processing is removed from a channel. extended Blind transfer channel(s) to the extension and context provided Specify extension. Optionally specify a context. By default, Asterisk will use the caller channel context. Redirect all channels currently bridged to the caller channel to the specified destination. The result of the application will be reported in the BLINDTRANSFERSTATUS channel variable: Transfer succeeded. Transfer failed. Transfer invalid. Transfer not permitted. osptk openssl extended 19 21 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 extended 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 The pitch of the spaces in (Hz), default is 0 The code type to use (AMERICAN for standard American Morse or INTERNATIONAL for international code. Default is INTERNATIONAL). SayAlpha SayPhonetic core 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. core Echo media, up to 'N' streams of a type, and DTMF back to the calling party The number of streams of a type to echo back. If '0' is specified then all streams of a type are removed. The media type of the stream(s) to add or remove (in the case of "num" being '0'). This can be set to either "audio" or "video" (default). If "num" is empty (i.e. not specified) then this parameter is ignored. If a "num" (the number of streams) is not given then this simply echos back any media or DTMF frames (note, however if '#' is detected then the application exits) read from the calling channel back to itself. This means for any relevant frame read from a particular stream it is written back out to the associated write stream in a one to one fashion. However if a "num" is specified, and if the calling channel allows it (a new offer is made requesting the allowance of additional streams) then any any media received, like before, is echoed back onto each stream. However, in this case a relevant frame received on a stream of the given "type" is also echoed back out to the other streams of that same type. It should be noted that when operating in this mode only the first stream found of the given "type" is allowed from the original offer. And this first stream found is also the only stream of that "type" granted read (send/receive) capabilities in the new offer whereas the additional ones are set to receive only. This does not echo CONTROL, MODEM, or NULL frames. res_adsi deprecated Get ADSI CPE ID. Obtains and displays ADSI CPE ID and other information in order to properly setup dahdi.conf for on-hook operations. extended Sends an email using the system mailer. The recipient and sender info can be customized per invocation, and multiple attachments can be sent. Pipe-separated list of email addresses. The name of the variable contain the body of the message. This should not be the variable itself, only the name of it. Sends an email using the system mailer. Sets MAILSTATUS to one of the following values: Email was successfully sent. This does not necessarily mean delivery will be successful or that the email will not bounce. Email was not successfully sent. res_agi core 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. ReturnIf Gosub StackPop Conditionally return from gosub routine. If expression is true, jumps to the last label on the stack, removing it. The return valueiftrue, if any, is saved in the channel variable GOSUB_RETVAL. If expression is false, and valueiffalse is specified, jumps to the last label on the stack, removing it, and saving valueiffalse in the the channel variable GOSUB_RETVAL. Return 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 context, extension, priority, or label, as specified by which, by going up n frames in the Gosub stack. If suppress is true, then if the number of available stack frames is exceeded, then no error message will be printed. Cause the channel to execute the specified dialplan subroutine. Cause the channel to execute the specified dialplan subroutine, returning to the dialplan with execution of a Return(). 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 core Login an agent. Login an agent to the system. Any agent authentication is assumed to already be done by dialplan. While logged in, the agent can receive calls and will hear the sound file specified by the config option custom_beep when a new call comes in for the agent. Login failures will continue in the dialplan with AGENT_STATUS set. Before logging in, you can setup on the real agent channel the CHANNEL(dtmf_features) an agent will have when talking to a caller and you can setup on the channel running this application the CONNECTEDLINE() information the agent will see while waiting for a caller. AGENT_STATUS enumeration values: The specified agent is invalid. The agent is already logged in. The Agent:AgentId device state is available to monitor the status of the agent. Authenticate Queue AddQueueMember RemoveQueueMember PauseQueueMember UnpauseQueueMember AGENT CHANNEL 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. core Find-Me/Follow-Me application. This application performs Find-Me/Follow-Me functionality for the caller as defined in the profile matching the followmeid parameter in followme.conf. If the specified followmeid profile doesn't exist in followme.conf, execution will be returned to the dialplan and call execution will continue at the next priority. Returns -1 on hangup. dahdi deprecated 16 19 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. extended Start an if branch. Start an If branch. Execution will continue inside the branch if expr is true. EndIf ExitIf End an if branch. Ends the branch begun by the preceding If() application. If ExitIf End an If branch. Exits an If() branch, whether or not it has completed. If EndIf dahdi no extended app_confbridge 19 21 MeetMe conference bridge. The conference number 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. Run admin command for conference confno. Will additionally set the variable MEETMEADMINSTATUS with one of the following values: Invalid arguments. User specified was not found. Another failure occurred. The operation was completed successfully. MeetMe MeetMe conference Administration (channel specific). Run admin command for a specific channel in any conference. Shared Line Appearance Station. Station 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 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. core 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 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(ARG1=${ARG1} ARG2=${ARG2}) 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(ARG1=${ARG1} ARG2=${ARG2}) 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(my_gosub_arg1^my_gosub_arg2))B(default^callee_channel^1(my_gosub_arg1^my_gosub_arg2))) same => n,Hangup() [my_gosub_routine] exten => s,1,NoOp(ARG1=${ARG1} ARG2=${ARG2}) same => n,Playback(hello) same => n,Return() [default] exten => _X.,1,NoOp() same => n,Dial(PJSIP/alice,,U(my_gosub_routine^my_gosub_arg1^my_gosub_arg2)) 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 milliseconds version of the DIALEDTIME variable. This is the amount of time for actual call. This is the milliseconds version of the ANSWEREDTIME variable. This is the time from creating the channel to the first RINGING event received. Empty if there was no ring. This is the milliseconds version of the RINGTIME variable. This is the time from creating the channel to the first PROGRESS event received. Empty if there was no such event. This is the milliseconds version of the PROGRESSTIME variable. 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 Leave a Voicemail message. This application allows the calling party to leave a message for the specified list of mailboxes. When multiple mailboxes are specified, the greeting will be taken from the first mailbox specified. Dialplan execution will stop if the specified mailbox does not exist. The Voicemail application will exit if any of the following DTMF digits are received: Jump to the o extension in the current dialplan context. Jump to the a extension in the current dialplan context. This application will set the following channel variable upon completion: This indicates the status of the execution of the VoiceMail application. VoiceMailMain Check Voicemail messages. This application allows the calling party to check voicemail messages. A specific mailbox, and optional corresponding context, may be specified. If a mailbox is not provided, the calling party will be prompted to enter one. If a context is not specified, the default context will be used. The VoiceMailMain application will exit if the following DTMF digit is entered as Mailbox or Password, and the extension exists: Jump to the a extension in the current dialplan context. VoiceMail Authenticate with Voicemail passwords. This application behaves the same way as the Authenticate application, but the passwords are taken from voicemail.conf. If the mailbox is specified, only that mailbox's password will be considered valid. If the mailbox is not specified, the channel variable AUTH_MAILBOX will be set with the authenticated mailbox. The VMAuthenticate application will exit if the following DTMF digit is entered as Mailbox or Password, and the extension exists: Jump to the a extension in the current dialplan context. Play a single voice mail msg from a mailbox by msg id. The msg id of the msg to play back. This application sets the following channel variable upon completion: The status of the playback attempt as a text string. Play the name of a voicemail user This application will say the recorded name of the voicemail user specified as the argument to this application. If no context is provided, default is assumed. Similar to the Background() application, playback of the recorded name can be interrupted by entering an extension, which will be searched for in the current context. Returns the selected attribute from a mailbox. If not specified, INBOX is assumed. Returns the selected attribute from the specified mailbox. If context is not specified, defaults to the default context. Where the folder can be specified, common folders include INBOX, Old, Work, Family and Friends. List All Voicemail User Information. Show the status of given voicemail user's info. The context you want to check. The mailbox you want to check. Retrieves the status of the given voicemail user. 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. core 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. ConfKick CONFBRIDGE CONFBRIDGE_INFO Kicks channel(s) from the requested ConfBridge. The channel to kick, all to kick all users, or participants to kick all non-admin participants. Default is all. Kicks the requested channel(s) from a conference bridge. Could not kick any users with the provided arguments. Successfully kicked users from specified conference bridge. 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. Raised as part of the ConfbridgeList action response list. The name of the Confbridge conference. Identifies this user as an admin user. Identifies this user as a marked user. Must this user wait for a marked user to join? Does this user get kicked after the last marked user leaves? Is this user waiting for a marked user to join? The current mute status. Is this user talking? The number of seconds the channel has been up. List active conferences. Lists data about all active conferences. ConfbridgeListRooms will follow as separate events, followed by a final event called ConfbridgeListRoomsComplete. Mute a Confbridge user. If this parameter is not a complete channel name, the first channel with this prefix will be used. If this parameter is "all", all channels will be muted. If this parameter is "participants", all non-admin channels will be muted. Unmute a Confbridge user. If this parameter is not a complete channel name, the first channel with this prefix will be used. If this parameter is "all", all channels will be unmuted. If this parameter is "participants", all non-admin channels will be unmuted. Kick a Confbridge user. If this parameter is "all", all channels will be kicked from the conference. If this parameter is "participants", all non-admin channels will be kicked from the conference. Lock a Confbridge conference. Unlock a Confbridge conference. Start recording a Confbridge conference. Start recording a conference. If recording is already present an error will be returned. If RecordFile is not provided, the default record file specified in the conference's bridge profile will be used, if that is not present either a file will automatically be generated in the monitor directory. Stop recording a Confbridge conference. Set a conference user as the single video source distributed to all other participants. If this parameter is not a complete channel name, the first channel with this prefix will be used. extended 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 extended Waits for a specified amount of silence. If not specified, defaults to 1000 milliseconds. If not specified, defaults to 1. Is specified only to avoid an infinite loop in cases where silence is never achieved. Waits for up to silencerequired milliseconds of silence, iterations times. An optional timeout specified the number of seconds to return after, even if we do not receive the specified amount of silence. Use timeout with caution, as it may defeat the purpose of this application, which is to wait indefinitely until silence is detected on the line. This is particularly useful for reverse-911-type call broadcast applications where you need to wait for an answering machine to complete its spiel before playing a message. Typically you will want to include two or more calls to WaitForSilence when dealing with an answering machine; first waiting for the spiel to finish, then waiting for the beep, etc. Examples: WaitForSilence(500,2) will wait for 1/2 second of silence, 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 1000 milliseconds. If not specified, defaults to 1. Is specified only to avoid an infinite loop in cases where silence is never achieved. Waits for up to noiserequired milliseconds of noise, iterations times. An optional timeout specified the number of seconds to return after, even if we do not receive the specified amount of noise. Use timeout with caution, as it may defeat the purpose of this application, which is to wait indefinitely until noise is detected on the line. WaitForSilence res_stasis core 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. core 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(). core 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 core Generates a 1004 Hz test tone at 0dbm (mu-law). Generates a 1004 Hz test tone. By default, this application does not provide a Milliwatt test tone. It simply plays a 1004 Hz tone, which is not suitable for performing a milliwatt test. The m option should be used so that a real Milliwatt test tone is provided. This will include a 1 second silent interval every 10 seconds. Previous versions of this application generated a constant tone at 1000 Hz. If for some reason you would prefer that behavior, supply the o option to get the old behavior. extended Reads a telephone number from a user, terminating dialing against a digit map. The input digits will be stored in the given variable name. Context to use to as the digit map for this dial tone. The digit map context is a dialplan context with extensions (including pattern matches) that should return a non-zero value to conclude dialing on a match. Returning 0 will continue dialing. file(s) to play before reading first digit or tone with option i file(s) to play before reading subsequent 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. This overrides the digit map, and will terminate dialing even if there is no match in the digit map context. 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. Leading digits that should be used to initialize the number dialed. Useful for second dial tones or when additional digits need to be received and use the same digit map. Reads a telephone number from a user into the given variable. Dialing concludes once an extension match is found in context that returns a non-zero number. This application does not automatically answer the channel and should be preceded by Progress or Answer. DISA Read ReadExten core 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. no deprecated app_stack (GoSub) 16 21 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 core 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 core 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 core 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. Emulate receiving DTMF on this channel instead of sending it out. Plays a dtmf digit on the specified channel. extended Streams silence to a channel. The maximum amount of time, in seconds, this application should stream silent audio before dialplan execution continues automatically to the next priority. By default, there is no timeout. Streams silent audio to a channel, for up to a provided number of seconds. This application will send silent audio to a channel, as opposed to applications like Wait which do not. This guarantees that audiohooks will function properly, even if the channel is not bridged to something that is continously sending frames. Wait Stream silent audio on a channel. 1 to enable or empty to disable. Streams silent audio on a channel until disabled. This ensures that audiohooks can be processed constantly even if the channel receives no other frames. ChanSpy extended Block telemarketers with SIT. Comma delimited list of options. Generates special information tone to block telemarketers from calling you. This application will set the following channel variable upon completion: This will contain the last action accomplished by the Zapateller application. Possible values include: core Transfer caller to remote extension. Requests the remote caller be transferred to a given destination. If TECH (SIP, IAX2, 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. No error. SIP example - Error result code. core 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 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. core Delete a family or keytree from the asterisk database. This application will delete a family or keytree from the Asterisk database. DB_DELETE DB core 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. app_cdr core 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, 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 dahdi core 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 extended Virtual Dictation Machine. Start dictation machine using optional base_dir for files. core 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. 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 app_confbridge core 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&..... 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 bridge_holding core Put a call into the holding bridge. Name of the holding bridge to join. This is a handle for BridgeWait only and does not affect the actual bridges that are created. If not provided, the reserved name default will be used. Defines the channel's purpose for entering the holding bridge. Values are case sensitive. The channel will enter the holding bridge to be placed on hold until it is removed from the bridge for some reason. (default) The channel will enter the holding bridge to make announcements to channels that are currently in the holding bridge. While an announcer is present, holding for the participants will be suspended. This application places the incoming channel into a holding bridge. The channel will then wait in the holding bridge until some event occurs which removes it from the holding bridge. This application will answer calls which haven't already been answered. core Play a file. Comma separated list of options 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 extended Asserts that an expression is true. The expression to evaluate. Evaluates expression and continues dialplan execution if the expression is true and ends the call with a warning if it is false (unless the d option is provided). This application can be used to verify functional correctness of dialplans (e.g. dialplan test cases), similar to the assert function in C. For instance, if a certain property is expected to always hold at some point in your dialplan, this application can be used to enforce that. RaiseException core 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 core Join a bridge that contains the specified channel. The current channel joins the bridge containing the channel identified by the channel name, channel name prefix, or channel uniqueid. This application places the incoming channel into the bridge containing the specified channel. The specified channel only needs to be the prefix of a full channel name IE. 'PJSIP/cisco0001'. This application sets the following channel variable upon completion: The result of the bridge attempt as a text string. deprecated 16 19 Play an NBS local stream. Executes nbscat to listen to the local NBS stream. User can exit by pressing any key. core core 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 events are send to the user If events are enabled for this bridge and this option is set, users will receive events like join, leave, talking, etc. via text messages. For users accessing the bridge via chan_pjsip, this means in-dialog MESSAGE messages. This is most useful for WebRTC participants where the browser application can use the messages to alter the user interface. Sets if events are echoed back to the user that triggered them If events are enabled for this user and this option is set, the user will receive events they trigger, talking, mute, etc. If not set, they will not receive their own events. 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 silence necessary to declare talking stopped. The time in milliseconds of sound falling below the dsp_talking_threshold option when a user is considered to stop 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. 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 milliseconds of silence a user may generate during natural speech. Valid values are 1 through 2^31. Average magnitude threshold to determine talking. The minimum average magnitude per sample in a frame for the DSP to consider talking/noise present. A value below this level is considered silence. 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 high the user will hear himself 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 low 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 high the user's speech will get discarded as they will be considered silent. Valid values are 1 through 2^15. 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. Sets if text messages are sent to the user. If text messaging is enabled for this user then text messages will be sent to it. These may be events or from other participants in the conference bridge. If disabled then no text messages are sent to the user. Sets if a user's channel should be answered if currently unanswered. 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. Set the maximum native sample rate for mixing the conference Sets the maximum native sample rate the conference is mixed at. This is set to not have a maximum by default. If a sample rate is specified, though, the native sample rate will never exceed it. 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. If true binaural conferencing with stereo audio is active Activates binaural mixing for a conference bridge. Binaural features are disabled by default. 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 to 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. Append the start time to the record_file name so that it is unique. When record_file_timestamp is set to yes, the start time is appended to record_file so that the filename is unique. This allows you to specify a record_file but not overwrite existing recordings. Pass additional options to MixMonitor when recording Pass additional options to MixMonitor when record_conference is set to yes. See MixMonitor for available options. Execute a command after recording ends Executes the specified command when recording ends. Any strings matching ^{X} will be unescaped to X. All variables will be evaluated at the time ConfBridge is called. 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. Selective Forwarding Unit - Sets multi-stream operation for a multi-party video conference. 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 binaural auudio is turned on. The sound played when the binaural audio is turned 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. Sets the amount of time in milliseconds after sending a video update to discard subsequent video updates Sets the amount of time in milliseconds after sending a video update request that subsequent video updates should be discarded. This means that if we send a video update we will discard any other video update requests until after the configured amount of time has elapsed. This prevents flooding of video update requests from clients. Sets the interval in milliseconds that a combined REMB frame will be sent to video sources Sets the interval in milliseconds that a combined REMB frame will be sent to video sources. This is done by taking all REMB frames that have been received since the last REMB frame was sent, making a combined value, and sending it to the source. A REMB frame contains receiver estimated maximum bitrate information. By creating a combined REMB frame the sender of video can be influenced on the bitrate they choose, allowing better quality for all receivers. Sets how REMB reports are generated from multiple sources Sets how REMB reports are combined from multiple sources to form one. A REMB report consists of information about the receiver estimated maximum bitrate. As a source stream may be forwarded to multiple receivers the reports must be combined into a single one which is sent to the sender. The average of all estimated maximum bitrates is taken and sent to the sender. The lowest estimated maximum bitrate is forwarded to the sender. The highest estimated maximum bitrate is forwarded to the sender. The average of all estimated maximum bitrates is taken from all receivers in the bridge and a single value is sent to each sender. The lowest estimated maximum bitrate of all receivers in the bridge is taken and sent to each sender. The highest estimated maximum bitrate of all receivers in the bridge is taken and sent to each sender. The bitrate configured in remb_estimated_bitrate is sent to each sender. remb_estimated_bitrate Sets the estimated bitrate sent to each participant in REMB reports When remb_behavior is set to force, this options sets the estimated bitrate (in bits per second) sent to each participant in REMB reports. remb_behavior Enables events for this bridge If enabled, recipients who joined the bridge via a channel driver that supports Enhanced Messaging (currently only chan_pjsip) will receive in-dialog messages containing a JSON body describing the event. The Content-Type header will be text/x-ast-confbridge-event. This feature must also be enabled in user profiles. 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. Toggle turning on and off binaural audio processing. 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 core core core core core 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. The joining mute status. 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 core no extended Say a noun in declined form in order to count things The number of things File name stem for the noun that is 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 core 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, DTMF, or the name of a custom dynamic logging level. Output text message. Sends an arbitrary text message to a selected log level. extended Wait (sleep) until the given condition is true. Specifies the character in the expression used to replace the $ character. This character should not be used anywhere in the expression itself. A modified logical expression with the $ characters replaced by replacementchar. This is necessary to pass the expression itself into the application, rather than its initial evaluation. The maximum amount of time, in seconds, this application should wait for a condition to become true before dialplan execution continues automatically to the next priority. By default, there is no timeout. The frequency, in seconds, of polling the condition, which can be adjusted depending on how time-sensitive execution needs to be. By default, this is 0.05. Waits until expression evaluates to true, checking every interval seconds for up to timeout. Default is evaluate expression every 50 milliseconds with no timeout. same => n,WaitForCondition(#,#["#{condition}"="1"],40,0.5) Sets WAITFORCONDITIONSTATUS to one of the following values: Condition evaluated to true before timeout expired. Invalid argument. Timeout elapsed without condition evaluating to true. Channel hung up before condition became true. extended Communicates with SMS service centres and SMS capable analogue phones. The name of the queue used in /var/spool/asterisk/sms 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. no extended Attempts to reclaim unused heap memory. Attempts to release free memory from the heap. This application is typically used before the Systemapplication or the SHELL function if system memory conditions prevent these from succeeding ordinarily. This application may be used to diagnose this memory issue and prevent these calls from failing until the cause of the memory issue is found. You should also build Asterisk with MALLOC_DEBUG to troubleshoot memory issues. Some memory was released back to the system. No memory could be released back to the system. This application is not supported on this system. core Send a Text Message on a channel. Sends text to the current channel. current channel could be the caller or callee depending on the context in which this application is called. The following variables can be set: If set and this channel supports enhanced messaging, this value will be used as the From display name. If set and this channel supports enhanced messaging, this value will be used as the To display name. If set and this channel supports enhanced messaging, this value will be used as the message Content-Type. If not specified, the default of text/plain will be used. Warning: Messages of types other than text/* cannot be sent via channel drivers that do not support Enhanced Messaging. An attempt to do so will be ignored and will result in the SENDTEXTSTATUS variable being set to UNSUPPORTED. If set this value will be used as the message body and any text supplied as a function parameter will be ignored. Result of transmission will be stored in the following variables: No message sent. Message body sent without attributes because the channel driver doesn't support enhanced messaging. The message was sent using enhanced messaging. Transmission succeeded. Transmission failed. Text transmission not supported by channel. The text encoding and transmission method is completely at the discretion of the channel driver. chan_pjsip will use in-dialog SIP MESSAGE messages always. chan_sip will use T.140 via RTP if a text media type was negotiated and in-dialog SIP MESSAGE messages otherwise. Examples: same => n,SendText(Your Text Here) If the channel driver supports enhanced messaging (currently only chan_pjsip), you can set additional variables: same => n,Set(SENDTEXT_FROM_DISPLAYNAME=Really From Bob) same => n,SendText(Your Text Here) same => n,Set(SENDTEXT_CONTENT_TYPE=text/json) same => n,SendText({"foo":a, "bar":23}) same => n,Set(SENDTEXT_CONTENT_TYPE=text/json) same => n,Set(SENDTEXT_BODY={"foo":a, "bar":23}) same => n,SendText() SendImage SendURL jack resample extended Jack Audio Connection Kit When executing this application, two jack ports will be created; one input and one output. Other applications can be hooked up to these ports to access audio coming from, or being send to the channel. extended 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 extended 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(). extended Attended transfer to the extension provided and TRANSFER_CONTEXT Specify extension. Queue up attended transfer to the specified extension in the TRANSFER_CONTEXT. Note that the attended transfer only work when two channels have answered and are bridged together. Make sure to set Attended Transfer DTMF feature atxfer and attended transfer is permitted. The result of the application will be reported in the ATTENDEDTRANSFERSTATUS channel variable: Transfer successfully queued. Transfer failed. Transfer not permitted. extended 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). res_speech core Create a Speech Structure. This application creates information to be used by all the other applications. It must be called before doing any speech recognition activities such as activating a grammar. It takes the engine name to use as the argument, if not specified the default engine will be used. Sets the ERROR channel variable to 1 if the engine cannot be used. Activate a grammar. This activates the specified grammar to be recognized by the engine. A grammar tells the speech recognition engine what to recognize, and how to portray it back to you in the dialplan. The grammar name is the only argument to this application. Hangs up the channel on failure. If this is not desired, use TryExec. Start recognizing voice in the audio stream. Tell the speech recognition engine that it should start trying to get results from audio being fed to it. Hangs up the channel on failure. If this is not desired, use TryExec. Play a sound file and wait for speech to be recognized. Timeout integer in seconds. Note the timeout will only start once the sound file has stopped playing. This application plays a sound file and waits for the person to speak. Once they start speaking playback of the file stops, and silence is heard. Once they stop talking the processing sound is played to indicate the speech recognition engine is working. Once results are available the application returns and results (score and text) are available using dialplan functions. The first text and score are ${SPEECH_TEXT(0)} AND ${SPEECH_SCORE(0)} while the second are ${SPEECH_TEXT(1)} and ${SPEECH_SCORE(1)}. The first argument is the sound file and the second is the timeout integer in seconds. Hangs up the channel on failure. If this is not desired, use TryExec. Deactivate a grammar. The grammar name to 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. core Directed extension call pickup. Specification of the pickup target. Additional specifications of pickup targets. This application can pickup a specified ringing channel. The channel to pickup can be specified in the following ways. 1) If no extension targets are specified, the application will pickup a channel matching the pickup group of the requesting channel. 2) If the extension is specified with a context of the special string PICKUPMARK (for example 10@PICKUPMARK), the application will pickup a channel which has defined the channel variable PICKUPMARK with the same value as extension (in this example, 10). 3) If the extension is specified with or without a context, the channel with a matching extension and context will be picked up. If no context is specified, the current context will be used. The extension is typically set on matching channels by the dial application that created the channel. The context is set on matching channels by the channel driver for the device. Pickup a ringing channel. List of channel names or channel uniqueids to pickup if ringing. For example, a channel name could be SIP/bob or SIP/bob-00000000 to find SIP/bob-00000000. Pickup a specified channel if ringing. core Play a file with fast forward and rewind. This is number of milliseconds to skip when rewinding or fast-forwarding. Fast-forward when this DTMF digit is received. (defaults to #) Rewind when this DTMF digit is received. (defaults to *) Stop playback when this DTMF digit is received. Pause playback when this DTMF digit is received. Restart playback when this DTMF digit is received. This application will play back the given filename. It sets the following channel variables upon completion: Contains the status of the attempt as a text 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 no extended 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. extended Waits for a given frame type to be received on a channel. The type of frame for which to wait. The following frame types may be used: The following CONTROL frames may also be used: The number of seconds to wait for the specified type of frame to be received, if greater than 0. Can be floating point. Default is no timeout (wait forever). The number of frames of this type that must be received before dialplan execution continues, if the timer has not yet expired. Waits for a specified frame type to be received before dialplan execution continues, with a configurable timeout. This is useful if the channel needs to wait for a certain type of control frame to be received in order for call setup or progression to continue. This is the status of waiting for the frame. exten => _X!,1,Progress() same => n,WaitForFrame(WINK,10) ; wait up to 10s for a wink on the channel same => n,GotoIf($["${WAITFORFRAMESTATUS}" != "SUCCESS"]?fail,s,1) same => n,SendMF(*${EXTEN}#) SendFrame ReceiveMF SendMF Sends an arbitrary control frame on a channel. The type of frame for which to wait. The following CONTROL frames may be sent: Sends an arbitrary control frame on a channel. same => n,SendFrame(WINK) WaitForFrame ReceiveMF SendMF core Authenticate a user Password the user should know 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 Leave a Voicemail message. This application allows the calling party to leave a message for the specified list of mailboxes. When multiple mailboxes are specified, the greeting will be taken from the first mailbox specified. Dialplan execution will stop if the specified mailbox does not exist. The Voicemail application will exit if any of the following DTMF digits are received: Jump to the o extension in the current dialplan context. Jump to the a extension in the current dialplan context. This application will set the following channel variable upon completion: This indicates the status of the execution of the VoiceMail application. VoiceMailMain Check Voicemail messages. This application allows the calling party to check voicemail messages. A specific mailbox, and optional corresponding context, may be specified. If a mailbox is not provided, the calling party will be prompted to enter one. If a context is not specified, the default context will be used. The VoiceMailMain application will exit if the following DTMF digit is entered as Mailbox or Password, and the extension exists: Jump to the a extension in the current dialplan context. VoiceMail Authenticate with Voicemail passwords. This application behaves the same way as the Authenticate application, but the passwords are taken from voicemail.conf. If the mailbox is specified, only that mailbox's password will be considered valid. If the mailbox is not specified, the channel variable AUTH_MAILBOX will be set with the authenticated mailbox. The VMAuthenticate application will exit if the following DTMF digit is entered as Mailbox or Password, and the extension exists: Jump to the a extension in the current dialplan context. Play a single voice mail msg from a mailbox by msg id. The msg id of the msg to play back. This application sets the following channel variable upon completion: The status of the playback attempt as a text string. Play the name of a voicemail user This application will say the recorded name of the voicemail user specified as the argument to this application. If no context is provided, default is assumed. Similar to the Background() application, playback of the recorded name can be interrupted by entering an extension, which will be searched for in the current context. Returns the selected attribute from a mailbox. If not specified, INBOX is assumed. Returns the selected attribute from the specified mailbox. If context is not specified, defaults to the default context. Where the folder can be specified, common folders include INBOX, Old, Work, Family and Friends. List All Voicemail User Information. Show the status of given voicemail user's info. The context you want to check. The mailbox you want to check. Retrieves the status of the given voicemail user. 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. extended 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. extended Interfaces with an external IVR application. Either forks a process to run given command or makes a socket to connect to given host and starts a generator on the channel. The generator's play list is controlled by the external application, which can add and clear entries via simple commands issued over its stdout. The external application will receive all DTMF events received on the channel, and notification if the channel is hung up. The received on the channel, and notification if the channel is hung up. The application will not be forcibly terminated when the channel is hung up. For more information see doc/AST.pdf. core 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 extended Receive Mini-Voicemail and forward via e-mail. Voicemail username Voicemail domain 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 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 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 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. extended Check channel availability 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. Optional extra devices to check If you need more than one enter them as Technology2/Resource2&Technology3/Resource3&..... 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 core 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. core Listen to a channel, and optionally whisper into it. This application is used to listen to the audio from an Asterisk channel. This includes the audio coming in and out of the channel being spied on. If the chanprefix parameter is specified, only channels beginning with this string will be spied upon. While spying, the following actions may be performed: - Dialing # cycles the volume level. - Dialing * will stop spying and look for another channel to spy on. - Dialing a series of digits followed by # builds a channel name to append to chanprefix. For example, executing ChanSpy(Agent) and then dialing the digits '1234#' while spying will begin spying on the channel 'Agent/1234'. Note that this feature will be overridden if the 'd' or 'u' options are used. The X option supersedes the three features above in that if a valid single digit extension exists in the correct context ChanSpy will exit to it. This also disables choosing a channel based on chanprefix and a digit sequence. ExtenSpy ChanSpyStart ChanSpyStop Listen to a channel, and optionally whisper into it. Specify extension. Optionally specify a context, defaults to default. This application is used to listen to the audio from an Asterisk channel. This includes the audio coming in and out of the channel being spied on. Only channels created by outgoing calls for the specified extension will be selected for spying. If the optional context is not supplied, the current channel's context will be used. While spying, the following actions may be performed: - Dialing # cycles the volume level. - Dialing * will stop spying and look for another channel to spy on. The X option supersedes the three features above in that if a valid single digit extension exists in the correct context ChanSpy will exit to it. This also disables choosing a channel based on chanprefix and a digit sequence. 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 extended Tone sweep test Starting frequency. Default is 100. Ending frequency. Default is 3500. Total time for sweep, in seconds. Default is 10 seconds. Volume reduction factor. Higher number equals softer tone sweep. Default is 1 (loudest). Generates an ascending or descending tone sweep (chirp) between two frequencies. PlayTones core 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. 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 core codec2 core core core dahdi core gsm core core core core speex speex_preprocess speexdsp core core ilbc core core vorbis ogg core core extended core core core core core speex ogg extended core core core core core core core core res_odbc generic_odbc core extended radius extended freetds extended res_odbc generic_odbc extended sqlite3 extended core 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. pgsql extended syslog no deprecated 16 19 core beanstalk extended radius extended sqlite3 extended pgsql extended beanstalk extended core core 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. freetds extended res_odbc generic_odbc core core core core res_monitor core core core extended Apply a notch filter to a channel. Must be the frequency to attenuate. The NOTCH_FILTER function attenuates a specified frequency using the provided bandwidth. For example: Set(NOTCH_FILTER(2600,t)=10.0) Set(NOTCH_FILTER(1004)=5.0) Set(NOTCH_FILTER(2400,r)=15.0) Set(NOTCH_FILTER(1004,r)=10.0) Set(NOTCH_FILTER(1004,d)=) extended Returns the contents of a JSON array at a specified key. The JSON_DECODE function parses a JSON string and returns a value by key. If the key cannot be found, an empty string is returned. CURL core 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 core 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. core 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. core Count the voicemails in a specified mailbox or mailboxes. A mailbox or list of mailboxes 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)}) An ampersand-separated list of mailboxes may be specified to count voicemails in multiple mailboxes. If a folder is specified, this will apply to all mailboxes specified. same => n,NoOp(${VMCOUNT(1234@default&1235@default&1236@default,INBOX)}) pjproject res_pjsip core 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. core 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. 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. extended Gets or sets variables on any arbitrary channel that exists. Variable name The complete channel name: SIP/12-abcd1234. Allows access to any existing channel if it exists. This is a potentially dangerous function if not used carefully, and the MASTER_CHANNEL and SHARED functions should be used instead if possible. res_curl curl core Retrieve content from a remote web or ftp server The full URL for the resource to retrieve. Read Only If specified, an HTTP POST will be performed with the content of post-data, instead of an HTTP GET (default). When this function is read, a HTTP GET (by default) will be used to retrieve the contents of the provided url. The contents are returned as the result of the function. exten => s,1,Verbose(0, ${CURL(http://localhost:8088/static/astman.css)}) When this function is written to, a HTTP GET will be used to retrieve the contents of the provided url. The value written to the function specifies the destination file of the cURL'd resource. exten => s,1,Set(CURL(http://localhost:8088/static/astman.css)=/var/spool/asterisk/tmp/astman.css)) If live_dangerously in asterisk.conf is set to no, this function can only be written to from the dialplan, and not directly from external protocols. Read operations are unaffected. 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 Whether or not to follow HTTP 3xx redirects (boolean) 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) Add HTTP header. Multiple calls add multiple headers. Setting of any header will remove the default "Content-Type application/x-www-form-urlencoded" For HTTP(S) URIs, number of seconds to wait for a server response Maximum number of redirects to follow. The default is -1, which allows for unlimited redirects. This only makes sense when followlocation is also set. 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. A comma separated list of HTTP response codes to be treated as errors Options may be set globally or per channel. Per-channel settings will override global settings. Only HTTP headers are added instead of overriding CURL HASH core 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. Inserts a substring between each character in a string. Inserts a substring find-string between each character in varname. The replacement only occurs in the output. The original variable is not altered. same => n,Set(digits=5551212) same => n,SendDTMF(${STRBETWEEN(digits,w)) ; this will send 5w5w5w1w2w1w2 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". core 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. core 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. extended Scrambles audio on a channel. Must be TX or RX to limit to a specific direction, or both for both directions. remove will remove an existing scrambler. Scrambles audio on a channel using whole spectrum inversion. This is not intended to be used for securely scrambling audio. It merely renders obfuscates audio on a channel to render it unintelligible, as a privacy enhancement. ChanSpy core Performs Mathematical Functions. Is of the form: number1opnumber2 where the possible values for op are: +,-,/,*,%,<<,>>,^,AND,OR,XOR,<,>,<=,>=,== (and behave as their C equivalents) Wanted type of result: f, float - float(default) i, int - 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 Returns the minimum of two numbers. Returns the minimum of two numbers num1 and num2. Example: Set(min=${MIN(7,4)}); Sets the min variable equal to 4. Returns the maximum of two numbers. Returns the maximum of two numbers num1 and num2. Example: Set(max=${MAX(4,7)}); Sets the max variable equal to 7. Returns absolute value of a number. Returns the absolute value of a number num. Example: Set(absval=${ABS(-13)}); Sets the absval variable equal to 13. extended Returns the ampersand-delimited file names that would be played by the Say applications (e.g. SayAlpha, SayDigits). The value to be translated to filenames. Say application type. Files played by SayAlpha(). Default if none is specified. Files played by SayDigits(). Files played by SayMoney(). Currently supported for English and US dollars only. Files played by SayNumber(). Currently supported for English only. Files played by SayOrdinal(). Currently supported for English only. Files played by SayPhonetic(). Returns the files that would be played by a Say application. These filenames could then be passed directly into Playback, BackGround, Read, Queue, or any application which supports playback of multiple ampersand-delimited files. same => n,Read(response,${SAYFILES(123,number)}) SayAlpha SayDigits SayMoney SayNumber SayOrdinal SayPhonetic core 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)}) core 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. 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)}) core 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 core 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. res_odbc generic_odbc core 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})}' pjproject res_pjsip core 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. core Computes an MD5 digest. Computes an MD5 digest. core 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 The allowable values for the num-pres, name-pres, and pres fields are the following: 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 The allowable values for the num-pres, name-pres, and pres fields are the following: 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 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 core 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 core 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. speex speex_preprocess speexdsp core 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) core 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 core 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. 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. core 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. core Add a Jitterbuffer to the Read side of the channel. This dejitters the audio stream before it reaches the Asterisk core. This is a write only function. Jitterbuffers are constructed in two different ways. The first always take four arguments: max_size, resync_threshold, target_extra, and sync_video. 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. sync_video: This option enables video synchronization with the audio stream. It can be turned on and off. Defaults to off. exten => 1,1,Set(JITTERBUFFER(fixed)=default) exten => 1,1,Set(JITTERBUFFER(fixed)=200) exten => 1,1,Set(JITTERBUFFER(fixed)=200,,,yes) exten => 1,1,Set(JITTERBUFFER(fixed)=200,1500) exten => 1,1,Set(JITTERBUFFER(adaptive)=default) exten => 1,1,Set(JITTERBUFFER(adaptive)=200,,60) exten => 1,1,Set(JITTERBUFFER(adaptive)=200,,,yes) 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. core 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 app_chanspy func_cut func_groupcount func_uri core 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. core 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 extended 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 core 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. pjproject res_pjsip core 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. The RTT of the last qualify Status of the contact core 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. core 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. Checks if the specified channel exists. The name or unique ID of the channel to check. Returns 1 if the channel name_or_uid exists, 0 if not. Gets or sets variables on the master channel Allows access to the oldest channel associated with the current channel if it still exists. If the channel is the master channel or the master channel no longer exists then access local channel variables instead. In other words, the master channel is the channel identified by the channel's linkedid. 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/O Whether or not the channel is onhold. (1/0) 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 returns the channel responsible for hangup. R/O returns the internal application name. R/O returns the application data if available. R/O returns the extension for an outbound channel. R/O returns the context for an outbound channel. R/O returns the channel name for an outbound channel. R/O returns the channel uniqueid. R/O returns the linkedid if available, otherwise returns the uniqueid. R/W The maximum number of forwards allowed. R/O Call identifier log tag associated with the channel e.g., [C-00000000]. Gets/sets various pieces of information about the channel, additional item may be available from the channel driver; see its documentation for details. Any item requested that is not available on the current channel will return an empty string. ; Push a hangup handler subroutine existing at dialplan ; location default,s,1 onto the current channel same => n,Set(CHANNEL(hangup_handler_push)=default,s,1) ; Set the current tonezone to Germany (de) same => n,Set(CHANNEL(tonezone)=de) ; Set the allowed maximum number of forwarding attempts same => n,Set(CHANNEL(max_forwards)=10) ; If this channel is ejected from its next bridge, and if ; the channel is not hung up, begin executing dialplan at ; location default,after-bridge,1 same => n,Set(CHANNEL(after_bridge_goto)=default,after-bridge,1) ; Log the current state of the channel same => n,Log(NOTICE, This channel is: ${CHANNEL(state)}) extended Evaluates the contents of a dialplan extension and returns it as a string. The EVAL_EXTEN function looks up a dialplan entry by context,extension,priority, evaluates the contents of a Return statement to resolve any variable or function references, and returns the result as a string. You can use this function to create simple user-defined lookup tables or user-defined functions. [call-types] exten => _1NNN,1,Return(internal) exten => _NXXNXXXXXX,1,Return(external) [udf] exten => calleridlen,1,Return(${LEN(${CALLERID(num)})}) [default] exten => _X!,1,Verbose(Call type ${EVAL_EXTEN(call-types,${EXTEN},1)} - ${EVAL_EXTEN(udf,calleridlen,1)}) Any variables in the evaluated data will be resolved in the context of that extension. For example, ${EXTEN} would refer to the EVAL_EXTEN extension, not the extension in the context invoking the function. This behavior is similar to other applications, e.g. Gosub. same => n,Read(input,${EVAL_EXTEN(prompts,${CALLERID(num)},1)}) [prompts] exten => _X!,1,Return(default) exten => _20X,1,Return(welcome) exten => _2XX,1,Return(${DB(promptsettings/${EXTEN})}) exten => _3XX,1,Return(${ODBC_MYFUNC(${EXTEN})}) Extensions on which EVAL_EXTEN is invoked are not different from other extensions. However, the application at that extension is not executed. Only the application data is parsed and evaluated. A limitation of this function is that the application at the specified extension isn't actually executed, and thus unlike a Gosub, you can't pass arguments in the EVAL_EXTEN function. EVAL core 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. core 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) core 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 core 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. core 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 extended 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. iconv core 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. core Get or Set a presence state. The provider of the presence, such as CustomPresence Which field of the presence state information is wanted. The PRESENCE_STATE function can be used to retrieve the presence from any presence provider. For example: NoOp(SIP/mypeer has presence ${PRESENCE_STATE(SIP/mypeer,value)}) NoOp(Conference number 1234 has presence message ${PRESENCE_STATE(MeetMe:1234,message)}) The PRESENCE_STATE function can also be used to set custom presence state from the dialplan. The CustomPresence: prefix must be used. For example: Set(PRESENCE_STATE(CustomPresence:lamp1)=away,temporary,Out to lunch) Set(PRESENCE_STATE(CustomPresence:lamp2)=dnd,,Trying to get work done) Set(PRESENCE_STATE(CustomPresence:lamp3)=xa,T24gdmFjYXRpb24=,,e) Set(BASE64_LAMP3_PRESENCE=${PRESENCE_STATE(CustomPresence:lamp3,subtype,e)}) You can subscribe to the status of a custom presence state using a hint in the dialplan: exten => 1234,hint,,CustomPresence:lamp1 The possible values for both uses of this function are: not_set | unavailable | available | away | xa | chat | dnd extended Return the name of the oldest alive channel in an AstDB family where the values correspond to channels. Returns the key corresponding to the first channel that is still alive in a DB family or comma-separated list of DB families of keys corresponding to sequentially ordered IDs and values corresponding to channel names or unique IDs. Channels that no longer exist will be automatically purged if they are older than the first match. If no match is found or the DB family does not exist, an empty string is returned. This function is designed to facilitate easy search operations when channels are stored in AstDB and the oldest existing channel needs to be found. CHANNEL_EXISTS DB_KEYS Deletes all entries in a family or families whose values are channels that no longer exist. AstDB families. Individual families can be pipe-separated to delete an entry with the same key in the second family if an entry in the first family is deleted (synchronized delete). Iterates through a DB family or comma-separated list of DB families and deletes any key-value pairs where the value is no longer a valid channel name or unique ID. Returns the number of key/value pairs that were deleted from the database. CHANNEL_EXISTS DB_KEYS DB_DELETE DB_CHANNEL_PRUNE_TIME Deletes all entries in a DB family or families whose keys are epoch times older than the specified epoch. Note that unlike the other DB_CHANNEL functions, this requires that keys follow a certain format (i.e. that they correspond to an epoch timestamp). AstDB families. Individual families can be pipe-separated to delete an entry with the same key in the second family if an entry in the first family is deleted (synchronized delete). Iterates through a DB family or comma-separated list of DB families and deletes any key-value pairs where the key is an epoch timestamp older than a specified epoch. This function should NOT be used if keys do not correspond to epochs. CHANNEL_EXISTS DB_KEYS DB_DELETE DB_CHANNEL_PRUNE core 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 core 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. The format parameter may be used to delimit the type of line terminators in line mode. Read and write text file in character and line mode. Examples: Read mode (byte): ;reads the entire content of the file. Set(foo=${FILE(/tmp/test.txt)}) ;reads from the 11th byte to the end of the file (i.e. skips the first 10). Set(foo=${FILE(/tmp/test.txt,10)}) ;reads from the 11th to 20th byte in the file (i.e. skip the first 10, then read 10 bytes). Set(foo=${FILE(/tmp/test.txt,10,10)}) Read mode (line): ; reads the 3rd line of the file. Set(foo=${FILE(/tmp/test.txt,3,1,l)}) ; reads the 3rd and 4th lines of the file. Set(foo=${FILE(/tmp/test.txt,3,2,l)}) ; reads from the third line to the end of the file. Set(foo=${FILE(/tmp/test.txt,3,,l)}) ; reads the last three lines of the file. Set(foo=${FILE(/tmp/test.txt,-3,,l)}) ; reads the 3rd line of a DOS-formatted file. Set(foo=${FILE(/tmp/test.txt,3,1,l,d)}) Write mode (byte): ; truncate the file and write "bar" Set(FILE(/tmp/test.txt)=bar) ; Append "bar" Set(FILE(/tmp/test.txt,,,a)=bar) ; Replace the first byte with "bar" (replaces 1 character with 3) Set(FILE(/tmp/test.txt,0,1)=bar) ; Replace 10 bytes beginning at the 21st byte of the file with "bar" Set(FILE(/tmp/test.txt,20,10)=bar) ; Replace all bytes from the 21st with "bar" Set(FILE(/tmp/test.txt,20)=bar) ; Insert "bar" after the 4th character Set(FILE(/tmp/test.txt,4,0)=bar) Write mode (line): ; Replace the first line of the file with "bar" Set(FILE(/tmp/foo.txt,0,1,l)=bar) ; Replace the last line of the file with "bar" Set(FILE(/tmp/foo.txt,-1,,l)=bar) ; Append "bar" to the file with a newline Set(FILE(/tmp/foo.txt,,,al)=bar) If live_dangerously in asterisk.conf is set to no, this function can only be executed from the dialplan, and not directly from external protocols. FILE_COUNT_LINE FILE_FORMAT Obtains the number of lines of a text file. Format may be one of the following: If not specified, an attempt will be made to determine the newline format type. Returns the number of lines, or -1 on error. If live_dangerously in asterisk.conf is set to no, this function can only be executed from the dialplan, and not directly from external protocols. 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 Return the name of a file. Return the base file name, given a full file path. same => n,Set(basename=${BASENAME(/etc/asterisk/extensions.conf)}) same => n,NoOp(${basename}) ; outputs extensions.conf DIRNAME Return the directory of a file. Return the directory of a file, given a full file path. same => n,Set(dirname=${DIRNAME(/etc/asterisk/extensions.conf)}) same => n,NoOp(${dirname}) ; outputs /etc/asterisk BASENAME core 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 core Raises notifications when Asterisk detects silence or talking on a channel. The TALK_DETECT function enables events on the channel it is applied to. These events can be emited over AMI, ARI, and potentially other Asterisk modules that listen for the internal notification. The function has two parameters that can optionally be passed when set on a channel: dsp_talking_threshold and dsp_silence_threshold. dsp_talking_threshold is the time in milliseconds of sound above what the dsp has established as base line silence for a user before a user is considered to be talking. By default, the value of silencethreshold from dsp.conf is used. If this value is set too tight events may be falsely triggered by variants in room noise. Valid values are 1 through 2^31. dsp_silence_threshold is the time in milliseconds of sound falling within what the dsp has established as baseline silence before a user is considered be silent. If this value is set too low events indicating the user has stopped talking may get falsely sent out when the user briefly pauses during mid sentence. The best way to approach this option is to set it slightly above the maximum amount of ms of silence a user may generate during natural speech. By default this value is 2500ms. Valid values are 1 through 2^31. Example: same => n,Set(TALK_DETECT(set)=) ; Enable talk 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 core 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. core 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. extended Drops specific frame types in the TX or RX direction on a channel. List of frame types to be dropped for the specified direction. Direction can be TX or RX. The TX direction will prevent Asterisk from sending frames to a channel, and the RX direction will prevent Asterisk from receiving frames from a channel. Subsequent calls to this function will replace previous settings, allowing certain frames to be dropped only temporarily, for instance. Below are the different types of frames that can be dropped. Other actions may need to be taken in conjunction with use of this function: for instance, if you drop ANSWER control frames, you should explicitly use Progress() for your call or undesired behavior may occur. The following CONTROL frames can also be dropped: Examples: exten => 1,1,Set(FRAME_DROP(TX)=DTMF_BEGIN,DTMF_END); drop only DTMF frames towards this channel. exten => 1,1,Set(FRAME_DROP(TX)=ANSWER); drop only ANSWER CONTROL frames towards this channel. exten => 1,1,Set(FRAME_DROP(RX)=DTMF_BEGIN,DTMF_END); drop only DTMF frames received on this channel. res_crypto crypto core 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 core Set or get the TX or RX volume of a channel. Must be TX or RX. The VOLUME function can be used to increase or decrease the tx or rx gain of any channel. For example: Set(VOLUME(TX)=3) Set(VOLUME(RX)=2) Set(VOLUME(TX,p)=3) Set(VOLUME(RX,p)=3) core 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. core Intercepts hold frames on a channel and raises an event instead of passing the frame on TEST_FRAMEWORK res_stasis_test core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK res_http_websocket core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK curl res_http_media_cache core TEST_FRAMEWORK core TEST_FRAMEWORK res_ari_model core TEST_FRAMEWORK core TEST_FRAMEWORK pjproject res_pjsip res_pjsip_session core TEST_FRAMEWORK core TEST_FRAMEWORK func_sorcery core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK OPTIONAL_API core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK pjproject res_pjsip core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK func_curl core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK res_prometheus curl extended TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK res_stasis core TEST_FRAMEWORK core TEST_FRAMEWORK res_agi res_crypto crypto core TEST_FRAMEWORK core TEST_FRAMEWORK core TEST_FRAMEWORK res_ari core TEST_FRAMEWORK core TEST_FRAMEWORK format_g723 format_g726 format_g729 format_gsm format_ogg_vorbis format_pcm format_siren14 format_siren7 format_sln format_wav format_wav_gsm core TEST_FRAMEWORK core core core core 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. core core core 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 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 core core core core core core core 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. core core core core core core 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 core core core core core core core uriparser core 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 core core core core core core 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 core core 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 core core core core core Bridge two channels. The current channel is bridged to the channel identified by the channel name, channel name prefix, or channel uniqueid. 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 core core core 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. core core core core Raised when a call pickup occurs. core core 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. core core core core core core 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 core core core core core core Answer a channel if ringing. Asterisk will wait this number of milliseconds before returning to the dialplan after answering the call. If the call has not been answered, this application will answer it. Otherwise, it has no effect on the call. Hangup Play an audio file while waiting for digits of an extension to go to. Explicitly specifies which language to attempt to use for the requested sound files. This is the dialplan context that this application will use when exiting to a dialed extension. This application will play the given list of files (do not put extension) while waiting for an extension to be dialed by the calling channel. To continue waiting for digits after this application has finished playing files, the WaitExten application should be used. If one of the requested sound files does not exist, call processing will be terminated. This application sets the following channel variable upon completion: The status of the background attempt as a text string. 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 SayMoney SayNumber SayOrdinal SayPhonetic CHANNEL SAYFILES 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 SayMoney SayNumber SayOrdinal 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 SayMoney SayNumber SayOrdinal SayPhonetic CHANNEL SAYFILES Say Money. This application will play the currency sounds for the given floating point number in the current language. Currently only English and US Dollars is supported. 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 SayOrdinal SayPhonetic CHANNEL SAYFILES 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 SayMoney SayPhonetic CHANNEL SAYFILES Say Ordinal Number. This application will play the ordinal sounds that correspond to the given digits (e.g. 1st, 42nd). Currently only English is supported. 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 SayMoney SayNumber SayPhonetic CHANNEL SAYFILES 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 SayMoney SayNumber SayOrdinal SAYFILES 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 a digit 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. Digits to accept, all others are ignored. This application waits for the user to press one of the accepted digits for a specified number of seconds. This is the final status of the command Parameters are invalid. An accepted digit was received. The timeout passed before any acceptable digits were received. The channel has hungup or was redirected. The digit that was received, only set if WAITDIGITSTATUS is DTMF. Wait WaitExten Waits for an extension to be entered. Can be passed with fractions of a second. For example, 1.5 will ask the application to wait for 1.5 seconds. This application waits for the user to enter a new extension for a specified number of seconds. Background TIMEOUT core core Create a message or read fields from a message. Field of the message to get or set. When processing an incoming message, this will be set to the destination listed as the recipient of the message that was received by Asterisk. For an outgoing message, this will set the To header in the outgoing SIP message. This may be overridden by the "to" parameter of MessageSend. When processing an incoming message, this will be set to the source of the message. For an outgoing message, this will set the From header in the outgoing SIP message. This may be overridden by the "from" parameter of MessageSend. 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>, or a string in the format alice@atlanta.com. This will override a from specified using the MESSAGE dialplan function or the from that may have been on an incoming message. A To 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>, or a string in the format alice@atlanta.com. This will override a to specified using the MESSAGE dialplan function or the to that may have been on an incoming message. Send a text message. The body of the message that will be sent is what is currently set to MESSAGE(body). This may he come from an incoming message. The technology chosen for sending the message is determined based on a prefix to the destination 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. A To URI for the message. If Destination is provided, the To parameter can also be supplied and may alter the message based on the specified message technology. For backwards compatibility, if Destination is not provided, the To parameter must be provided and will be used as the message destination. A To 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>, or a string in the format alice@atlanta.com. This parameter is required if the Destination parameter is not provided. 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. core core core core 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. core 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. If set to "true", the Status event will include all channel variables for the requested channel(s). 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 Cancel an attended transfer. The transferer channel. Cancel an attended transfer. Note, this uses the configured cancel attended transfer feature option (atxferabort) to cancel the transfer. If not available this action will fail. AttendedTransfer Originate a call. Channel name to call. Extension to use (requires Context and Priority) Context to use (requires Exten and Priority) Priority to use (requires Exten and Context) Application to execute. Data to use (requires Application). How long to wait for call to be answered (in ms.). Caller ID to be set on the outgoing channel. Channel variable to set, multiple Variable: headers are allowed. Account code. Set to true to force call bridge on early media.. Set to true for fast origination. Comma-separated list of codecs to use for this call. Channel UniqueId to be set on the channel. Channel UniqueId to be set on the second local channel. Generates an outgoing call to a Extension/Context/Priority or Application/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. Sends a text message to channel. A content type can be optionally specified. If not set it is set to an empty string allowing a custom handler to default it as it sees fit. Channel to send message to. Message to send. The type of content in the message Sends A Text Message to a channel while in a call. SendText 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 core core core core 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. core core core core core core core core core core core Options for configuring a named ACL An address/subnet from which to allow access An address/subnet from which to disallow access core core core Raised when all Asterisk initialization procedures have finished. Informational message Seconds since start Seconds since last reload 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. core core core 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 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 core 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 Raised when a module has been loaded in Asterisk. The name of the module that was loaded The result of the load request. Module could not be loaded properly Module loaded and configured Module is not configured Raised when a module has been unloaded in Asterisk. The name of the module that was unloaded The result of the unload request. Module unloaded successfully core jansson core core 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 dial status has changed. The new state of the outbound dial attempt. The outbound channel is ringing. The call to the outbound channel is proceeding. Progress has been received on the outbound channel. If the call was forwarded, where the call was forwarded to. 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 core core core core core 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 core 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 core core core core core core core core core core core core core core core 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 core 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. core core core core core core Get DB Entry. Put DB entry. Delete DB entry. Delete DB Tree. core core 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 core core core core core core core core core core core core core core core core 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. core core 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 core pjproject res_pjsip res_pjsip_session core openssl core pjproject res_pjsip res_http_websocket core res_ari res_ari_model res_stasis core extended 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}) pjproject res_pjsip res_pjsip_session core extended core corosync no extended srtp openssl core no extended 19 21 core core core core res_calendar neon ical extended timerfd core pjproject res_pjsip res_pjsip_session core app_fax core Receive a FAX and save as a TIFF/F file. This application is provided by res_fax, which is a FAX technology agnostic module that utilizes FAX technology resource modules to complete a FAX transmission. Session arguments can be set by the FAXOPT function and to check results of the ReceiveFax() application. FAXOPT Sends a specified TIFF/F file as a FAX. TIFF file to send as a FAX. This application is provided by res_fax, which is a FAX technology agnostic module that utilizes FAX technology resource modules to complete a FAX transmission. Session arguments can be set by the FAXOPT function and to check results of the SendFax() application. FAXOPT Gets/sets various pieces of information about a fax session. R/W Error Correction Mode (ECM) enable with 'yes', disable with 'no'. R/O FAX transmission error code upon failure. R/O Filename of the first file of the FAX transmission. R/O Filenames of all of the files in the FAX transmission (comma separated). R/W FAX header information. R/W Local Station Identification. R/W Minimum transfer rate set before transmission. R/W Maximum transfer rate set before transmission. R/W Modem type (v17/v27/v29). R/W T38 fax gateway, with optional fax activity timeout in seconds (yes[,timeout]/no) R/W Enable FAX detect with optional timeout in seconds (yes,t38,cng[,timeout]/no) R/O Number of pages transferred. R/O Negotiated transmission rate. R/O Remote Station Identification after transmission. R/O Negotiated image resolution after transmission. R/O Session ID of the FAX transmission. R/O Result Status of the FAX transmission. R/O Verbose Result Status of the FAX transmission. R/W The timeout used for T.38 negotiation. R/W Upon v21 detection allow gateway to send negotiation requests to both T.38 endpoints, and do not wait on the "other" side to initiate (yes|no) 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/received 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/received 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 extended pjproject res_pjsip core ldap extended pjproject res_pjsip res_pjsip_session core 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. A * may be appended to name to iterate over all headers beginning with 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)}) ; ; Set 'xhdr' to the value of the 1sx X-header. exten => 1,1,Set(xhdr=${PJSIP_HEADER(read,X-*,1)}) ; ; 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)) ; Gets the list of SIP header names from an INVITE message. If specified, only the headers matching the given prefix are returned. Returns a comma-separated list of header names (without values) from the INVITE message. Multiple headers with the same name are included in the list only once. For example, ${PJSIP_HEADERS(Co)} might return Contact,Content-Length,Content-Type. As a practical example, you may use ${PJSIP_HEADERS(X-)} to enumerate optional extended headers. PJSIP_HEADER extended Wait for tone Frequency of the tone to wait for. Minimum duration of tone, in ms. Default is 500ms. Using a minimum duration under 50ms is unlikely to produce accurate results. Maximum amount of time, in seconds, to wait for specified tone. Default is forever. Number of times the tone should be detected (subject to the provided timeout) before returning. Default is 1. Waits for a single-frequency tone to be detected before dialplan execution continues. This indicates the result of the wait. PlayTones Asynchronously detects a tone Frequency of the tone to detect. Minimum duration of tone, in ms. Default is 500ms. Using a minimum duration under 50ms is unlikely to produce accurate results. The TONE_DETECT function detects a single-frequency tone and keeps track of how many times the tone has been detected. When reading this function (instead of writing), supply tx to get the number of times a tone has been detected in the TX direction and rx to get the number of times a tone has been detected in the RX direction. same => n,Set(TONE_DETECT(2600,1000,g(got-2600,s,1))=) same => n,Wait(15) same => n,NoOp(${TONE_DETECT(rx)}) pjproject res_pjsip res_pjsip_pubsub core res_ari res_ari_model res_stasis res_stasis_device_state core pjproject res_sorcery_config core 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_VERBOSE. 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_TRACE. core TEST_FRAMEWORK core pjproject res_pjsip core win32 core 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. dahdi core core core core no core 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. res_ari res_ari_model res_stasis core core core func_curl res_curl curl core openssl pjproject core core res_mwi_external core 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. sqlite deprecated 16 19 extended pjproject res_pjproject res_pjsip core 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. Enable multi-user support When enabled the user portion of the server uri is replaced by a dynamically created user Must be of type 'outbound-publish'. pjproject res_pjsip res_pjsip_session core spandsp res_fax extended no extended core pjproject res_pjproject res_sorcery_config res_sorcery_memory res_sorcery_astdb res_statsd core 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 associated 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 Codec negotiation prefs for incoming offers. This is a string that describes how the codecs specified on an incoming SDP offer (pending) are reconciled with the codecs specified on an endpoint (configured) before being sent to the Asterisk core. The string actually specifies 4 name:value pair parameters separated by commas. Whitespace is ignored and they may be specified in any order. Note that this option is reserved for future functionality. Parameters: The codec list from the caller. (default) The codec list from the endpoint. Only common codecs with the preferred codecs first. (default) Use only the preferred codecs. Use only the non-preferred codecs. After the operation, keep all codecs. (default) After the operation, keep only the first codec. Allow transcoding. (default) Prevent transcoding. codec_prefs_incoming_offer = prefer: pending, operation: intersect, keep: all, transcode: allow Prefer the codecs coming from the caller. Use only the ones that are common. keeping the order of the preferred list. Keep all codecs in the result. Allow transcoding. Codec negotiation prefs for outgoing offers. This is a string that describes how the codecs specified in the topology that comes from the Asterisk core (pending) are reconciled with the codecs specified on an endpoint (configured) when sending an SDP offer. The string actually specifies 4 name:value pair parameters separated by commas. Whitespace is ignored and they may be specified in any order. Note that this option is reserved for future functionality. Parameters: The codec list from the core. (default) The codec list from the endpoint. Merge the lists with the preferred codecs first. (default) Only common codecs with the preferred codecs first. (default) Use only the preferred codecs. Use only the non-preferred codecs. After the operation, keep all codecs. (default) After the operation, keep only the first codec. Allow transcoding. (default) Prevent transcoding. codec_prefs_outgoing_offer = prefer: configured, operation: union, keep: first, transcode: prevent Prefer the codecs coming from the endpoint. Merge them with the codecs from the core keeping the order of the preferred list. Keep only the first one. No transcoding allowed. Codec negotiation prefs for incoming answers. This is a string that describes how the codecs specified in an incoming SDP answer (pending) are reconciled with the codecs specified on an endpoint (configured) when receiving an SDP answer. The string actually specifies 4 name:value pair parameters separated by commas. Whitespace is ignored and they may be specified in any order. Note that this option is reserved for future functionality. Parameters: The codec list in the received SDP answer. (default) The codec list from the endpoint. Merge the lists with the preferred codecs first. Only common codecs with the preferred codecs first. (default) Use only the preferred codecs. Use only the non-preferred codecs. After the operation, keep all codecs. (default) After the operation, keep only the first codec. The transcode parameter is ignored when processing answers. codec_prefs_incoming_answer = keep: first Use the defaults but keep oinly the first codec. Codec negotiation prefs for outgoing answers. This is a string that describes how the codecs that come from the core (pending) are reconciled with the codecs specified on an endpoint (configured) when sending an SDP answer. The string actually specifies 4 name:value pair parameters separated by commas. Whitespace is ignored and they may be specified in any order. Note that this option is reserved for future functionality. Parameters: The codec list that came from the core. (default) The codec list from the endpoint. Merge the lists with the preferred codecs first. Only common codecs with the preferred codecs first. (default) Use only the preferred codecs. Use only the non-preferred codecs. After the operation, keep all codecs. (default) After the operation, keep only the first codec. The transcode parameter is ignored when processing answers. codec_prefs_incoming_answer = keep: first Use the defaults but keep oinly the first codec. 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. Accept Connected Line updates from this endpoint Send Connected Line updates to this endpoint 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 the endpoint to be identified Endpoints and AORs can be identified in multiple ways. This option is a comma separated list of methods the endpoint can be identified. This option controls both how an endpoint is matched for incoming traffic and also how an AOR is determined if a registration occurs. You must list at least one method that also matches for AORs or the registration will fail. Matches the endpoint or AOR ID based on the username and domain in the From header (or To header for AORs). If an exact match on both username and domain/realm fails, the match is retried with just the username. Matches the endpoint or AOR ID based on the username and realm in the Authentication header. If an exact match on both username and domain/realm fails, the match is retried with just the username. This method of identification 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 this method 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. Matches the endpoint based on the source IP address. This method of identification is not configured here but simply allowed by this configuration option. See the documentation for the identify configuration section for more details on this method of endpoint identification. Matches the endpoint based on a configured SIP header value. This method of identification is not configured here but simply allowed by this configuration option. See the documentation for the identify configuration section for more details on this method of endpoint identification. 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_mwi_external 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. This option helps servers communicate with endpoints that are behind NATs. This option also helps reuse reliable transport connections such as TCP and TLS. Allow use of IPv6 for RTP traffic Enforce that RTP must be symmetric Send the Diversion header, conveying the diversion information to the called user agent Send the History-Info header, conveying the diversion information to the called and calling user agents 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 Minimum session timer expiration period. Time in seconds. Session timers for SIP packets Alias of always Maximum session timer expiration period Maximum session timer expiration period. Time in seconds. Explicit transport configuration to use This will force the endpoint to use the specified transport configuration to send SIP messages. You need to already know what kind of transport (UDP/TCP/IPv4/etc) the endpoint device will use. Not specifying a transport will select the first configured transport in pjsip.conf which is compatible with 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 packetization 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. Redundancy 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. Bind the UDPTL instance to the media_adress If media_address is specified, this option causes the UDPTL instance to be bound to the specified ip address which causes the packets to be sent from that address. 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 Determines whether hold and unhold will be passed through using re-INVITEs with recvonly and sendrecv to the remote side 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. It can be one of the following values: meaning no verificaton is done. meaning to verify the remote fingerprint. meaning to verify the remote certificate. meaning to verify both the remote fingerprint and certificate. 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. Whether or not to automatically generate an ephemeral X.509 certificate If enabled, Asterisk will generate an X.509 certificate for each DTLS session. This option only applies if media_encryption is set to dtls. This option will be automatically enabled if webrtc is enabled and dtls_cert_file is not specified. 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. Respond to a SIP invite with the single most preferred codec (DEPRECATED) Respond to a SIP invite with the single most preferred codec rather than advertising all joint codec capabilities. This limits the other side's codec choice to exactly what we prefer. This option has been deprecated in favor of incoming_call_offer_pref. Setting both options is unsupported. incoming_call_offer_pref Preferences for selecting codecs for an incoming call. Based on this setting, a joint list of preferred codecs between those received in an incoming SDP offer (remote), and those specified in the endpoint's "allow" parameter (local) es created and is passed to the Asterisk core. This list will consist of only those codecs found in both lists. Include all codecs in the local list that are also in the remote list preserving the local order. (default). Include only the first codec in the local list that is also in the remote list. Include all codecs in the remote list that are also in the local list preserving the remote order. Include only the first codec in the remote list that is also in the local list. Preferences for selecting codecs for an outgoing call. Based on this setting, a joint list of preferred codecs between those received from the Asterisk core (remote), and those specified in the endpoint's "allow" parameter (local) is created and is used to create the outgoing SDP offer. Include all codecs in the local list that are also in the remote list preserving the local order. Include all codecs in the local list preserving the local order. Include only the first codec in the local list. Include all codecs in the remote list that are also in the local list preserving the remote order. Include all codecs in the local list preserving the remote order. (default) Include only the first codec in the remote list that is also in the local list. 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. The maximum number of allowed audio streams for the endpoint This option enforces a limit on the maximum simultaneous negotiated audio streams allowed for the endpoint. The maximum number of allowed video streams for the endpoint This option enforces a limit on the maximum simultaneous negotiated video streams allowed for the endpoint. Enable RTP bundling With this option enabled, Asterisk will attempt to negotiate the use of bundle. If negotiated this will result in multiple RTP streams being carried over the same underlying transport. Note that enabling bundle will also enable the rtcp_mux option. Defaults and enables some options that are relevant to WebRTC When set to "yes" this also enables the following values that are needed in order for basic WebRTC support to work: rtcp_mux, use_avpf, ice_support, and use_received_transport. The following configuration settings also get defaulted as follows: media_encryption=dtls dtls_auto_generate_cert=yes (if dtls_cert_file is not set) dtls_verify=fingerprint dtls_setup=actpass Mailbox name to use when incoming MWI NOTIFYs are received If an MWI NOTIFY is received from this endpoint, this mailbox will be used when notifying other modules of MWI status changes. If not set, incoming MWI NOTIFYs are ignored. Follow SDP forked media when To tag is different On outgoing calls, if the UAS responds with different SDP attributes on subsequent 18X or 2XX responses (such as a port update) AND the To tag on the subsequent response is different than that on the previous one, follow it. This usually happens when the INVITE is forked to multiple UASs and more than one sends an SDP answer. This option must also be enabled in the system section for it to take effect here. Accept multiple SDP answers on non-100rel responses On outgoing calls, if the UAS responds with different SDP attributes on non-100rel 18X or 2XX responses (such as a port update) AND the To tag on the subsequent response is the same as that on the previous one, process the updated SDP. This can happen when the UAS needs to change ports for some reason such as using a separate port for custom ringback. This option must also be enabled in the system section for it to take effect here. Suppress Q.850 Reason headers for this endpoint Some devices can't accept multiple Reason headers and get confused when both 'SIP' and 'Q.850' Reason headers are received. This option allows the 'Q.850' Reason header to be suppressed. Do not forward 183 when it doesn't contain SDP Certain SS7 internetworking scenarios can result in a 183 to be generated for reasons other than early media. Forwarding this 183 can cause loss of ringback tone. This flag emulates the behavior of chan_sip and prevents these 183 responses from being forwarded. Enable STIR/SHAKEN support on this endpoint Enable STIR/SHAKEN support on this endpoint. On incoming INVITEs, the Identity header will be checked for validity. On outgoing INVITEs, an Identity header will be added. Skip authentication when receiving OPTIONS requests RFC 3261 says that the response to an OPTIONS request MUST be the same had the request been an INVITE. Some UAs use OPTIONS requests like a 'ping' and the expectation is that they will return a 200 OK. Enabling allow_unauthenticated_options will skip authentication of OPTIONS requests for the given endpoint. There are security implications to enabling this setting as it can allow information disclosure to occur - specifically, if enabled, an external party could enumerate and find the endpoint name by sending OPTIONS requests and examining the responses. 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'. If set to google_oauth then we'll read from the refresh_token/oauth_clientid/oauth_secret fields. The following values are valid: This setting only describes whether the password is in plain text or has been pre-hashed with MD5. It doesn't describe the acceptable digest algorithms we'll accept in a received challenge. Lifetime of a nonce associated with this authentication config. MD5 Hash used for authentication. Only used when auth_type is md5. As an alternative to specifying a plain text password, you can hash the username, realm and password together one time and place the hash value here. The input to the hash function must be in the following format: <username>:<realm>:<password> For incoming authentication (asterisk is the server), the realm must match either the realm set in this object or the default_realm set in in the global object. For outgoing authentication (asterisk is the UAC), the realm must match what the server will be sending in their WWW-Authenticate header. It can't be blank unless you expect the server to be sending a blank realm in the header. You can't use pre-hashed paswords with a wildcard auth object. You can generate the hash with the following shell command: $ echo -n "myname:myrealm:mypassword" | md5sum Note the '-n'. You don't want a newline to be part of the hash. Plain text password used for authentication. Only used when auth_type is userpass. OAuth 2.0 refresh token OAuth 2.0 application's client id OAuth 2.0 application's secret SIP realm for endpoint For incoming authentication (asterisk is the UAS), this is the realm to be sent on WWW-Authenticate headers. If not specified, the global object's default_realm will be used. For outgoing authentication (asterisk is the UAS), this must either be the realm the server is expected to send, or left blank or contain a single '*' to automatically use the realm sent by the server. If you have multiple auth object for an endpoint, the realm is also used to match the auth object to the realm the server sent. 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. If more than one auth object with the same realm or more than one wildcard auth object associated to an endpoint, we can only use the first one of each defined on the endpoint. 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, not WSS) Path to directory containing a list of certificates to read (TLS ONLY, not WSS) Certificate file for endpoint (TLS ONLY, not WSS) 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, not WSS) 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, not WSS) 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, not WSS) Protocol to use for SIP traffic Require client certificate (TLS ONLY, not WSS) Must be of type 'transport'. Require verification of client certificate (TLS ONLY, not WSS) Require verification of server certificate (TLS ONLY, not WSS) 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 requests 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 respond to the OPTIONS request before the timeout, the contact is marked unavailable. If 0 no timeout. Time in fractional seconds. Authenticates a qualify challenge response if needed If true and a qualify request receives a challenge response then authentication is attempted before declaring the contact available. This option does nothing as we will always complete the challenge response authentication if the qualify request is challenged. Outbound proxy used when sending OPTIONS request If set the provided URI will be used as the outbound proxy when an OPTIONS request is sent to a contact for qualify purposes. Stored Path vector for use in Route headers on outgoing requests. User-Agent header from registration. The User-Agent is automatically stored based on data present in incoming SIP REGISTER requests and is not intended to be configured manually. Endpoint name The name of the endpoint this contact belongs to Asterisk Server name Asterisk Server name on which SIP endpoint registered. IP-address of the last Via header from registration. The last Via header should contain the address of UA which sent the request. The IP-address of the last Via header is automatically stored based on data present in incoming SIP REGISTER requests and is not intended to be configured manually. IP-port of the last Via header from registration. The IP-port of the last Via header is automatically stored based on data present in incoming SIP REGISTER requests and is not intended to be configured manually. Call-ID header from registration. The Call-ID header is automatically stored based on data present in incoming SIP REGISTER requests and is not intended to be configured manually. A contact that cannot survive a restart/boot. The option is set if the incoming SIP REGISTER contact is rewritten on a reliable transport and is not intended to be configured manually. The configuration for a location of an endpoint An AoR is what allows Asterisk to contact an endpoint via res_pjsip. If no AoRs are specified, an endpoint will not be reachable by Asterisk. Beyond that, an AoR has other uses within Asterisk, such as inbound registration. An AoR is a way to allow dialing a group of Contacts that all use the same endpoint for calls. This can be used as another way of grouping a list of contacts to dial rather than specifying them each directly when dialing via the dialplan. This must be used in conjunction 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_mwi_external 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 Maximum time to keep a peer with explicit expiration. Time in seconds. Maximum number of contacts that can bind to an AoR Maximum number of contacts that can associate with this AoR. This value does not affect the number of contacts that can be added with the "contact" option. It only limits contacts added through external interaction, such as registration. The rewrite_contact option registers the source address as the contact address to help with NAT and reusing connection oriented transports such as TCP and TLS. Unfortunately, refreshing a registration may register a different contact address and exceed max_contacts. The remove_existing and remove_unavailable options can help by removing either the soonest to expire or unavailable contact(s) over max_contacts which is likely the old rewrite_contact contact source address being refreshed. This should be set to 1 and remove_existing set to yes if you wish to stick with the older chan_sip behaviour. Minimum keep alive time for an AoR Minimum time to keep a peer with an explicit expiration. Time in seconds. Determines whether new contacts replace existing ones. On receiving a new registration to the AoR should it remove enough existing contacts not added or updated by the registration to satisfy max_contacts? Any removed contacts will expire the soonest. The rewrite_contact option registers the source address as the contact address to help with NAT and reusing connection oriented transports such as TCP and TLS. Unfortunately, refreshing a registration may register a different contact address and exceed max_contacts. The remove_existing option can help by removing the soonest to expire contact(s) over max_contacts which is likely the old rewrite_contact contact source address being refreshed. This should be set to yes and max_contacts set to 1 if you wish to stick with the older chan_sip behaviour. Determines whether new contacts should replace unavailable ones. The effect of this setting depends on the setting of remove_existing. If remove_existing is set to no (default), setting remove_unavailable to yes will remove only unavailable contacts that exceed max_contacts to allow an incoming REGISTER to complete sucessfully. If remove_existing is set to yes, setting remove_unavailable to yes will prioritize unavailable contacts for removal instead of just removing the contact that expires the soonest. See remove_existing and max_contacts for further information about how these 3 settings interact. 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 respond to the OPTIONS request before the timeout, the contact is marked unavailable. If 0 no timeout. Time in fractional seconds. Authenticates a qualify challenge response if needed If true and a qualify request receives a challenge response then authentication is attempted before declaring the contact available. This option does nothing as we will always complete the challenge response authentication if the qualify request is challenged. 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. Follow SDP forked media when To tag is different On outgoing calls, if the UAS responds with different SDP attributes on subsequent 18X or 2XX responses (such as a port update) AND the To tag on the subsequent response is different than that on the previous one, follow it. This option must also be enabled on endpoints that require this functionality. Follow SDP forked media when To tag is the same On outgoing calls, if the UAS responds with different SDP attributes on non-100rel 18X or 2XX responses (such as a port update) AND the To tag on the subsequent response is the same as that on the previous one, process the updated SDP. This option must also be enabled on endpoints that require this functionality. Disable the use of rport in outgoing requests. Remove "rport" parameter from the outgoing requests. Must be of type 'system' UNLESS the object name is '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 performance by reducing the number of database requests. 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' UNLESS the object name is '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 compatibility with an ITSP that likes to use user options for whatever reason. sip:1235557890;phone-context=national@x.x.x.x;user=phone 1235557890;phone-context=national 1235557890 The caller-id and redirecting number strings obtained from incoming SIP URI user fields are always truncated at the first semicolon. Place caller-id information into Contact header This option will cause Asterisk to place caller-id information into generated Contact headers. Enable sending AMI ContactStatus event when a device refreshes its registration. Trigger scope for taskprocessor overloads This option specifies the trigger the distributor will use for detecting taskprocessor overloads. When it detects an overload condition, the distrubutor will stop accepting new requests until the overload is cleared. (default) Any taskprocessor overload will trigger. Only pjsip taskprocessor overloads will trigger. No overload detection will be performed. The "none" and "pjsip_only" options should be used with extreme caution and only to mitigate specific issues. Under certain conditions they could make things worse. Advertise support for RFC4488 REFER subscription suppression 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 an Address of Record (AoR) section. The object's type. This will always be 'aor'. The name of this object. Provide details about an Address of Record (Auth) section. The object's type. This will always be 'auth'. The name of this object. Provide details about a contact section. The object's type. This will always be 'contact'. The name of this object. IP address of the last Via header in REGISTER request. Will only appear in the event if available. Port number of the last Via header in REGISTER request. Will only appear in the event if available. The elapsed time in decimal seconds after which an OPTIONS message is sent before the contact is considered unavailable. Content of the Call-ID header in REGISTER request. Will only appear in the event if available. Asterisk Server name. If true delete the contact on Asterisk restart/boot. The Path header received on the REGISTER. The name of the endpoint associated with this information. A boolean indicating whether a qualify should be authenticated. This contact's URI. The interval in seconds at which the contact will be qualified. Content of the User-Agent header in REGISTER request Absolute time that this contact is no longer valid after The contact's outbound proxy. This contact's status. The round trip time in microseconds. 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. Lists PJSIP AORs. Provides a listing of all AORs. For each AOR an AorList event is raised that contains relevant attributes and status information. Once all aors have been listed an AorListComplete event is issued. Provide final information about an aor list. Lists PJSIP Auths. Provides a listing of all Auths. For each Auth an AuthList event is raised that contains relevant attributes and status information. Once all auths have been listed an AuthListComplete event is issued. Provide final information about an auth list. Lists PJSIP Contacts. Provides a listing of all Contacts. For each Contact a ContactList event is raised that contains relevant attributes and status information. Once all contacts have been listed a ContactListComplete event is issued. Provide final information about a contact list. 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. Get the channel name of an occupied parking space in a parking lot. This function returns the channel of the specified parking space if the parking lot space is occupied. 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. 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. 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 pjproject res_pjsip res_statsd core 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 Header parameters to place in the Contact header Expiration time for registrations in seconds Maximum number of registration attempts. This sets the maximum number of registration attempts that are made before stopping any further attempts. If set to 0 then upon failure no further attempts are made. 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 advertising SIP 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. Enables advertising SIP Outbound support (RFC5626) for outbound REGISTER requests. 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. pjproject res_pjsip core pjproject res_pjsip core 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 is invalid. The matching mechanisms are provided by the following configuration options: Match by source IP address. Match by SIP header. If multiple matching criteria are provided then an inbound request will be matched to the endpoint if it matches any of the criteria. Name of endpoint identified IP addresses or networks to match against. The value is a comma-delimited list of IP addresses or hostnames. 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 ('/'). A source port can also be specified by adding a colon (':') after the address but before the subnet mask, e.g. 3.2.1.0:5061/24. To specify a source port for an IPv6 address, the address itself must be enclosed in square brackets ('[2001:db8:0::1]:5060') When a hostname is used, the behavior depends on whether srv_lookups is enabled and/or a source port is provided. If srv_lookups is enabled and a source port is not provided, Asterisk will perform an SRV lookup on the provided hostname, adding all of the A and AAAA records that are resolved. If the SRV lookup fails, srv_lookups is disabled, or a source port is specified when the hostname is configured, Asterisk will resolve the hostname and add all A and AAAA records that are resolved. 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 whose 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. The specified SIP header value can be a regular expression if the value is of the form /regex/. Use of a regex is expensive so be sure you need to use a regex to match your endpoint. Must be of type 'identify'. curl res_curl core pjproject res_pjsip res_pjsip_pubsub core res_stasis res_mwi_external core gmime core res_http_websocket res_stasis core 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. Comma separated list of channel variables to display in channel json. 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 pjproject res_pjsip core 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 If set, indicates that the contact used a reliable transport and therefore the subscription must be deleted after an asterisk restart. If set, contains persistence data for all generators of content 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 double that of the PJSIP maximum packet length. 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'. res_ari res_ari_model res_stasis res_stasis_recording res_stasis_playback core pjproject res_pjsip res_pjsip_session res_stir_shaken core res_stasis core deprecated res_ari res_ari_model res_stasis core core extended 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 core core pjproject res_pjsip core pjproject res_pjsip core Send a NOTIFY to either an endpoint, an arbitrary URI, or inside a SIP dialog. The endpoint to which to send the NOTIFY. Abritrary URI to which to send the NOTIFY. Channel name to send the NOTIFY. Must be a PJSIP channel. 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, an arbitrary URI, or inside a SIP dialog. 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, URI, or Channel 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: res_stasis core res_calendar neon29 extended pjproject res_pjsip core res_speech core 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 Evaluates the given expression against the channel specified by channelname, or the current channel if channelname is not provided. Unlike GET VARIABLE, the expression is processed in a manner similar to dialplan evaluation, allowing complex and built-in variables to be accessed, e.g. The time is ${EPOCH} Returns 0 if no channel matching channelname exists, 1 otherwise. Example return code: 200 result=1 (The time is 1578493800) 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 pgsql extended res_ari res_ari_model res_stasis res_stasis_mailbox core res_stasis core pjproject res_pjsip res_pjsip_session core res_hep extended pjproject res_pjsip res_pjsip_pubsub core core generic_odbc res_odbc_transaction core pjproject res_pjsip res_pjsip_outbound_publish res_pjsip_pubsub core 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'. res_calendar neon ical iksemel extended res_statsd no extended res_ari res_ari_model res_stasis res_stasis_recording core unbound core General options for res_resolver_unbound Full path to an optional hosts file Hosts specified in a hosts file will be resolved within the resolver itself. If a value of system is provided the system-specific file will be used. Full path to an optional resolv.conf file The resolv.conf file specifies the nameservers to contact when resolving queries. If a value of system is provided the system-specific file will be used. If provided alongside explicit nameservers the nameservers contained within the resolv.conf file will be used after all others. Nameserver to use for queries An explicit nameserver can be specified which is used for resolving queries. If multiple nameserver lines are specified the first will be the primary with failover occurring, in order, to the other nameservers as backups. If provided alongside a resolv.conf file the nameservers explicitly specified will be used before all others. Unbound debug level The debugging level for the unbound resolver. While there is no explicit range generally the higher the number the more debug is output. Trust anchor file Full path to a file with DS and DNSKEY records in zone file format. This file is provided to unbound and is used as a source for trust anchors. generic_odbc core 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 forcecommit value from the relevant DSN (which 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. res_ari res_ari_model res_stasis core res_ari res_ari_model res_stasis res_stasis_answer res_stasis_playback res_stasis_recording res_stasis_snoop core res_ari res_ari_model res_stasis res_http_websocket core pjproject res_pjsip res_pjsip_session res_pjsip_pubsub core bridge_holding core 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. 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. core func_periodic_hook deprecated app_mixmonitor 16 21 Monitor a channel. Optional. If not set, defaults to wav If set, changes the filename used to the one specified. Used to start monitoring a channel. The channel's input and output voice packets are logged to files until the channel hangs up or monitoring is stopped by the StopMonitor application. By default, files are stored to /var/spool/asterisk/monitor/. Returns -1 if monitor files can't be opened or if the channel is already monitored, otherwise 0. StopMonitor Stop monitoring a channel. Stops monitoring a channel. Has no effect if the channel is not monitored. Change monitoring filename of a channel. The new filename base to use for monitoring this channel. Changes monitoring filename of a channel. Has no effect if the channel is not monitored. Pause monitoring of a channel. Pauses monitoring of a channel until it is re-enabled by a call to UnpauseMonitor. UnpauseMonitor Unpause monitoring of a channel. Unpauses monitoring of a channel on which monitoring had previously been paused with PauseMonitor. PauseMonitor Monitor a channel. Used to specify the channel to record. Is the name of the file created in the monitor spool directory. Defaults to the same name as the channel (with slashes replaced with dashes). Is the audio recording format. Defaults to wav. Boolean parameter as to whether to mix the input and output channels together after the recording is finished. This action may be used to record the audio on a specified channel. Stop monitoring a channel. The name of the channel monitored. This action may be used to end a previously started 'Monitor' action. Change monitoring filename of a channel. Used to specify the channel to record. Is the new name of the file created in the monitor spool directory. This action may be used to change the file started by a previous 'Monitor' action. Pause monitoring of a channel. Used to specify the channel to record. This action may be used to temporarily stop the recording of a channel. Unpause monitoring of a channel. Used to specify the channel to record. This action may be used to re-enable recording of a channel after calling PauseMonitor. core core core core core core core core pjproject res_pjsip res_pjsip_pubsub core core 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. crypto curl res_curl core STIR/SHAKEN module for Asterisk STIR/SHAKEN general options Must be of type 'general'. File path to the certificate authority certificate File path to a chain of trust Maximum size to use for caching public keys Maximum time to wait to CURL certificates Amount of time a signature is valid for STIR/SHAKEN certificate store options Must be of type 'store'. Path to a directory containing certificates URL to the public certificate(s) Must be a valid http, or https, URL. The URL must also contain the ${CERTIFICATE} variable, which is used for public key name substitution. For example: http://mycompany.com/${CERTIFICATE}.pub STIR/SHAKEN certificate options Must be of type 'certificate'. File path to a certificate URL to the public certificate Must be a valid http, or https, URL. Attestation level The caller ID number to match on. Gets the number of STIR/SHAKEN results or a specific STIR/SHAKEN value from a result on the channel. The index of the STIR/SHAKEN result to get. If only 'count' is passed in, gets the number of STIR/SHAKEN results instead. The value to get from the STIR/SHAKEN result. Only used when an index is passed in (instead of 'count'). Allowable values: This function will either return the number of STIR/SHAKEN identities, or return information on the specified identity. To get the number of identities, just pass 'count' as the only parameter to the function. If you want to get information on a specific STIR/SHAKEN identity, you can get the number of identities and then pass an index as the first parameter and one of the values you would like to retrieve as the second parameter. same => n,NoOp(Number of STIR/SHAKEN identities: ${STIR_SHAKEN(count)}) same => n,NoOp(Identity ${STIR_SHAKEN(0, identity)} has attestation level ${STIR_SHAKEN(0, attestation)}) core res_ari res_ari_model res_stasis res_stasis_playback core pjproject res_pjsip res_phoneprov extended 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. core pjproject res_pjsip res_pjsip_session core pjproject res_pjsip core pjproject res_pjsip res_pjsip_session core kqueue launchd extended pjproject res_pjsip yes core core core extended 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. core curl core pjproject res_pjsip res_pjsip_pubsub core res_odbc generic_odbc core pjproject res_pjsip core 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. core pjproject res_pjsip res_pjsip_session core res_stasis res_stasis_recording core extended StatsD client The res_statsd module provides an API that allows Asterisk and its modules to send statistics to a StatsD server. It only provides a means to communicate with a StatsD server and does not send any metrics of its own. An example module, res_chan_stats, is provided which uses the API exposed by this module to send channel statistics to the configured StatsD server. More information about StatsD can be found at https://github.com/statsd/statsd 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) Enable/disable the non-standard StatsD Meter type, if disabled falls back to counter and will append a "_meter" suffix to the metric name pjproject res_pjsip res_pjsip_session core The destination parameter is used to construct the Request URI for an outgoing message. It can be in one of the following formats, all prefixed with the pjsip: message tech. Request URI comes from the endpoint's default aor and contact. Request URI comes from the specific aor/contact. Request URI from the endpoint's default aor and contact. The domain is discarded. These all use the endpoint to send the message with the specified URI: These all use the default endpoint to send the message with the specified URI: These use the default endpoint to send the message with the specified host: This form is similar to a dialstring: You still need to prefix the destination with the pjsip: message technology prefix. For example: pjsip:PJSIP/8005551212@myprovider. The endpoint contact's URI will have the user inserted into it and will become the Request URI. If the contact URI already has a user specified, it will be replaced. The from parameter is used to specity the From: header in the outgoing SIP MESSAGE. It will override the value specified in MESSAGE(from) which itself will override any from value from an incoming SIP MESSAGE. The to parameter is used to specity the To: header in the outgoing SIP MESSAGE. It will override the value specified in MESSAGE(to) which itself will override any to value from an incoming SIP MESSAGE. pjproject res_pjproject res_pjsip core 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. core 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. pjproject res_pjsip res_pjsip_pubsub res_pjsip_outbound_publish core res_stasis core pjproject res_pjsip core 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'. extended extended pjproject res_pjsip extended Resource for integration with Prometheus General settings. The general settings section contains information to configure Asterisk to serve up statistics for a Prometheus server. You must enable Asterisk's HTTP server in http.conf for this module to function properly! Enable or disable Prometheus statistics. Enable or disable core metrics. Core metrics show various properties of the Asterisk system, including how the binary was built, the version, uptime, last reload time, etc. Generally, these options are harmless and should always be enabled. This option mostly exists to disable output of all options for testing purposes, as well as for those foolish souls who really don't care what version of Asterisk they're running. The HTTP URI to serve metrics up on. Username to use for Basic Auth. If set, use Basic Auth to authenticate requests to the route specified by uri. Note that you will need to configure your Prometheus server with the appropriate auth credentials. If set, auth_password must also be set appropriately. It is highly recommended to set up Basic Auth. Failure to do so may result in useful information about your Asterisk system being made easily scrapable by the wide world. Consider yourself duly warned. Password to use for Basic Auth. If set, this is used in conjunction with auth_username to require Basic Auth for all requests to the Prometheus metrics. Note that setting this without auth_username will not do anything. Auth realm used in challenge responses core pjproject res_pjsip res_pjsip_pubsub core core pjproject res_pjsip res_pjsip_session core res_calendar neon ical libxml2 extended core 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. If full backend caching is enabled this action is not available and will fail. In this case the SorceryMemoryCachePopulate or SorceryMemoryCacheExpire AMI actions must be used instead. 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. pjproject res_pjsip res_pjsip_pubsub core pjproject res_pjsip res_pjsip_session res_hep extended netsnmp extended iksemel openssl core 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. The return value will be one of the following. Online Chatty Away Extended Away Do Not Disturb Offline Not In Roster 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. 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. Ignored 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 Google OAuth 2.0 refresh token Google OAuth 2.0 application's client id Google OAuth 2.0 application's secret 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). sqlite3 core pjproject res_pjsip res_pjsip_session core pjproject res_pjsip extended pjproject res_pjsip res_pjsip_session core extended 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 pjproject res_pjsip res_pjsip_session core res_statsd no extended core 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. core mysqlclient no extended bluetooth no extended no extended 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. mysqlclient no deprecated func_odbc 1.8 19 mysqlclient no deprecated cdr_adaptive_odbc 1.8 19 no extended