<?xml version="1.0" encoding="utf-8"?>
<!-- Identities
type: list
minimum: 6 elements
maximum: 6 elements -->
<identities version="1.34.0">
<!-- Describes a single identity -->
<identity>
<!-- enables the identity for registration
type: boolean -->
<active>false</active>
<!-- The user part of a SIP URI to register the identity
type: string -->
<username>5551234</username>
<!-- The password to authenticate the identity register
type: string -->
<password>secretPassword</password>
<!-- The display name of the identity
type: string -->
<displayname></displayname>
<!-- The SIP registrar hostname/address
type: string -->
<registrar>sip.example.org</registrar>
<!-- The SIP registrar port, i.e. to which port to send outgoing sip-requests
(e.g. the REGISTER, an INVITE or a subscription request).
type: integer
minimum: 1
maximum: 65535 -->
<registrarPort>5060</registrarPort>
<!-- An offset added to the registrarPort whenever secureConnection==true.
type: integer -->
<registrarPortOffsetForSecureConnections>0</registrarPortOffsetForSecureConnections>
<!-- How to signal dtmf-digits:
- rtpPayload: use event-packages in rtp-stream
- inband: code tone-signal right into the rtp-stream
- sipInfo: use sip-info messages
type: enum
accepted values:
rtpPayload
inband
sipInfo -->
<dtmfMethod>rtpPayload</dtmfMethod>
<!-- The domain of the identity (may differ from registrar).
There are scenarios, where the registrar is a specific host e.g
sip.example.com but the sip participants are using a different
domain e.g alice@example.org. In thisve example, the domain
would be example.org.
type: string -->
<domain></domain>
<!-- Timeout of registration in minutes
type: integer
minimum: 5
maximum: 60 -->
<registerInterval>30</registerInterval>
<!-- Timeout of subscriptions in minutes. Shorter values can produce
a significant performance impact.
type: integer
minimum: 1
maximum: 120 -->
<subscriptionInterval>45</subscriptionInterval>
<!-- What to do when a subscription fails. -->
<subscriptionFailureHandling>
<!-- When to retry: either never, or every xy seconds (linear) or
quadratic (i.e. first wait xy seconds, if that retry fails wait 2
times xy seconds, if that fails wait 4 times as long until another
attempt).
type: enum
accepted values:
never
linear
quadratic -->
<retryType>linear</retryType>
<!-- Interval in seconds until a subscription is retried after it got
terminated by remote. Different subscripton-failures use this
setting differently. E.g. a notify with
`Subscription-State: terminated` follows this setting 1:1 while
a subscription-request that gets answered with
`500 Server Internal Error` multiplies this setting by 10.
type: integer
minimum: 10 -->
<retryInterval>180</retryInterval>
</subscriptionFailureHandling>
<!-- What to do when a registration fails. -->
<registrationFailureHandling>
<!-- When to retry: either never, or every xy seconds (linear) or
quadratic (i.e. first wait xy seconds, if that retry fails wait 2
times xy seconds, if that fails wait 4 times as long until another
attempt).
type: enum
accepted values:
never
linear
quadratic -->
<retryType>linear</retryType>
<!-- Interval in seconds until a registration is retried after it failed.
type: integer
minimum: 1 -->
<retryInterval>10</retryInterval>
</registrationFailureHandling>
<!-- Settings that are needed for networks where a network address
translation is active -->
<nat>
<!-- type: enum
accepted values:
inactive
active -->
<useStunSip>inactive</useStunSip>
<!-- type: enum
accepted values:
inactive
active -->
<useStunRtp>inactive</useStunRtp>
<!-- interval in which keepalive packets are send. Value in seconds.
Used to ensure that every network component in use is reminded,
that our connection is still active.
type: integer
minimum: 15
maximum: 255 -->
<keepaliveInterval>45</keepaliveInterval>
</nat>
<outboundProxy>
<!-- type: enum
accepted values:
inactive
automatic
manual -->
<mode>inactive</mode>
<!-- type: string -->
<url></url>
<!-- type: integer
minimum: 1
maximum: 65535 -->
<port>5060</port>
<!-- type: string -->
<url2></url2>
<!-- type: integer
minimum: 1
maximum: 65535 -->
<port2>5060</port2>
</outboundProxy>
<!-- a set of rules, that are applied on outgoing calls and can modify
the number, so that this number can be routed on the outside network.
The order of the rules is important. The first matching rule is used.
type: list
minimum: 1 element -->
<dialplan>
<!-- if the pattern matches, the replace string is used. (...) defines
blocks, that can be reused with $NUMBER. If three blocks are used in
the pattern, we can use $1 $2 and $3 in the replace. -->
<rule>
<!-- a regular expression
type: string -->
<pattern>555-(1234)</pattern>
<!-- type: string -->
<replace>$1</replace>
</rule>
</dialplan>
<!-- Use the dialplan when starting a call from the CallLog.
type: boolean -->
<useDialplanInCallLog>false</useDialplanInCallLog>
<!-- for roaming users this setting marks wether or not a roaming user
is logged in. Whenever a roaming user loggs out we clear the
callists and other sensitive data. Though this setting is
identity-based we do global clearing of all sensitive data.
type: boolean -->
<isLoggedInRoamer>false</isLoggedInRoamer>
<!-- When primary user (first <role>user</role> in <users>) has set
an url as image -> use it in calls so other side may see that
picture.
Is send via Call-Info header.
Image will not be send when telephony/clir is active.
type: boolean -->
<sendUserImage>true</sendUserImage>
<!-- List of supported audio codecs. The order of the list is important.
When creating a connection, the server and the client use the first
codec, that is supported by both parties.
type: list
minimum: 1 element -->
<audiocodecs>
<!-- type: enum
accepted values:
G.711
G.722
G.726
G.729
iLBC
speex
opus -->
<audiocodec>G.722</audiocodec>
<audiocodec>G.711</audiocodec>
<audiocodec>G.726</audiocodec>
<audiocodec>G.729</audiocodec>
<audiocodec>iLBC</audiocodec>
<audiocodec>speex</audiocodec>
<audiocodec>opus</audiocodec>
</audiocodecs>
<!-- When a sip-Message (an instant text-message) is received and
shown: also sound an alert tone or not.
type: boolean -->
<messagesAlertWithSound>true</messagesAlertWithSound>
<!-- When clir is enabled we set the X-Privacy-Header in outgoing calls.
We also change the From-Header to either:
- say the display-name is 'anonymous'
- have the username set to anonymous, i.e. anonymous@registrar
type: enum
accepted values:
displayAnonymous
userAnonymous -->
<clir>displayAnonymous</clir>
<!-- Pbx sometimes uses P-Asserted-Identity headers to signal a
transfer. This is usually not the case except for Auerswald
PBXes. When set to true: phone re-interprets those headers as
transfers if the target number is sufficiently different from
the original number.
type: boolean -->
<pAssertedMightBeTransfer>true</pAssertedMightBeTransfer>
<!-- The sip-username where the phone should subscribe to to get
information about voice-messages. It is also used to make the
call when trying to access these messages.
type: string -->
<vmb></vmb>
<!-- Determines whether messages for this identity are to be handled by calling the VMB or by opening the voicemail app. This action is set by the voicemail app, depending on whether the identity is configured in the app.
type: enum
accepted values:
callVmb
openApp -->
<vmbAction>callVmb</vmbAction>
<!-- plays local music on hold if a call of this identity is set on
hold. When enabled, held calls will take away one audio-channel.
Since our phones only have 2 channels, this will limit the
number of simultaneous calls to two.
type: boolean -->
<localmoh>false</localmoh>
<!-- Activates sips (SIP over TLS) on connections with this identity.
Most likely you have to provide a certificate for the host you
provided to be able to connect safely and successfully.
type: boolean -->
<secureConnection>false</secureConnection>
<!-- Use ICE to determine audio-connection. Disable this when ICE is
not needed/used, this helps our SipStack to add the correct IP
in sdp-offers, especially in VPN-scenarios.
type: boolean -->
<useIce>false</useIce>
<!-- This option controls whether the IP address in SDP should be
replaced with the IP address found in Via header of the REGISTER
response, ONLY when STUN and ICE are not used. If the value is
FALSE (the original behavior), then the local IP address will be
used. If TRUE, and when STUN and ICE are disabled, then the IP
address found in registration response will be used.
type: boolean -->
<sdpNatRewriteUse>true</sdpNatRewriteUse>
<!-- This option controls whether the IP address in SDP should be
determined by resolving the interface by the registar address.
this can be useful if an registar is only available on a not
primarily routed network, for example vpn
type: boolean -->
<sdpInterfaceDetection>false</sdpInterfaceDetection>
<!-- type: enum
accepted values:
mandatory
optional
disabled -->
<srtp>disabled</srtp>
<!-- SIPS scheme is used if activated. Means the whole SIP path must
be encrypted by TLS
type: boolean -->
<Peer2PeerTls>false</Peer2PeerTls>
<!-- Root certificate used as a trust anchor for the host. Text in
PEM format.
type: string -->
<certificate></certificate>
<!-- used as pre code for the user part in an invite URI in case of a
pickup szenario. e.g. '##06'
type: string -->
<pickupCode></pickupCode>
<!-- When set, overwrites the country-specific dial-tone you hear when
lifting the handset. Uses an internal tone-generator-syntax
called CPT. e.g. 425@-6;(*/0/1).
See https://wiki.auerswald.de/comfortel-d-series/developer/cpt/
type: string -->
<dialTone></dialTone>
<!-- ip version (v4, v6 or automatic) for communication with the host
type: enum
accepted values:
IpV4
IpV6
IpAuto -->
<ipVersion>IpAuto</ipVersion>
<!-- optional authentication username used by some of the providers
type: string -->
<authenticationUsername></authenticationUsername>
<!-- protocol used for network traffic
type: enum
accepted values:
udp
tcp -->
<protocolType>tcp</protocolType>
<!-- use timeout for SIP sessions
type: boolean -->
<sessionTimerActive>true</sessionTimerActive>
<!-- timeout for SIP sessions in minutes
type: integer
minimum: 2
maximum: 255 -->
<sessionTimerValue>15</sessionTimerValue>
<!-- the identity which this one is the fallback for (if the actual
one cannot register) 0 := this is not a fallback identity
type: integer
maximum: 6 -->
<fallbackFor>0</fallbackFor>
<!-- ringtone assigned to this identity
type: string -->
<ringtone>SystemDefaultRingtone</ringtone>
<!-- when a party wants two way early media, this setting sets the
mic to muted. The mute will be released automatically when the
call is connected.
type: boolean -->
<startEarlyMediaMuted>false</startEarlyMediaMuted>
<!-- The sip-uri or number of an conference bridge. When configured
conferences will be started in that bridge instead of locally.
type: string -->
<conferenceBridge>3344</conferenceBridge>
<!-- when the dialscreen is opened, and a call will be created for
this identity the input method will be set accoring to this
setting
type: boolean -->
<startDialscreenAlphanumeric>false</startDialscreenAlphanumeric>
<!-- PjSip-option contactRewriteUse (google for more details).
Controls how often the send contact-header gets changed. Defaults
to 2 (lots), set to 0 to have it all but fixed or 1 for an
intermediate state.
type: integer
maximum: 2 -->
<rewriteContact>2</rewriteContact>
<!-- Specify the number of seconds to refresh the client registration
before the registration expires.
The value should be lower than the configured registration time.
This setting is ignored when useHalvedExpiry is enabled.
type: integer
minimum: 5
maximum: 3600 -->
<earlyRefreshRegOffset>5</earlyRefreshRegOffset>
<!-- Send re-register after the halved expiry duration elapsed
type: boolean -->
<useHalvedExpiry>false</useHalvedExpiry>
<!-- List of desired name sources. The order of the list is important.
type: list -->
<nameSources>
<!-- We distinguish between the following name sources in number-to-name
searches:
- 'fkeys' -> the phone number is searched for in all Speeddial keys
and (if successful) the name/label of the key is
delivered
- 'contacts' -> the phone number is searched for in all contacts and
(if successful) the name is delivered
- 'sip_pai' -> the name received via the P-Asserted-Identity header
- 'sip_to_from' -> the name received via the To or From header
depending on direction of call
- 'sip_contact' -> the name received via the Contact header
- 'ldap' -> a request is made to an LDAP server with the phone
number (if successful) a name is delivered
type: enum
accepted values:
fkeys
contacts
sip_pai
sip_to_from
sip_contact
ldap -->
<nameSource>fkeys</nameSource>
<nameSource>contacts</nameSource>
<nameSource>sip_pai</nameSource>
<nameSource>sip_to_from</nameSource>
<nameSource>sip_contact</nameSource>
<nameSource>ldap</nameSource>
</nameSources>
<!-- Prioritized list of where to get the telephone number from. The
phone needs a number e.g. to present to the user and to look up
names. If this list is empty or refers to a source that is not
present in a call, then the phone defaults to using the from/to
header.
type: list
minimum: 1 element -->
<nrSources>
<!-- We distinguish between the following number sources in a call. This
number is displayed during the call and is used for name-lookup's
e.g. in ldap:
- 'sip_pai' -> P-Asserted-Identity header
- 'sip_to_from' -> To or From header depending on direction of call
- 'sip_contact' -> Contact header
type: enum
accepted values:
sip_pai
sip_to_from
sip_contact -->
<nrSource>sip_pai</nrSource>
<nrSource>sip_to_from</nrSource>
<nrSource>sip_contact</nrSource>
</nrSources>
<!-- The user name for accessing the pbx WebApi. Provisioning only.
type: string -->
<auerWebApiUser></auerWebApiUser>
<!-- The user password for accessing the pbx WebApi. Provisioning only.
type: string -->
<auerWebApiPasswd></auerWebApiPasswd>
<!-- The HTTPS port for accessing the pbx WebApi. Provisioning only.
type: integer
maximum: 65535 -->
<auerWebApiPort>443</auerWebApiPort>
<!-- determines if a presence state should be send via sip PUBLISH message
to the identities server
type: boolean -->
<publishPresence>false</publishPresence>
</identity>
</identities>