Zweck der Kopfdatei beim Provisioning

Hallo!

Ich richte gerade das erste Mal eine Anlage mit nur Systemtelefonen unter Verwendung des Provisionings ein. (Praktischerweise unsere eigene!)

Ich hatte das so verstanden, dass ich pro Telefon eine Kopfdatei und eine normale Settingsdatei vorhalten kann, so dass ich in der Kopfdatei die Einstellungen setzen kann, die viele (oder alle) User betreffen, und in der zweiten Datei dann Settings vorhalte, die einzelen User oder kleinere Usergruppen betreffen.

So hatte ich mir vorgestellt, in einer Kopfdatei Global alle möglichen Settings vorzuhalten (Wallpaper, Menüsprache…) und in den einzelnen Dateien dann nur noch die Funktionstastenbelegung.

Aber irgendwie werden, seit ich das so aufgeteilt habe (hatte am Anfang alles in einer Datei, wurde dann aber wahnsinnig, als ich für 12 Usergruppen das wallpaper ändern musste…) die Funktionstasten nicht mehr belegt.

Habe ich da etwas zum Zweck oder zur Funktion der Kopfdatei nicht verstanden?

OK, im Moment, als ich mein Posting abgeschickt hatte, habe ich die eigentliche Dokumentation zum Provisioning gefunden, und denke, ich bin jetzt einen Schritt weiter.

Die Kopfdatei enthält selbst gar keine Settings, sondern nur den Verweis auf eine (oder mehrere) andere Dateien.
Wenn wir also von drei Teams mit unterschiedlichen Funktionstasten ausgehen, brauche ich:

globale_konfiguraton.xml
kopf_team1.xml
kopf_team2.xml
kopf_team3.xml
fkeys_team1.xml
fkeys_team2.xml
fkeys_team3.xml

Und jede der drei Kopfdateien referenziert dann nacheinander globale_konfiguration.xml und settings_teamX.xml.

Korrekt?

Was ich nur immer noch nicht finde: Wie sieht denn die Syntax der Kopfdatei aus? Stehen da wirklich einfach nur 2 URLs untereinander?
Ausserdem: Wenn ich einem User die Berechtigung für 2 xml-Dateien gebe, kriege ich in der Anlagenkonfiguration eine Fehlermeldung. Ich müsste aber dem User doch die Rechte an globale_konfiguration.xml und an fkeys_teamX.xml geben!?

Hallo Zimbosurf.

Die Kopfdatei enthält einfach die Dateinamen der zu ladenden Dateien, jeweils in einer Zeile. Die Reihenfolge sollte dann ggfs. der einer kompletten Konfiguration entsprechen (also einfach mal eine Konfig aus dem Telefon exportieren und die Reihenfolge der ‚Abschniite‘ ansehen).

1 „Gefällt mir“

Hallo Herrybert,

Danke für die Antwort! Leider ist dieses geniale Feature so miserabel dokumentiert, dass ich heute einen ganzen Tag nur damit zugebracht habe, die genaue Funktion herauszufinden.

Ich werde mir morgen mal die Zeit nehmen und meine Erkenntnisse hier in einem Konfigurationsbeispiel zusammenfassen, damit der nächste, der sucht, wenigstens mal ein brauchbares Beispiel findet. Ein bisschen mehr als eine Liste von Dateinamen steht in der Kopfdatei nämlich doch drin…

Hallo!

Wie angedeutet wollte ich hier mal ein paar Dinge zu den Provisionungsdateien erklären, damit der nächste nicht so lange sucht und 'rummacht wie ich. Meiner Meinung nach ist die Dokumentation zu diesem Thema bei Auerswald ziemlich dünn, deswegen halte ich diese Erläuterung für recht sinnvoll.

