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