Skip to content

Identities#

Howto's#

Defaults#

Commented File-structure#

identities.xml
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
<?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>