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:
<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
<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:
<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:
<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:
<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).
<?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:
<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
<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.