aus meiner Sicht ist es ein deutlicher Nachteil von 3CX, dass mehrere Identitäten pro Telefon nicht unterstützt werden. So kann man meines Wissens nach nicht für bestimmte Gespräche im Bedarfsfall eine abweichende Absenderrufnummer aktivieren. Auch sonst sind mehrere Identitäten manchmal praktisch, und ich arbeite gerne damit. Ich beziehe mich bei allem auf snom-Telefone mit 8er-Firmware; wie es bei anderen Herstellern ist, bleibt unberücksichtigt.
Nun wusste ich nicht, wie sich zusätzliche Identitäten mit der automatischen Provisionierung vereinbaren lassen. Deshalb habe ich mal etwas gebastelt, und hoffe, dass es klappt. Bei mir sieht es so aus, vielleicht hat jemand Lust, das mal am eigenen System zu testen, und trifft auf Schwierigkeiten, die ich jetzt übersehe.
Alle snom-Telefone lassen sich so provisionieren, zukünftige 3CX-Updates der Provisionierungs-Templates sind recht pflegeleicht zu verarbeiten, es können zusätzliche Identitäten vergeben werden - allerdings halb zu Fuß, aber wenn ich ein solches Telefon "auf Werkseinstellungen setze", dann wird es gleich wieder richtig provisioniert einschließlich Identitäten und einem für dieses Gerät vielleicht festgelegten abweichenden Klingelton (Schade, dass es für Klingeltöne keine Einstellungsmöglichkeit im 3CX-Interface gibt!).
Erster Schritt
Ich baue in das 3CX-snom-Template ein paar Zeilen ein. Das mache ich ziemlich weit unten im Text, damit ich vorherige 3CX-Settings überschreibe und nicht anders herum. Deshalb setze ich den Text direkt vor die BLF-Definition von 3CX:
- Code: Select all
...
<date_us_format perm="R">off</date_us_format>
<user_expiry idx="1" perm="R">180</user_expiry>
<user_ringer idx="1" perm="RW">Ringer7</user_ringer>
</phone-settings>
<!--####################################################-->
<!--### Mein Einschub - ANFANG ###-->
<!--####################################################-->
<setting-files>
<file url="http://%%pbx_ip%%:%%pbx_http_port%%/provisioning/mein_standard.xml"/>
</setting-files>
<!--####################################################-->
<!--### Mein Einschub - ENDE ###-->
<!--####################################################-->
<!--########################################################-->
<!--### BLF Settings ###-->
<!--########################################################-->
<!--# The different BLF keys are referred to using the "idx" paramer, which can have a value between 0 and 11. The first 2 BLF keys are programmed only for line operation to allow the phone to retain Hold, Resume, and Call Transfer functionality.-->
<!--# The "fkey" field for all keys from idx="2" to idx="11" must contain a string value to specify which extension number to monitor. The provisioning template sets the value to "blf<sip:blf1@%%pbx_ip%%;user=phone>|*20*" for the first usable key (idx="2"), "blf<sip:blf2@%%pbx_ip%%;user=phone>|*20*" for the second usable key (idx="3"), and so on - where the variables "blf1" to "blf10" will be replaced by the extension number chosen from the 3CX Management Console for that extension-->
...
Dann erzeuge ich eine Datei mein_standard.xml und speichere sie in diesem Verzeichnis:
C:\ProgramData\3CX\Data\Http\Interface\provisioning
In diese Datei schreibe ich alles rein, was ich selber und ggf. abweichend von 3CX festlegen möchte. Zum Beispiel stehen die Telefone hier in ziemlich hallenden Räumen, also mache ich die Audioeinstellungen entsprechend. Jedenfalls habe ich alles schön zusammen, was meine Sonderwünsche angeht, und wenn es ein 3CX-Update für das snom-Template gibt, ist der Aufwand gering.
mein_standard.xml (die Einstellungen sind etwas willkürlich und doppelt, dient hier nur als Demo):
- Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<settings>
<phone-settings e="2">
<tone_scheme perm="R">GER</tone_scheme>
<admin_mode perm="R">on</admin_mode>
<eth_net perm="R">auto</eth_net>
<eth_pc perm="R">off</eth_pc>
<transfer_on_hangup_with_starcode perm="R">on</transfer_on_hangup_with_starcode>
<transfer_on_hangup perm="R">on</transfer_on_hangup>
<pickup_indication perm="R">off</pickup_indication>
<alert_info_playback perm="R">off</alert_info_playback>
<holding_reminder perm="R">on</holding_reminder>
<audio_device_indicator perm="R">on</audio_device_indicator>
<cw_dialtone perm="RW">on</cw_dialtone>
<silence_compression perm="R">off</silence_compression>
<handsfree_mode perm="RW">echoic</handsfree_mode>
<settings_refresh_timer perm="R">3600</settings_refresh_timer>
<advertisement perm="R">off</advertisement>
<advertisement_url perm="R">http://www.snom.com/en/AddOn</advertisement_url>
<release_sound perm="R">off</release_sound>
<mwi_dialtone perm="R">normal</mwi_dialtone>
<call_waiting perm="RW">off</call_waiting>
<subscribe_config perm="R">on</subscribe_config>
<pnp_config perm="R">off</pnp_config>
<display_method perm="RW">display_name</display_method>
<date_us_format perm="R">off</date_us_format>
<user_expiry idx="1" perm="R">180</user_expiry>
<user_ringer idx="1" perm="RW">Ringer7</user_ringer>
</phone-settings>
</setting>
Zweiter Schritt
Diesen Gedanken habe ich noch erweitert. Ich habe den Text verlängert, den ich in das 3CX-snom-Template einbaue:
- Code: Select all
...
<!--####################################################-->
<!--### Mein Einschub - ANFANG ###-->
<!--####################################################-->
<setting-files>
<file url="http://%%pbx_ip%%:%%pbx_http_port%%/provisioning/mein_standard.xml"/>
<file url="http://%%pbx_ip%%:%%pbx_http_port%%/provisioning/phone%%extension_number%%-settings.xml"/>
<file url="http://%%pbx_ip%%:%%pbx_http_port%%/provisioning/phone%%extension_number%%-identity2.xml"/>
<file url="http://%%pbx_ip%%:%%pbx_http_port%%/provisioning/phone%%extension_number%%-identity3.xml"/>
<file url="http://%%pbx_ip%%:%%pbx_http_port%%/provisioning/phone%%extension_number%%-identity4.xml"/>
<file url="http://%%pbx_ip%%:%%pbx_http_port%%/provisioning/phone%%extension_number%%-identity5.xml"/>
</setting-files>
<!--####################################################-->
<!--### Mein Einschub - ENDE ###-->
<!--####################################################-->
...
Nun wünscht der User der Nebenstelle 12 einen abweichenden Klingelton. Den hat er sich früher immer selber eingestellt, aber wenn ich zum Beispiel ein Firmware-Update seines Telefons gemacht habe, dann habe ich gerne auch die Werkseinstellungen aufgerufen, und er hat sich beschwert.
Also habe ich in das Verzeichnis "C:\ProgramData\3CX\Data\Http\Interface\provisioning" die Datei phone12-settings.xml gespeichert und die Einstellung für diese Nebenstelle ein für alle mal festgelegt:
- Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<settings>
<phone-settings e="2">
<user_ringer idx="1" perm="R">Ringer5</user_ringer>
</phone-settings>
</setting>
Und dann gibt es bei uns noch eine separate Firma "Nebenverdienst" ohne festes Personal und ohne eigenes Telefon, aber mit einer abweichenden Nummer, welche nach außen publiziert wird.
Die Mitarbeiter mit den Nebenstellen 13, 14 und 15 betreuen diese separate Firma. Die Firma "Nebenverdienst" hat die virtuelle Nebenstelle 25. Diese wird den drei Benutzern als zusätzliche zweite Identität auf die Telefone gelegt. Wenn die Benutzer für "Nebenverdienst" ausgehend telefonieren, wechseln sie auf Identität 2. Natürlich klingeln die Telefone bei eingehenden Rufen auch anders.
Dazu speichere ich einfach unter oben genanntem Pfad noch drei XML-Dateien mit identischem Inhalt:
phone13-identity2.xml, phone14-identity2.xml, phone15-identity2.xml
- Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<settings>
-<phone-settings e="2">
<!--########################################-->
<!--### SIP Settings NEBENVERDIENST ###-->
<!--########################################-->
<user_name perm="" idx="2">25</user_name>
<user_pname perm="" idx="2">25</user_pname>
<user_pass perm="" idx="2">password</user_pass>
<user_realname perm="" idx="2">Nebenverdienst</user_realname>
<user_host perm="" idx="2">10.10.10.10:5060</user_host>
<user_expiry perm="" idx="2">900</user_expiry>
<user_subscription_expiry perm="" idx="2">900</user_subscription_expiry>
<user_remove_all_bindings perm="" idx="2">on</user_remove_all_bindings>
<user_ringer idx="1" perm="RW">Ringer3</user_ringer>
</phone-settings>
</setting>
Achtung: Hier muss "10.10.10.10:5060" stehen und man kann nicht mit "%%pbx_ip%%:%%param::sipport%%" arbeiten, weil diese Datei nicht von 3CX ausgewertet wird, sondern vom snom.
Die Dateiverweise im Ausgangstemplate, die ins Leere führen, haben bei mir noch keine Fehler oder Probleme verursacht. Vielleicht übersehe ich etwas?
Mir wird gerade erst klar, was man mit Provisionierung so alles machen kann. Über weitere Anregungen und Hinweise auf Fehler, die ich (noch) mache, wäre ich dankbar!
Oliver


