Child pages
  • Phone menu customization

Contents



Introduction

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

Note: In order to customize the files you need to first download the original files. All the original files can be found into the "Customization archive file" released along with the firmware, in the Firmware update centre.



Examples

Settings menu

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:

  • preferences.xml

  • call_features.xml

  • identity.xml

  • network.xml

  • maintenance.xml

  • information.xml

For more information how to customize the xml files, see Uploading new designs and menu structures

Example: add custom entry in the identity menu

Goal: add a custom menu entry to the SettingsIdentity phone menu

  1. First, we will need the default xml file identity.xml. We find this file in the customizing tar for the proper version. In this example, we used version 10.1.37.10 on D765, so we downloaded "snomD765-10.1.37.10-customizing.tar.gz"

  2. In the identity.xml, we add the needed menu entry which directs the user to our custom minibrowser page:

    identity.xml
    ......
      <Menu name="Custom entry">
         <URL>http://MY_HTTP_SERVER/myCustomPage.xml</URL>
      </Menu>
    .....
  3. 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>
  4. I restart the phone and I can then see the customized menu entry:


Edit LDAP contact list

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:

  1. First, we will need the default xml file used for showing the contacts list, the file is contact_list.xml. We find this file in the customizing tar for the proper version. In this example, I used version 10.1.30.0 on D785, so I used "snomD785-10.1.30.0-customizing.tar.gz"

  2. Extract snomD785-10.1.30.0-customizing.tar.gz and find contact_list.xml in it (usually under xml/gui).

  3. 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>
    .....
  4.  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"]&amp;var:contact_id=__CONTACTID__&amp;action_ifc:identity.$(current_line).contact_my_room=fetch_my_room, contactId=__CONTACTID__</Url>
    ....
  5. 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

  6. 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>
  7. 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.


Customize the disconnected screen (this works only on phones that don't have a color menu)

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:

  1. First, you will need the default xml file used for showing the disconnected message, the file is message.xml on the phones that don't have the new color pui (see list here). You can find this file in the customizing tar for the proper version. In this example, we used version 8.9.3.80 on D375, so the customizing archive was "snomD375-8.9.3.80-customizing.tar.gz"

  2. Extract snomD375-8.9.3.80-customizing.tar.gz and find text file message.xml in it (usually under xml/gui)

  3. 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".

  4. 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

  5. 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>
  6. Copy placeholder.xml on an HTTP server and note down its URL, for example http://10.110.16.52/xml/customize/edit_message_menu_disconnected/placeholder.xml
  7. 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)