Polycom Phone Customization

Config Files

The main global config file for Polycom phones is /etc/sipxpbx/polycom/polycom_sip.cfg

Enhanced Feature Key (EFK) buttons

Adding EFK buttons to Polycom phones is fairly simple to do provided you are familiar with how to program EFK buttons and how to edit Polycom XML configuration files. A detailed PDF on creating EFK's can be found here. A common scenario for this is adding a Blind Transfer button while in a call. The first thing you have to do is ensure enhanced-feature-keys is checked under the Features section of the phone or group of phones in sipXconfig for which you wish to enable this feature.

Once you have this setting checked you will need to modify /etc/sipxpbx/polycom/polycom_sip.cfg and add in the EFK XML.

Be sure to back this file up before editing. Changes to this file affect all Polycom phones that are configured in sipXecs. Proceed with caution. This XML snippet must be between the <sip></sip> tags which are at the top and bottom of the configuration file. I recommend placing the XML close to the bottom so it is easy to manage.

Blind Transfer Key

The following is an example of the EFK configuration for adding a Blind Transfer Key:

/etc/sipxpbx/polycom/polycom_sip.cfg
   <efk>
      <version efk.version="2" />
      <efklist
        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>
   <softkey
     softkey.5.label="BlindXfer"
     softkey.5.action="!blndxfer1"
     softkey.5.enable="1"
     softkey.5.precede="1"
     softkey.5.use.idle="0"
     softkey.5.use.active="1"
     softkey.5.use.alerting=""
     softkey.5.use.dialtone=""
     softkey.5.use.proceeding=""
     softkey.5.use.setup=""
     softkey.5.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"
   />

Intercom Key

The following is an example of how to add an Intercom key

/etc/sipxpbx/polycom/polycom_sip.cfg
   <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$"
      />
      <efkprompt
        efk.efkprompt.1.status="1"
        efk.efkprompt.1.label="Extension: "
        efk.efkprompt.1.userfeedback="visible"
        efk.efkprompt.1.type="numeric"
      />
   </efk>
   <softkey
     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.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"
   />

Group Page Key

The following is an example of how to add a Group Page key, assuming a 2 digit page group:

/etc/sipxpbx/polycom/polycom_sip.cfg
   <efk>
      <version efk.version="2" />
      <efklist
        efk.efklist.3.mname="grppage1"
        efk.efklist.3.label="Group Page"
        efk.efklist.3.status="1"
        efk.efklist.3.action.string="*77$P3N2$$Tinvite$"
      />
      <efkprompt
        efk.efkprompt.3.status="1"
        efk.efkprompt.3.label="Page Group: "
        efk.efkprompt.3.userfeedback="visible"
        efk.efkprompt.3.type="numeric"
      />
   </efk>
   <softkey
     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"
   />

Transfer To Voicemail Key

The following is an example of how to add a Transfer to Voicemail key:

/etc/sipxpbx/polycom/polycom_sip.cfg
   <efk>
      <version efk.version="2" />
      <efklist
        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$"
      />
      <efkprompt
        efk.efkprompt.2.status="1"
        efk.efkprompt.2.label="Mail Box: "
        efk.efkprompt.2.userfeedback="visible"
        efk.efkprompt.2.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.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"
   />

Tying it all together

To following is a combination of all the examples above:

/etc/sipxpbx/polycom/polycom_sip.cfg
   <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.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.5.label="BlindXfer"
     softkey.5.action="!blndxfer1"
     softkey.5.enable="1"
     softkey.5.precede="1"
     softkey.5.use.idle="0"
     softkey.5.use.active="1"
     softkey.5.use.alerting=""
     softkey.5.use.dialtone=""
     softkey.5.use.proceeding=""
     softkey.5.use.setup=""
     softkey.5.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"
   />

To enable these EFK settings, send profiles and restart phones.

Park Keys

In the following example single digit park orbit numbers are utilized. This can be customized by changing the 1, 2 and 3 values in the following lines that contain action.string (change both the refer and invite lines).

