The main global config file for Polycom phones is /etc/sipxpbx/polycom/polycom_sip.cfg
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 sipXcom. 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. |
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" /> |
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" /> |
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" /> |
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" /> |
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.
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> |
For demonstration purposes here are five sample ringtones you can use:
CTU.wav
OldRing.wav
Rooster.wav
Rhodes.wav
Fantasy.wav
The template for newer phones within sipXcom 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
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.
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 sipXcom version 4.6 Update 8.
<?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"/> |
The lines that the user needs to enter or customize will be in red in the section below! The rest should mostly be copy-and-pastable.
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <bg> <bg.medRes> <bg.medRes.gray bg.medRes.gray.selection="3,1"> <bg.medRes.gray.bm bg.medRes.gray.bm.1.adj="0" bg.medRes.gray.bm.1.name="Logo256x116.jpg" /> </bg.medRes.gray> </bg.medRes> </bg> <up up.backlight.idleIntensity="0" /> |
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <bg> <bg.hiRes> <bg.hiRes.gray bg.hiRes.gray.selection="3,1"> <bg.hiRes.gray.bm bg.hiRes.gray.bm.1.adj="0" bg.hiRes.gray.bm.1.em.name="Logo320x160.jpg" bg.hiRes.gray.bm.1.name="Logo320x160.jpg" /> </bg.hiRes.gray> </bg.hiRes> </bg> <up up.backlight.idleIntensity="0" /> |