Polycom Phone Custom Configuration Files Patch

Though the Polycom provisioning system built into sipXecs is very thorough it doesn't leave much room for customization. Things like adding custom ringtones, background images, and EFK (enhanced function keys) aren't possible. Here is a patch for the existing Polycom provisioning system that allows for custom XML file uploads. To apply it to your sipXecs 4.2 system replace the following three files in /etc/sipxpbx/polycom

Make a backup of these files and retrieve them to your server, run the following commands as the root user:

cd ~
mkdir sipxbckup
cd /etc/sipxpbx/polycom
cp mac-address.cfg.vm ~/sipxbckup cp phone.properties ~/sipxbckup
cp phone.xml ~/sipxbckup wget http://serverURL.com/sipxecs/custom/config/polycom/mac-address.cfg.vm wget http://serverURL.com/support/sipxecs/custom/config/polycom/phone.properties wget http://serverURL.com/support/sipxecs/custom/config/polycom/phone.xml

After replacing those three files restart the sipXecs service by running the following command from the Linux command line interface:

service sipxecs restart

Wait a few minutes after sipXecs restarts and log back into the web interface with superadmin credentials. Once logged in, browse to Devices >> Phones >> {phone_group_name} >> Polycom 550/560 >> Features where {phone_group_name} is the name of a group of phones you have created. Now click the Show Advanced Settings link at the top of the page, then scroll to the bottom of the page. You should see the Raw Polycom Config / Cumulative and Raw Polycom Config / Exclusive fields.

To apply a custom config file to a group of phones, enter the name of the config file you plan to upload, such as poly-custom-conf.cfg If you're unsure whether you should use the cumulative or the exclusive config setting, the safest bet is cumulative.
If you haven't uploaded your custom configuration file to the server yet, lets go over how to create one and upload it to the server.
NOTE: If you wish to use EFK buttons, select the enhanced-feature-keys checkbox just above the Raw Polycom Config/Cumulative setting.

I will give an example of how to set ringtones and enable enhanced function keys. To start, here are some ringtones we'll use:

NOTE: These ringtones will only work with Polycom models that support HD voice. These ringtones will need to be resampled to 8kHz for older models.

To add all these files we will need to increase the tones quota in the config file. I will also include a few useful EFK buttons. Here is an example config file with these settings:

poly-custom-conf.cfg

