diff --git a/Makefile b/Makefile index 2526db1cfc..a248554131 100644 --- a/Makefile +++ b/Makefile @@ -475,60 +475,24 @@ endif $(INSTALL) -m 644 $$x "$(DESTDIR)$(ASTDATADIR)/rest-api" ; \ done -ifeq ($(GREP),) -else ifeq ($(GREP),:) -else - XML_core_en_US = $(foreach dir,$(MOD_SUBDIRS),$(shell $(GREP) -l "language=\"en_US\"" $(dir)/*.c $(dir)/*.cc 2>/dev/null)) -endif - +DOC_MOD_SUBDIRS := $(filter-out third-party,$(MOD_SUBDIRS)) +XML_core_en_US := $(shell build_tools/make_xml_documentation --command=print_dependencies --source-tree=. --mod-subdirs="$(DOC_MOD_SUBDIRS)") +# core-en_US.xml is the normal documentation created with asterisk builds. doc/core-en_US.xml: makeopts .lastclean $(XML_core_en_US) - @printf "Building Documentation For: " - @echo "" > $@ - @echo "" >> $@ - @echo "" >> $@ - @echo "" >> $@ - @for x in $(MOD_SUBDIRS); do \ - printf "$$x " ; \ - for i in `find $$x -name '*.c'`; do \ - MODULEINFO=$$($(AWK) -f build_tools/get_moduleinfo $$i) ; \ - if [ -n "$$MODULEINFO" ] ; \ - then \ - echo "" >> $@ ; \ - echo "$$MODULEINFO" >> $@ ; \ - echo "" >> $@ ; \ - fi ; \ - $(AWK) -f build_tools/get_documentation $$i >> $@ ; \ - done ; \ - done - @echo - @echo "" >> $@ + @build_tools/make_xml_documentation --command=create_xml --source-tree=. --mod-subdirs="$(DOC_MOD_SUBDIRS)" \ + --with-moduleinfo --validate --output-file=$@ -ifeq ($(GREP),) -else ifeq ($(GREP),:) -else - XML_full_en_US = $(foreach dir,$(MOD_SUBDIRS),$(shell $(GREP) -l "language=\"en_US\"" $(dir)/*.c $(dir)/*.cc 2>/dev/null)) -endif - -doc/full-en_US.xml: makeopts .lastclean $(XML_full_en_US) +# The full-en_US.xml target is only called by the wiki documentation generation process +# and does special post-processing in preparation for uploading to the wiki. +# It creates full-en_US.xml but then re-creates core-en_US.xml as well. +doc/full-en_US.xml: makeopts .lastclean $(XML_core_en_US) ifeq ($(PYTHON),:) @echo "--------------------------------------------------------------------------" @echo "--- Please install python to build full documentation ---" @echo "--------------------------------------------------------------------------" else - @printf "Building Documentation For: " - @echo "" > $@ - @echo "" >> $@ - @echo "" >> $@ - @echo "" >> $@ - @for x in $(filter-out third-party,$(MOD_SUBDIRS)); do \ - printf "$$x " ; \ - for i in `find $$x -name '*.c'`; do \ - $(PYTHON) build_tools/get_documentation.py < $$i >> $@ ; \ - done ; \ - done - @echo - @echo "" >> $@ - @$(PYTHON) build_tools/post_process_documentation.py -i $@ -o "doc/core-en_US.xml" + @build_tools/make_xml_documentation --command=create_xml --source-tree=. --mod-subdirs="$(DOC_MOD_SUBDIRS)" \ + --for-wiki --validate --output-file=$@ --core-output-file=./doc/core-en_US.xml endif validate-docs: doc/core-en_US.xml diff --git a/build_tools/get_sourceable_makeopts b/build_tools/get_sourceable_makeopts new file mode 100755 index 0000000000..fbf4c38fc6 --- /dev/null +++ b/build_tools/get_sourceable_makeopts @@ -0,0 +1,54 @@ +#!/bin/sh +PROGNAME="${0##*/}" + +if [ "$1" = "-h" ] || [ "$1" = "--help" ] ; then + cat <<-EOF + Usage: ${PROGNAME}: [ ] [ ] + + This script takes an Asterisk makeopts file, or any file containing + "make" style variable assignments, and converts it into a format + that can be directly 'sourced' by shell scripts. + + * Any spaces around the equals sign are removed. + * The variable value is quoted. + * The "make" "or" command is evaluated. + + Both input and output files are optional and will default to + stdin and stdout respectively. + + NOTE: This script relies on NO external commands and only POSIX + constructs. It should be runnable by any shell. + EOF + exit 1 +fi + +input_file="/dev/stdin" +if [ "$1" != "" ] ; then + input_file="$1" +fi + +output_file="/dev/stdout" +if [ "$2" != "" ] ; then + output_file="$2" +fi + +# orfunc is a code fragment to be added to the outp[ut file. +# We don't WANT the variables evaluated. +# shellcheck disable=SC2016 +orfunc='or (){ before="${1%,*}" ; after="${1#*,}" ; if [ "$before" = "" ] ; then echo "${after}" ; else echo "${before}" ; fi ; }' +echo "${orfunc}" >"${output_file}" + +while read -r LINE ; do + var="${LINE%%=*}" + if [ "${var}" != "" ] ; then + val="${LINE#*=}" + if [ "${val}" != "${var}" ] ; then + if [ "${val%% *}" = "" ] ; then + echo "${var% *}=\"${val#* }\"" + else + echo "${var% *}=\"${val}\"" + fi + fi + fi +done <"${input_file}" >>"${output_file}" + diff --git a/build_tools/make_xml_documentation b/build_tools/make_xml_documentation new file mode 100755 index 0000000000..fafb81c376 --- /dev/null +++ b/build_tools/make_xml_documentation @@ -0,0 +1,247 @@ +#!/bin/sh +# The GREP, SED, FIND, etc variables are all set at run time from +# makeopts. +# shellcheck disable=SC2154 + +PROGNAME="${0##*/}" +PROGDIR="${0%/*}" + +# Fail on errors +set -e + +usage() { +cat <<-EOF + Usage: ${PROGNAME} --command=(create_xml | print_dependencies) + --source-tree= [ --mod-subdirs= ] + [ --with-moduleinfo ] [--for-wiki ] [ --validate ] + [ --output-file= ] + [ --core-output-file= ] + + command: + print_dependencies: Print the source files that have documentation + for use by "make" as dependencies. + create_xml: Create the actual XML output file. + + source-tree: The path to the Asterisk source tree. + + mod-subdirs: A quoted, space-separated list of module sub-directories + to search for documentation. Defaults to + "channels pbx apps codecs formats cdr cel bridges funcs tests main res addons" + + with-moduleinfo: Include the "MODULEINFO" block from source files. + Default is to not include MODULEINFO + + for-wiki: Perform special post processing for wiki documentation. + This creates two output files and therefore needs both + and . + Default is to not perform wiki post-processing. + + validate: Run xmllint or xmlstarlet to validate output-file. + + output-file: The XML file to write to if the command was + "create_xml". + + core-output-file: The additional XML file to write to if the command was + "create_xml" with "for-wiki". + +EOF +} + +with_moduleinfo=0 +for_wiki=0 +validate=0 +command="" +mod_subdirs="channels pbx apps codecs formats cdr cel bridges funcs tests main res addons" +source_tree="" +output_file="" +core_output_file="" + +for arg in "$@" ; do + case ${arg} in + --for-wiki) + for_wiki=1 + ;; + --with-moduleinfo) + with_moduleinfo=1 + ;; + --validate) + validate=1 + ;; + --command=*) + command=${arg#*=} + ;; + --source-tree=*) + source_tree=${arg#*=} + ;; + --mod-subdirs=*) + mod_subdirs="${arg#*=}" + ;; + --output-file=*) + output_file=${arg#*=} + ;; + --core-output-file=*) + core_output_file=${arg#*=} + ;; + -h|--help) + usage + exit 0 + ;; + *) + echo "unknown option '${arg}'." + usage + exit 1 + ;; + esac +done + +if [ "${command}" = "" ] ; then + echo "No command specified" + usage + exit 1 +fi + +if [ "${source_tree}" = "" ] ; then + echo "No source-tree specified" + usage + exit 1; +fi + +if [ ! -d "${source_tree}" ] ; then + echo "Asterisk source tree '${source_tree}' doesn't exist." + exit 1 +fi + +if [ ! -f "${source_tree}/Makefile" ] ; then + echo "There's no 'Makefile' in '${source_tree}'." + exit 1 +fi + +if [ ! -f "${source_tree}/makeopts" ] ; then + echo "There's no 'makeopts' in '${source_tree}'. Maybe you need to run ./configure?" + exit 1 +fi + +# This will get the paths to the utilities we need, all +# of which will be in makeopts. We need to convert the +# format so it's sourceable. +tmpname="/tmp/ast_makeopts.$$.env" +trap 'rm "$tmpname" >/dev/null 2>&1' INT QUIT TERM EXIT +"${PROGDIR}/get_sourceable_makeopts" "${source_tree}/makeopts" >"${tmpname}" +# The file to be sourced is generated at run time and can't be checked. +# shellcheck disable=SC1090 +. "${tmpname}" +rm "${tmpname}" > /dev/null 2>&1 || : +trap - INT QUIT TERM EXIT + +# Make sure we have everything we need. +for c in GREP FIND AWK DIRNAME BASENAME SED CAT ; do + bin=$(eval "echo \${${c}}") + if [ "${bin}" = "" ] ; then + echo "The '${c}' utility was not found." + exit 1 + fi +done + +if [ "${for_wiki}" -eq "1" ] || [ "${validate}" -eq "1" ]; then + if [ "${XMLLINT}${XMLSTARLET}" = "::" ] ; then + echo "Either xmllint or xmlstarlet is required for wiki post-processing or validation." + exit 1 + fi +fi + +if [ "${command}" = "print_dependencies" ] ; then + for subdir in ${mod_subdirs} ; do + subpath="${source_tree}/${subdir}" + # We WANT word splitting in the following line. + # shellcheck disable=SC2046 + ${GREP} -l -E '(language="en_US"|appdocsxml.dtd)' $(${FIND} "${subpath}" -name '*.c' -or -name '*.cc' -or -name '*.xml') || : + done + exit +fi + +if [ "${command}" != "create_xml" ] ; then + echo "Command '${command}' is invalid." + usage + exit 1 +fi + +if [ "${output_file}" = "" ] ; then + echo "output-file is required for command '${command}'." + usage + exit 1; +fi + +output_dir=$(${DIRNAME} "${output_file}") +if [ ! -d "${output_dir}" ] ; then + echo "output destination directory '${output_dir}' doesn't exist." + exit 1 +fi + +if [ "${for_wiki}" -eq "1" ] && [ "${core_output_file}" = "" ] ; then + echo "core-output-file is required for command '${command}' and 'for-wiki'." + usage + exit 1; +fi + +core_output_dir=$(${DIRNAME} "${core_output_file}") +if [ ! -d "${core_output_dir}" ] ; then + echo "core destination directory '${core_output_dir}' doesn't exist." + exit 1 +fi + +${CAT} > "${output_file}" <<-EOF + + + + +EOF + +printf "Building Documentation For: " + +for subdir in ${mod_subdirs} ; do + printf "%s " "${subdir}" + subdir_path="${source_tree}/${subdir}" + for i in $(${FIND} "${subdir_path}" -name '*.c' -or -name '*.cc'); do + if [ "${with_moduleinfo}" -eq "1" ] ; then + MODULEINFO=$(${AWK} -f "${source_tree}/build_tools/get_moduleinfo" "${i}") + if [ "${MODULEINFO}" != "" ] ; then + ${CAT} >> "${output_file}" <<-EOF + + ${MODULEINFO} + + EOF + fi + fi + if [ "${for_wiki}" -eq "1" ] ; then + ${PYTHON} build_tools/get_documentation.py < "${i}" >> "${output_file}" + else + ${AWK} -f "${source_tree}/build_tools/get_documentation" "${i}" >> "${output_file}" + fi + done + for i in $(${FIND} "${subdir_path}" -name '*.xml') ; do + ${GREP} -q "appdocsxml.dtd" "${i}" || continue + if [ "${validate}" -eq "1" ] ;then + if [ "${XMLLINT}" != ":" ] ; then + ${XMLLINT} --dtdvalid "${source_tree}/doc/appdocsxml.dtd" --path "${source_tree}/doc" --noout "${i}" || { echo "" ; exit 1 ; } + else + ${XMLSTARLET} val -d "${source_tree}/doc/appdocsxml.dtd" "${i}" || { echo "" ; exit 1 ; } + fi + fi + ${SED} -r "/^\s*(<[?]xml|<.DOCTYPE|<.?docs)/d" "${i}" >> "${output_file}" + done +done +echo "" >> "${output_file}" +echo "" + +if [ "${for_wiki}" -eq "1" ] ; then + ${PYTHON} build_tools/post_process_documentation.py -i "${output_file}" -o "${core_output_file}" +fi + +if [ "${validate}" -eq "1" ] ;then + if [ "${XMLLINT}" != ":" ] ; then + ${XMLLINT} --dtdvalid "${source_tree}/doc/appdocsxml.dtd" --path "${source_tree}/doc" --noout "${output_file}" || exit 1 + else + ${XMLSTARLET} val -d "${source_tree}/doc/appdocsxml.dtd" "${output_file}" || exit 1 + fi +fi + diff --git a/makeopts.in b/makeopts.in index e5730bfcfa..1cecce846b 100644 --- a/makeopts.in +++ b/makeopts.in @@ -46,6 +46,8 @@ SED=@SED@ NM=@NM@ CAT=@CAT@ CUT=@CUT@ +REALPATH=@REALPATH@ +DIRNAME=@DIRNAME@ BUILD_PLATFORM=@BUILD_PLATFORM@ BUILD_CPU=@BUILD_CPU@ diff --git a/res/res_pjsip.c b/res/res_pjsip.c index 3d1f68c029..78226450e4 100644 --- a/res/res_pjsip.c +++ b/res/res_pjsip.c @@ -56,3248 +56,6 @@ core ***/ -/*** DOCUMENTATION - - 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 verification 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 - passwords 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 UAC), 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 objects 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. - - - - 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. - - - - - - - - - - ***/ - #define MOD_DATA_CONTACT "contact" /*! Number of serializers in pool if one not supplied. */ diff --git a/res/res_pjsip/pjsip_config.xml b/res/res_pjsip/pjsip_config.xml new file mode 100644 index 0000000000..73b77db06f --- /dev/null +++ b/res/res_pjsip/pjsip_config.xml @@ -0,0 +1,2346 @@ + + + + + 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 verification 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 + passwords 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 UAC), 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 objects 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. + + + + 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 + + + + + diff --git a/res/res_pjsip/pjsip_manager.xml b/res/res_pjsip/pjsip_manager.xml new file mode 100644 index 0000000000..a0047aaf97 --- /dev/null +++ b/res/res_pjsip/pjsip_manager.xml @@ -0,0 +1,900 @@ + + + + + + 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. + + + + + + + + +