SipX ConfigServer settings.xml

From SIPfoundry sipx, The Open Source SIP PBX for Linux - Calivia

Jump to: navigation, search

Contents

sipXconfig Model files

In order to add support for a phone or a gateway, you have to create an information model for the device you want to manage.

Information model consist of settings, that are assembled in groups. Each group should consists of related settings. Groups can contain settings or other groups.

sipXconfig models are defined in XML files conforming to setting.dtd

In addition to internal properties of groups and settings, model definition contains also user visible elements such as labels and descriptions. In future it will be possible to localize all user visible element by providing standard I18n properties files.

Settings group

Members of the same groups are presented to the end user on one screen. In future sipXconfig may provide independent screen defintion to allow for other layouts and presenting settings independent of their groups.

PropertyTypeDescriptionRequired
nameattributeinternal group name - cannot be emptyyes
ifattributeproperty that must be set to use this group (see Conditional settings)no
unlessattributeproperty that must not be set to use this group (see Conditional settings)no
labelelementuser visible group labelyes
profileNameelementinformation used by module generating device configuration (profile)no
descriptionelementuser visible group descriptionno
settingelementdefinition of the setting that belong to this groupno
groupelementdefinition of the group that belongs to this groupno

Settings

Example:

<setting name="SipUri">
  <label>SIP URI</label>
  <value></value>
  <description>Identifier in SIP address</description>
</setting>
PropertyTypeDescriptionRequired
nameattributeinternal setting name - cannot be emptyyes
advancedattributeif set to true UI will hint that the setting is advanced,
for example by displaying it on a separate panel, or only after user requests to see advanced settings,
non-essential settings should be set to advanced to improve usability
no (default: no)
hiddenattributeif set to true it will not be displayed by UIno (default: no)
ifattributeproperty that must be set to use this group (see Conditional settings)no
unlessattributeproperty that must not be set to use this group (see Conditional settings)no
labelelementuser visible setting labelyes
profileNameelementinformation used by module generating device configuration (profile)no
typeelementsetting type that determines how setting is presented and validatedno - string is default type
valueelementdefault value of this settingyes - can be empty
descriptionelementuser visible setting descriptionno

Sharing Settings and Setting Groups

Two separate setting models can share a settings or setting groups. A deep copy is made of a specified setting and variations can be defined.

  <group name="human">
    <group name="eat">
      <setting name="hamburger"/>
        <group name="fruit">
           <setting name="apple"/>
         </group>
    </group>
  </group>
  <group name="man" copy-of="/human">
    <setting name="shave">
      <value>face</value>
    </setting>
  </group>
  <group name="woman" copy-of="/human">
    <setting name="shave">
      <value>legs</value>
    </setting>
    <setting name="giveBirth"/>
   </group>

Settings types

string
rendered as text field with limited maximum length constrain, optionally can be also constrained by regular expression pattern, required is an optional attribute if it is not set or if it is set to false text box can be left empty
<string required="yes" maxLen="30"/>
<string required="yes"/>
  <pattern>\d(1,4)[a-Z]*</pattern>
</string>

If string represents a password sipXconfig will render it using masked edit widget.

<string password="yes"/>
integer
rendered as text field accepting numeric values only, the default range is from 0 to Integer.MAX_INT; the range can be changed by manipulating min and max attributes, if required is not, set or if it is set to false, empty values are accepted
<integer min="-17" max="42">
real
similar to integer but accepting floating point values - the default range is from 0 to Float.MAX_VALUE ()
<real min="-17.15" max="42.23">


enumeration
rendered as drop-down list of options, labels are optional, if they are not provided values are displayed as labels
<enum>
  <option><label>Red</label><value>0xff0000</value></option>
  <option><label>Green</label><value>0x00ff00</value></option>
  <option><label>Blue</label><value>0x0000ff</value></option>
</enum>


boolean
rendered as checkboxes, what value is stored for true and false is configurable. By default, true values are 1 and false values are 0.
<boolean>
  <true><value>Yes</value></true>
  <false><value>No</value></false>
</boolean>
file
if the variable attribute is set to yes it is rendered as an drop-down list of files in a specified directory - allows for uploading and downloading such files and for selecting out of the set of previously uploaded files. If the variable is set to false you can only upload the file and delete it. There is no dropdown list rendered. The value of the setting is base name of the file (directory is not part).
<file required="yes" variable="yes">
  <directory>/tmp</directory>
  <contentType>audio/x-wav</contentType>
</file>

Shared Setting Types

You can define a setting type once and share it throughout your model. Declare your types you'd like to share with an "id" attribute, and reference it from where you'd normally use a setting type

Example, if you want "True" and "False" to be define for select values.

  <type id="yes-no">
    <boolean>
      <true><value>Yes</value></true>
      <false><value>No</value></false>
    </boolean>
  </type>
  <group name="candyPreferences">
    <setting name="chocolate">
      <type refid="yes-no"/>
    </setting>
    <setting name="taffy">
      <type refid="yes-no"/>
    </setting>
  </group>    


Conditional settings

Often times, a single settings XML file is shared by several device models. Because of this, some settings may not be applicable to particular models. To handle this situation, the <group> and <setting> elements provide two other attributes: if and unless, which take the name of a property. If the property specified in the if attribute is defined, then the setting or group will be used. If the property specified in the unless attribute is defined, then the setting or group will not be used.

Currently, only one property each may be specified for if and unless.

Model conditions

Some settings may only be applicable to a particular device model, or may not apply to a particular device model.

The model ID is automatically defined as a property of each model. This is usually the id attribute value of a corresponding Spring bean. For example, the Polycom SoundStation IP 7000 is defined as:

<bean id="polycom7000" parent="polycomModel">

In this example case, the Polycom 7000 has a built-in property called "polycom7000" that we can use for conditional settings:

<!-- This setting will only be used in Polycom 7000s -->
<setting name="setting1" if="polycom7000"> ... </setting>

<!-- This setting will NOT be used for Polycom 7000s -->
<setting name="setting2" unless="polycom7000"> ... </setting>

Supported feature conditions

Sometimes, a particular model may be too narrow of a restriction. On product lines with many different models, such as Polycom phones or AudioCodes gateways, many settings are tied to particular features which are supported on some subset of models.

All device models extending from DeviceDescriptor have a supportedFeatures property, which is a set of feature names. These feature names may then be used as properties in the if and unless attributes for settings and groups. The set of supported features are defined in the Spring bean corresponding to the model.

For example, the Polycom SoundStation IP 4000 is defined as follows in polycom-models.beans.xml:

  <bean id="polycom4000" parent="polycomModel">
    <property name="label" value="Polycom SoundStation IP 4000" />
    <property name="maxLineCount" value="1" />
        <property name="supportedFeatures">
          <set>
            <value>disableCallList</value>
            <value>voiceQualityMonitoring</value>
          </set>
    </property>
  </bean>

The Polycom 4000 supports the "disableCallList" and "voiceQualityMonitoring" features. These features are checked in the conditional settings:

  <group name="qualityMonitoring" if="voiceQualityMonitoring">
    ...
  </group>
  ...
  <group name="feature">
    <setting name="calllist" if="disableCallList">
      ...
    </setting>
  </group>

As the above example shows, the qualityMonitoring group and calllist setting will be used for the Polycom 4000 and other models supporting these features, and not in others.

Personal tools