<?xml version="1.0" encoding="utf-8" standalone="yes"?>  
<!-- SIP Application Configuration File -->
<!-- $RCSfile: sip.cfg,v $  $Revision: 1.483.2.30 $ -->
<sip>
   <resource>
    <finder
        res.finder.sizeLimit="300"
        res.finder.minFree="600"
    />
    <quotas
        res.quotas.1.name="tone"
        res.quotas.1.value="1000"
        res.quotas.2.name="bitmap"
        res.quotas.2.value="10"
        res.quotas.3.name="font"
        res.quotas.3.value="10"
        res.quotas.4.name="xmlui"
        res.quotas.4.value="10"
        res.quotas.5.name="background"
        res.quotas.5.value="600"
    />
   </resource>
   <sampled_audio saf.1=""
    saf.2="BreakBeat.wav"
    saf.3="CTU.wav"
    saf.4="OldRing.wav"
    saf.5="Fantasy.wav"
    saf.6="PrettyBells.wav"
    saf.7="Retro.wav"
    saf.8="Jazzy.wav"
    saf.9="Perky.wav"
    saf.10=""
    saf.11=""
    saf.12=""
    saf.13=""
    saf.14=""
    saf.15=""
    saf.16=""
    saf.17=""
    saf.18=""
    saf.19=""
    saf.20=""
    saf.21=""
    saf.22=""
    saf.23=""
    saf.24=""
   />
   <efk>
      <version efk.version="2" />
      <efklist
        efk.efklist.1.mname="intercom1"
        efk.efklist.1.label="Intercom"
        efk.efklist.1.status="1"
        efk.efklist.1.action.string="*76$P1N4$$Tinvite$"
        efk.efklist.2.mname="xfervm1"
        efk.efklist.2.label="Transfer To Voicemail"
        efk.efklist.2.status="1"
        efk.efklist.2.action.string="8$P2N4$$Trefer$"
        efk.efklist.3.mname="grppage1"
        efk.efklist.3.label="Group Page"
        efk.efklist.3.status="1"
        efk.efklist.3.action.string="*77$P3N2$$Tinvite$"
        efk.efklist.4.mname="blndxfer1"
        efk.efklist.4.label="Blind Transfer"
        efk.efklist.4.status="1"
        efk.efklist.4.action.string="$P1N4$$Trefer$"
      />
      <efkprompt
        efk.efkprompt.1.status="1"
        efk.efkprompt.1.label="Extension: "
        efk.efkprompt.1.userfeedback="visible"
        efk.efkprompt.1.type="numeric"
        efk.efkprompt.2.status="1"
        efk.efkprompt.2.label="Mail Box: "
        efk.efkprompt.2.userfeedback="visible"
        efk.efkprompt.2.type="numeric"
        efk.efkprompt.3.status="1"
        efk.efkprompt.3.label="Page Group: "
        efk.efkprompt.3.userfeedback="visible"
        efk.efkprompt.3.type="numeric"
      />
   </efk>
   <softkey
     softkey.1.label="Xfer2VM"
     softkey.1.action="!xfervm1"
     softkey.1.enable="1"
     softkey.1.precede="0"
     softkey.1.use.idle="0"
     softkey.1.use.active="1"
     softkey.1.use.alerting=""
     softkey.1.use.dialtone=""
     softkey.1.use.proceeding=""
     softkey.1.use.setup=""
     softkey.1.use.hold=""
     softkey.2.label="BlindXfer"
     softkey.2.action="!blndxfer1"
     softkey.2.enable="1"
     softkey.2.precede="0"
     softkey.2.use.idle="0"
     softkey.2.use.active="1"
     softkey.2.use.alerting=""
     softkey.2.use.dialtone=""
     softkey.2.use.proceeding=""
     softkey.2.use.setup=""
     softkey.2.use.hold="0"
     softkey.3.label="Intercom"
     softkey.3.action="!intercom1"
     softkey.3.enable="1"
     softkey.3.precede="0"
     softkey.3.use.idle="1"
     softkey.3.use.active="1"
     softkey.3.use.alerting="1"
     softkey.3.use.dialtone="1"
     softkey.3.use.proceeding=""
     softkey.3.use.setup=""
     softkey.3.use.hold="1"
     softkey.4.label="Grp Page"
     softkey.4.action="!grppage1"
     softkey.4.enable="1"
     softkey.4.precede="0"
     softkey.4.use.idle="1"
     softkey.4.use.active="1"
     softkey.4.use.alerting="1"
     softkey.4.use.dialtone="1"
     softkey.4.use.proceeding=""
     softkey.4.use.setup=""
     softkey.4.use.hold="1"
     softkey.feature.newcall="1"
     softkey.feature.endcall="1"
     softkey.feature.split="1"
     softkey.feature.join="1"
     softkey.feature.forward="1"
     softkey.feature.directories=""
     softkey.feature.callers=""
     softkey.feature.mystatus="1"
     softkey.feature.buddies="1"
     softkey.feature.basicCallManagement.redundant="0"
   />
</sip>
Once you have created this custom config file you must upload and activate all the ringtones and the config file. To do this:
  1. Browse to Devices >> Device Files
  2. Select the Add Files drop down menu then select Unmanaged (T)FTP Files
  3. Add a Name and Description (in this case, something like Polycom-Custom-Configs)
  4. Click Apply
  5. For File 1, click Browse
  6. Find and select the custom config file you wish to upload, then press Open
  7. Press the Apply button
  8. Press the Activate button. You should now see the following screen:

If so then your custom configuration is now active. You now need to upload the ringtones the same way you uploaded the config files, then do a Send Profiles on your phones.