/etc/sipxpbx/polycom/polycom_sip.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="park1"
        efk.efklist.1.label="Park 1"
        efk.efklist.1.status="1"
        efk.efklist.1.action.string="1$Trefer$"
        efk.efklist.2.mname="park2"
        efk.efklist.2.label="Park 2"
        efk.efklist.2.status="1"
        efk.efklist.2.action.string="2$Trefer$"
		efk.efklist.3.mname="park3"
        efk.efklist.3.label="Park 3"
        efk.efklist.3.status="1"
        efk.efklist.3.action.string="3$Trefer$"
		efk.efklist.4.mname="pickup1"
        efk.efklist.4.label="Park 1"
        efk.efklist.4.status="1"
        efk.efklist.4.action.string="*41$Tinvite$"
		efk.efklist.5.mname="pickup2"
        efk.efklist.5.label="Park 2"
        efk.efklist.5.status="1"
        efk.efklist.5.action.string="*42$Tinvite$"
		efk.efklist.6.mname="pickup3"
        efk.efklist.6.label="Park 3"
        efk.efklist.6.status="1"
        efk.efklist.6.action.string="*43$Tinvite$"
      />
      <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="Park 1"
     softkey.1.action="!park1"
     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="Park 2"
     softkey.2.action="!park2"
     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="Park 3"
     softkey.3.action="!park3"
     softkey.3.enable="1"
     softkey.3.precede="0"
     softkey.3.use.idle="0"
     softkey.3.use.active="1"
     softkey.3.use.alerting=""
     softkey.3.use.dialtone=""
     softkey.3.use.proceeding=""
     softkey.3.use.setup=""
     softkey.3.use.hold="0"
     softkey.4.label="Park 1"
     softkey.4.action="!pickup1"
     softkey.4.enable="1"
     softkey.4.precede="0"
     softkey.4.use.idle="1"
     softkey.4.use.active="0"
     softkey.4.use.alerting=""
     softkey.4.use.dialtone=""
     softkey.4.use.proceeding=""
     softkey.4.use.setup=""
     softkey.4.use.hold="0"	 
	 softkey.5.label="Park 2"
     softkey.5.action="!pickup2"
     softkey.5.enable="1"
     softkey.5.precede="0"
     softkey.5.use.idle="1"
     softkey.5.use.active="0"
     softkey.5.use.alerting=""
     softkey.5.use.dialtone=""
     softkey.5.use.proceeding=""
     softkey.5.use.setup=""
     softkey.5.use.hold="0"	 
	 softkey.6.label="Park 3"
     softkey.6.action="!pickup3"
     softkey.6.enable="1"
     softkey.6.precede="0"
     softkey.6.use.idle="1"
     softkey.6.use.active="0"
     softkey.6.use.alerting=""
     softkey.6.use.dialtone=""
     softkey.6.use.proceeding=""
     softkey.6.use.setup=""
     softkey.6.use.hold="0"
     softkey.feature.newcall="1"
     softkey.feature.endcall="0"
     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>

Custom Ringtones

For demonstration purposes here are five sample ringtones you can use:
CTU.wav
OldRing.wav
Rooster.wav
Rhodes.wav
Fantasy.wav

 

Version 4.6 using Polycom firmware 4.x and above

The template for newer phones within sipxecs 4.6 has a tab under the phone configuration, or phone group configuration for adding a customer Polycom file.   At that tab, enter the name of a custom Polycom file that contains your customer ringtones.  

Create the customer configuration file and use the following format within that file for your ring tones -

<sampled_audio saf.1="ctu_16.wav" saf.2="OldRing.wav" saf.3="Rooster.wav" saf.4="Rhodes.wav" saf.5="Fantasy.wav" saf.6="" saf.7="" saf.8="" saf.9="" 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="" />

Upload the customer file and your ring tones to the /var/sipxdata/configserver/phone/profile/tftproot/

Upload your custom ring tones to the same directory

 

Version 4.4 and prior versions and 4.6 using Polycom firmware versions below 4.x

Under Devices -> Device Files upload them as Unmanaged (T)FTP Files. You will now need to modify /etc/sipxpbx/polycom/polycom_sip.cfg and find then change the following line:

/etc/sipxpbx/polycom/polycom_sip.cfg
<sampled_audio
    saf.1=""
    saf.2=""
    saf.3=""
    saf.4=""
    saf.5=""
    saf.6=""
    saf.7=""
    saf.8=""
    saf.9=""
    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=""
/>

to

/etc/sipxpbx/polycom/polycom_sip.cfg
<sampled_audio
    saf.1=""
    saf.2="CTU.wav"
    saf.3="Rhodes.wav"
    saf.4="Rooster.wav"
    saf.5="OldRing.wav"
    saf.6="Fantasy.wav"
    saf.7=""
    saf.8=""
    saf.9=""
    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=""
/>

Note that saf.1 is left blank. This slot is actually used by the default sound file SoundPointIPWelcome.wav so if a sound file is defined in this slot it will not appear on the phone.

To enable the ringtones, send profiles and restart phones.

Change User and Admin Passwords for Polycom Phones

This will allow you to change the web and telephone keypad passwords for admin (default is 456) and User (default is 123) on the Polycom phones. Tested with Polycom firmware version 4.0.4 and sipXecs version 4.6 Update 8.

  • Log into server command line interface.
  • With your favorite text editor, create /var/sipxdata/configserver/phone/profile/tftproot/passwords.cfg
  • The file should look like the following:

 

/var/sipxdata/configserver/phone/profile/tftproot/passwords.cfg
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<device device.set="1"/>
  <auth device.auth.localAdminPassword.set="1" device.auth.localAdminPassword="your_user_pwd"/>
  <auth device.auth.localUserPassword.set="1" device.auth.localUserPassword="your_user_pwd"/>

 

  • Save your file.
  • In the sipXecs web interface, you can apply this to phones individually or to groups in the Custom Configuration field. If that field is blank, input just the filename you created above (not the entire path); if you already have other custom config files, you can append this to the list.
  • Save, send profiles and restart phones.