Provisionierungsdatei - Template - Kopfdatei

  • Die Provisionierungsdatei ist einfach nur die Konfigurationsdatei, die an das Telefon geschickt wird, wenn es sich meldet und anhand der MAC-Adresse erkannt wird. Der einfachste Weg, die Konfigurationsdatei zu erstellen ist, sie aus einem konfigurierten Telefon auszulesen.
    Auerswald-Provisionierungsdateien sind xml-Dateien, die die Konfiguration im Klartext enthalten. Man kann sie also mit jedem beliebigen Texteditor bearbeiten. Um bestimmte Einstellungen in der xml-Datei leichter zu finden bietet es sich an, die Konfigurationsdatei aus dem Telefon auszulesen, die Einstellung im Telefon zu ändern, eine neue Konfigurationsdatei auszulesen und die beiden Dateien zu vergleichen.
    Jedem Telefon kann unter Teilnehmer > IP-Provisioning > Dateiverwaltung im Normalfall nur die Berechtigung an einer Provisionierungsdatei gegeben werden.
  • Wird eine Auerswald-Provisionierungsdatei als Template markiert, so ersetzt die Anlage beim Senden der Datei den Abschnitt <providersAndAccounts> mit den tatsächlichen Zugangsdaten des zugewiesenen Users.
  • Eine Kopfdatei ist lediglich eine Auflistung von einzelnen Provisionierungsdateien, die in der Reihenfolge der Auflistung nacheinander ans Telefon gesendet werden. Jeder gesendete Datei überschreibt die Werte der vorhergehenden. Man kann so eine mehrstufige Konfiguration realisieren. Dazu später mehr. Die Kopfdatei selbst ist auch eine xml-Datei. Wenn einem Teilnehmer eine Kopfdatei zugewiesen ist, so kann (muss!) diesem Teilnehmer auch die Berechtigung an mehreren Provisionierungsdateien gegeben werden, ohne dass die Anlage deswegen eine Fehlermeldung bringt.

Syntax einer Kopfdatei

<referencedSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="provisioning_references.xsd">
    <URL>Datei1.xml</URL>
    <URL>Datei2.xml</URL>
    ...
    ...
    ...
    <URL>DateiX.xml</URL>
</referencedSettings>

Die Liste der URLs kann beliebig lang sein, es können auf Verweise auf Dateien auf anderen Servern enthalten sein. Dem zugeordneten Telefon wird zuerst die Datei Datei1.xml übergeben, danach die Datei Datei2.xml.
Einstellungen in Datei2.xml überschreiben ggfs. vorher in Datei1.xml gemachte Einstellungen. Wenn zum Beispiel in Datei1.xml Taste 14, Ebene 0 mit einer Zielwahl belegt wird, in DateiX.xml die gleiche Taste aber mit einer Konfigurationsumschaltung, so ist sie am Ende mit der Konfigurationsumschaltung und nicht mit der Zielwahl belegt.

Einstufige Provisionierung
Dies ist die einfachste Form der Provisionierung. Alle Konfigurationen sind in einer einzigen Datei, die an die Telefone ausgeliefert wird. Dies kann eine Datei für alle Nutzer sein, oder für jeden Nutzer eine eigene Datei.

Mehrstufige Provisionierung
Dadurch, dass bei Verwendung einer Kopfdatei jede später geladene Provisionierungsdatei immer die Settings der vorher geladenen Datei überschreibt (wenn denn die gleichen Settings vorkommen), kann man wunderbar mehrstufig oder Hierarchisch arbeiten. Was das bedeutet möchte ich hier an einem kleinen Beispiel zeigen.

In einer Firma sollen bestimmte Einstellungen (z.B. das Hintergrundlogo, bestimmte Funktionstasten, Sprache des Telefons) global eingestellt werden.
Dann soll es Einstellungen geben, die bei allen Mitgliedern eines Teams identisch sind (z.B. weitere Funktionstasten).
Letztenendes will man aber vielleicht auch einzelne Dinge für jeden User einzeln konfigurieren.

