It is possible to customize the phone menu by editing and provisioning specific xml files. For instructions what files can be customized and how to upload the edited files, see Uploading new designs and menu structures
In version 8.x, by editing "state_settings.xml" it was possible to change the entire menu. For details on how to do this in version 8.x, see our old documentation.
As of version 10.x, the "state_settings.xml" file was split in different other files which can be customized separately:
For more information how to customize the xml files, see Uploading new designs and menu structures
Goal: add a custom menu entry to the Settings → Identity phone menu
In the identity.xml, we add the needed menu entry which directs the user to our custom minibrowser page:
...... <Menu name="Custom entry"> <URL>http://MY_HTTP_SERVER/myCustomPage.xml</URL> </Menu> .....
In my provisioning file, under <settings> we add the link to the new identity.xml file:
<?xml version="1.0" encoding="utf-8"?> <settings> <phone-settings> ... </phone-settings> <uploads> <file url="http://MY_HTTP_SERVER/identity.xml" type="gui_xml_state_settings_identity" /> </uploads> </settings>
I restart the phone and I can then see the customized menu entry:
Goal: the Dial button in the LDAP contact list always calls one of the contact number/s directly. In this example we want to change the behavior of this button to do the same as the Details button: force the user to look at the list of available contact numbers first and decide which number to dial, instead of automatically dialing one of the numbers.
Here is how we can customize the phone GUI to achieve this:
Open contact_list.xml . Find the part you are looking to change, in this example it is the Dial button:
<SoftKeyItem> <Name>F1</Name> <Label>F_DIAL</Label> <Url>phone://mb_exit#contact_transfer_or_dial=__CONTACTID__;"__DIAL_NR__";F_DIAL</Url> .....
Replace the URL for F_DIAL with the URL for F_DETAILS. The lines above will change to:
<SoftKeyItem> <Name>F1</Name> <Label>F_DIAL</Label> <Url track="yes">file:///xml/gui/contact_list.xml#sub=*[@id="details"]&var:contact_id=__CONTACTID__&action_ifc:identity.$(current_line).contact_my_room=fetch_my_room, contactId=__CONTACTID__</Url> ....
Save contact_list.xml , copy it on an HTTP server and note down its URL, for example http://10.110.16.52/xml/customize/ldap_list_custom/contact_list.xml
Create placeholder xml which will be used to instruct the phone to get the customized xml:
<?xml version="1.0" encoding="utf-8" ?> <uploads> <file url="http://10.110.16.52/xml/customize/ldap_list_custom/contact_list.xml" type="gui_xml_contactlist" /> <----------replace the URL with your own link to the customized file </uploads>
Set the Settings URL on the phone to the placeholder xml file (or if you are already using provisioning, add the content of the file to your existing provisioning file). Then reboot the phone or re-trigger the provisioning.
Goal: sometimes it is required to translate, customize or remove the message that appears on the Snom phone display when a call gets disconnected, for example because it has been answered on another device. Most PBXs would send in such cases a SIP CANCEL request with the Reason header including text "Call completed elsewhere", and the phone would then display this message on the screen.
It is possible to customize what is being displayed in this case by editing message.xml. Here is how you can customize the phone GUI to achieve this:
Open message.xml . Replace the existing text inside the IPPhoneText or SnomIPPhoneText (depending on what already exists) in order to have a resulted file similar to the following:
<?xml version="1.0" encoding="UTF-8"?> <SnomIPPhoneText state="relevant" document_id="Minibrowser_Message"> <fetch mil="$(msg_timeout)">phone://mb_exit</fetch> <Title>$(msg_title)</Title> <Repeat values=" $(msg_text)" token="|__MESS__|__DETAILS__|"> <If condition="__MESS__==Call"> <Text>My own text</Text> </If> <Else> <Text>$(msg_text)</Text> </Else> </Repeat> <If condition="$(msg_show_fkey_background)==yes"> <SoftKeyItem><Name>F1</Name><SoftKey>F_NONE2</SoftKey></SoftKeyItem> </If> </SnomIPPhoneText>
This checks the first word of the message that the phone was going to display ("$(msg_text)"). Instead of simply displaying this, we customize the xml code to check if the first word in this message is "Call". We could also check the second and third words, but to keep this simple we assume that if the text starts with "Call", then we would like to replace the text with something else (in the above example with "My own text"). We could also leave the text out and not display it at all by simply removing the words "My own text".
Save message.xml , copy it on an HTTP server and note down its URL, for example http://10.110.16.52/xml/customize/edit_message_menu_disconnected/message.xml
Create file placeholder.xml which will be used to instruct the phone to get the customized xml:
<?xml version="1.0" encoding="utf-8" ?> <uploads> <file url="http://10.110.16.52/xml/customize/edit_message_menu_disconnected/message.xml" type="gui_xml_message_file" /> </uploads>
Set the Settings URL on the phone to the placeholder xml file (or if you are already using provisioning, add the content of the file to your existing provisioning file). Then reboot or re-trigger the provisioning. The result will look something like this:
See here the placeholder xml and xml file that were used for this example (make sure you adjust the server IP and path)