Jetzt könnte man natürlich für jeden User eine komplette Provisionierungsdatei anlegen, mit allen globalen Settings, allen Teamsettings und allen Settings für den konkreten User.
Wenn einem dann aber nach zwei Tagen auffällt, dass man ein globales Setting doch lieber anders setzen würde, bleibt einem nichts anderes übrig als alle Provisionierungsdateien noch einmal zu öffnen, dieses Settingzu finden und zu ändern.

Ich habe das anders gelöst:

Kopf_User1.xml

<referencedSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="provisioning_references.xsd">
    <URL>global_config.xml</URL>
    <URL>TeamSettings_Team1.xml</URL>
    <URL>settings_User1.xml</URL>
</referencedSettings>

Zuerst wird die global_config.xml übergeben, die grundlegende Konfiguration für alle in der Firma enthält, zB. Displaysprache, Hintergrundbild, Zielwahlen zu den Sekretärinnen und einen Toggle-Button für eine Gruppe, die durch die Türsprechstelle angewählt wird:

global_config.xml

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<auerSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="auer_settings.xsd">
    <providersAndAccounts>
    </providersAndAccounts>
    <configurationManager>
		<language>de</language>
		<enable>on</enable>
		<autoSave>off</autoSave>
		<httpPort>80</httpPort>
		<httpsPort>443</httpsPort>
	</configurationManager>
  	<display>
		<brightnessAutomatic>off</brightnessAutomatic>
		<brightness>79%</brightness>
		<screenOffTimeout>no_timeout</screenOffTimeout>
		<messageLed>blink_and_on</messageLed>
		<displayLed>show_active_calls</displayLed>
		<showUnregisteredVoipSubscribers>off</showUnregisteredVoipSubscribers>
		<displayOff>off</displayOff>
		<ledPowersave>off</ledPowersave>
		<messageFax>on</messageFax>
	</display>
	<wallpaper>
		<url>http://www.firmendomain.de/background.png</url>
	</wallpaper>
   	<keys>
		<key number="12" level="0">
			<function xsi:type="group">
				<operation>toggle</operation>
				<loginMode>incoming</loginMode>
				<group>700</group>
				<account>33794</account>
			</function>
			<permission>user</permission>
			<description>Klingelgruppe</description>
		</key>
		<key number="12" level="1" />
		<key number="13" level="0">
			<function xsi:type="speedDialing">
				<sipSubscription>sip_subscription_on</sipSubscription>
				<number>140</number>
				<account>33794</account>
			</function>
			<permission>user</permission>
			<description>Sekretariat 1</description>
		</key>
		<key number="13" level="1" />
		<key number="14" level="0">
			<function xsi:type="speedDialing">
				<sipSubscription>sip_subscription_on</sipSubscription>
				<number>141</number>
				<account>33794</account>
			</function>
			<permission>user</permission>
			<description>Sekretariat 1</description>
		</key>
	</keys>
</auerSettings>

Anschliessend wird die TeamSettings_Team1.xml übergeben, die in diesem Fall Zielwahltasten für alle Mitglieder des Teams einrichtet:
TeamSettings_Team1.xml

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<auerSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="auer_settings.xsd">
       <configurationManager>
    </configurationManager>
      <display>
    </display>
    <wallpaper>
    </wallpaper>
    <keys>
        <key number="7" level="0">
          <function xsi:type="speedDialing">
                <sipSubscription>sip_subscription_on</sipSubscription>
                <number>23</number>
                <account>33794</account>
            </function>
            <permission>user</permission>
            <description>User1</description>
        </key>
        <key number="7" level="1" />
        <key number="8" level="0">
          <function xsi:type="speedDialing">
                <sipSubscription>sip_subscription_on</sipSubscription>
                <number>24</number>
                <account>33794</account>
            </function>
            <permission>user</permission>
            <description>User2</description>
        </key>
        <key number="8" level="1" />
        <key number="9" level="0">
          <function xsi:type="speedDialing">
                <sipSubscription>sip_subscription_on</sipSubscription>
                <number>25</number>
                <account>33794</account>
            </function>
            <permission>user</permission>
            <description>User3</description>
        </key>
        <key number="9" level="1" />
        <key number="10" level="0">
            <function xsi:type="speedDialing">
                <sipSubscription>sip_subscription_on</sipSubscription>
                <number>26</number>
                <account>33794</account>
            </function>
            <permission>user</permission>
            <description>User4</description>
        </key>
        <key number="10" level="1" />
        <key number="11" level="0">
          <function xsi:type="speedDialing">
                <sipSubscription>sip_subscription_on</sipSubscription>
                <number>27</number>
                <account>33794</account>
            </function>
            <permission>user</permission>
            <description>User5</description>
        </key>
        <key number="11" level="1">
          <function xsi:type="speedDialing">
                <sipSubscription>sip_subscription_on</sipSubscription>
                <number>008154711</number>
                <account>33794</account>
            </function>
            <permission>user</permission>
            <description>Buddhistisches Standesamt</description>
        </key>
    </keys>
</auerSettings>

Als letzte Datei wird die settings_User1.xml übergeben. Diese richtet eine extrem wichtige zusätzliche Zielwahl ein: Den Pizzaservice! Ausserdem ist User1 der Chef und möchte auf gar keinen Fall, auch nicht versehentlich, von der Türklingel belästigt werden. Deswegen wird der Togglebutton für das Ein- und Ausloggen in die Klingelgruppe mit dieser Datei wieder gelöscht:

Settings_User1.xml

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<auerSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="auer_settings.xsd">
    <configurationManager>
    </configurationManager>
    <display>
    </display>
    <wallpaper>
    </wallpaper>
    <keys>
      <key number="0" level="0">
          <function xsi:type="speedDialing">
                <sipSubscription>sip_subscription_on</sipSubscription>
                <number>004711815</number>
                <account>33794</account>
            </function>
            <permission>user</permission>
            <description>Pizzaservice</description>
        </key>
        <key number="12" level="0" />
    </keys>
</auerSettings>

Will ich jetzt zum Beispiel für alle User das Hintergrundbild ändern, dann muss ich das nur 1x in der global_config.xml tun.
Kündigt eine Sekretärin, muss ich die Zielwahltaste auch nur in der global_config.xml löschen.
Wird ein Teammitglied ersetzt, muss ich die Zielwahlen auch nur ein mal in der TeamSettings_Team1.xml korrigieren.
Und in der Settings_UserX.xml kann ich jedem User beliebige persönliche Konfigurationen einrichten.

Nachtrag:

Man kann die xml-Dateien mit

\<!--- Kommentartext -->

auch kommentieren.

Noch ein Nachtrag:

Nach einer Woche Erfahrung sammeln haben wir mittlerweile entdeckt, dass das Provisioning nicht nur persönliche Einstellungen der Nutzer gnadenlos überbügelt (das hatte ich erwartet) wann immer ein neuer Provisioningvorgang durchgeführt wird (immer, wenn ein Provisioningfile geändert wird), sondern auch jedesmal die Anrufliste und der Verlauf im Instant Messenger gelöscht wird.

Ein dauerhaft aktiviertes Provisioning ist meiner Meinung nach also nicht wirklich sinnvoll.

Hallo Thomas.

Was meinst Du mit Instant Messenger, ist dies eine externe, zusätzlich installierte Anwendung?

Nein. Ich war auch etwas erstaunt und weiss nicht, seit wann es das gibt, aber auf den 2600IP war in der aktuellsten Firmware eine App “Instant Messenger” vorinstalliert, mit der man Nachrichten innerhalb der Telefonanlage versenden kann.

Diese Nachrichten findet man tatsaechlich in der xml-Datei des Konfigurationsexports wieder.