Skip to main content

Custom Polycom Soft Key programming

Posted by eeman on Wed, 03/25/2009

Below are 3 examples of custom softkey buttons. Consult the polycom administrators guide for more explanations of each setting and what can be set on a macro action.
The efk version number must always be declared. I also start out by disabling the MyStat button on the polycom phone since the enhanced presence does not work with asterisk anyway.
Additional softkeys can be disabled. Here is a list of the feature names to be defined in softkey.feature.NAME format:

  • basicCallManagement.redundant
  • buddies
  • callers
  • directories
  • endcall
  • forward
  • join
  • mystatus
  • newcall
  • split

Normally I group all the settings together, ie all the efklists together and all the softkeys together. However, for this illustration, I am going to group things by the function so it can be more easily understood.
This is an example of sending the pickup code (defined here as *8) used by features.conf:
efk.efklist.1.label="Call Pickup"
The pickup softkey is set to display when the phone is either in the idle state or a line is on hold.
This is an example of sending the #9 call recording sequence defined in features.conf:
efk.efklist.2.label="Call Recording"
The recording softkey is set to appear only on an active call.
This is an example of directed call pickup. It is more complex than the other two in that it prompts the user to input additional information prior to sending a string of data. For this we need a prompt menu(efkprompt) defined:
efk.efklist.3.label="Directed Call Pickup"
efk.efkprompt.1.label="Extension: "
The directed call soft key is set to appear when the phone is either in the idle state of on hold.
Possible states that can be defined using the softkey.N.use.STATE format include:

  • active
  • alerting
  • dialtone
  • hold
  • idle
  • proceeding
  • setup

Submitted by olekaas on Fri, 03/27/2009 Permalink

Sweet - the call pickup is on my too long to do list. Now I can just copy paste and save the hacking for something else :-)

The example with the prompt is interesting. I would like to replace the phone forwarding features with keys for activating forward on the server. I guess that there need to be brewed a few new server scripts to do that. But maybe this would be a job for the micro browser (easy to view status).

Any idea why enhanced presence doesn't work under asterisk? Is it asterisk or should I harrass Polycom to get this working? Or maybe just remove it form my to do list


Submitted by eeman on Fri, 03/27/2009 Permalink

olekass: asterisk doesnt keep track of things like 'out to lunch' etc. isymphony uses their browser to track those things, but only within isymphony. Iam not sure if its a sip message or something else that polycom is using for those stats.

Submitted by hbondy on Thu, 07/30/2009 Permalink


Is it true that the polycom phones cannot show when an incoming call is ringing to an extension? Without some type of flashing BLF during an extension ringing, how would one know to make a directed pickup?

It seems that my blf key on the Polycom Attendant Console shows either "in use", "idle" or "disconnected" No presence condition for "ringing" or "alerting"? WHat am I missing and is there a workaround?



Submitted by hbondy on Thu, 07/30/2009 Permalink

Is there a way to put a blf or speedial on a PARTICULAR key? I have sidecars and would like to leave some blank keys between the "line" keys and the "blf" keys but the only way I have come up with is to add "blank" name contacts with different "ct" fields. Even this shows that funny looking "speeddial" on the blank line.



Submitted by hbondy on Thu, 07/30/2009 Permalink

I sure do. In the general section of SIP.conf. When a call comes to a phone that the polycom is subscribed to, the polycom registers as "in use" rather than flashing as in "ringing"

I am on Ast

Submitted by hbondy on Fri, 07/31/2009 Permalink

Absolutely. I even see the notification message go by on the Asterisk Console. It says changing state to "ringing"

The problem is that the polycom displays this as "in use" meaning steady lamp on and in use symbol rather than a "ringing" or flashing lamp and some other sympol in the LCD display so you cannot differentiate a ringing phone from an in use phone. If you cannot differentiate these 2 conditions, how can you know when and where to make a directed pickup?

Submitted by moshe on Sat, 08/08/2009 Permalink

What would be the difference between call pickup and directed call pickup

Is it that call pick up is picking up any call that ring and directed is only from a specific extension while it rings

I don't currently have the environment to figure it out while I have a customer who want to have some thing like directed call pickup as I mentioned I want to know if that a solution for him

does any one have written the softkey code for call parking while incall,

Submitted by eeman on Sun, 08/09/2009 Permalink

Call pickup will pick up any call offered to a phone whose assigned callgroup matches your pickup group. In MTE only tenantID's 1-63 can even use this feature. Directed call pickup is a means of saying 'pick up the call that is ringing extension 101' by dialing some pattern like *8101 to indicate which extension to pickup.

Submitted by hsoares on Wed, 12/16/2009 Permalink

Hi hbondy

did you manage to get the blf's to blink.

I'm having the same issue.

I have a polycom 650 with 2 expansion modules, the phones are running SIP 3.2.2 that should support enhanced BLF (that should blink).

Doing a "show hints" I can see "ringing" but the phone show it as busy (steady light)

Does anyone had the same issue, I'm driving crazy with this one.

Thanks in advance for everyone.

Submitted by moshe on Fri, 03/12/2010 Permalink


is it possible to make a efk "join" to join a conference while the third party is still ringing (before the 3rd party answers the call)

as long as it is in the ring state the only button there is, is "end call" is it possible to fool polycom as soon as it a call starts ringing it should seem as if it is answered

i have a customer that is all day on the road and his secretory is dialing for him the numbers and she stays on the call muted to take notes of each call and of course he don't want his clients to know that so he wants to be conferenced in before the phone is answered

Submitted by eeman on Fri, 03/12/2010 Permalink

so call him first, then call the 3rd party and hit conf right away

you could also play with dynamic conference rooms in isymphony and use something like that to drag the call into the conference room. Its also pretty common for excutives to have their administrative assistants making their calls 'Yes, Mr. Smith? I'm calling on behalf of Jerome Butler, with Whon, Settler and Butler; your lawfirm? Yes, I will go ahead and connect you now.' As far as he is concerned it was a transfer call.

Submitted by moshe on Fri, 03/12/2010 Permalink

polycom doesn't let hit conference while in ringing state

so in theory there are to options not sure if it is possible

1 to create a efk "join"for ringing state
2 to fool polycom that it want out of the ringing state already even it is still ringing (for 1 tenant only)

i know it is a stretch

Submitted by xxot on Tue, 02/15/2011 Permalink

Does anyone know: is it possible to use speed dial keys for entering number in the example with call pickup above:

efk.efklist.3.label="Directed Call Pickup"
efk.efkprompt.1.label="Extension: "

i.e. after pressing "Directed Call Pickup" phone asks me an extension. If I press speed dial button which is pointed to the number, which I would like to pick up, it creates a new call instead of passing digits to existing channel. Is it possible to change this behavior? During a transfer it works perfectly, but in this case it doesn't.

Submitted by eeman on Tue, 02/15/2011 Permalink

not like that. you need to use new firmware on a new generation phone using the new method of attendant registration. Ringing state will blink green. during this state pressing the linekey will pick up that call. No softkey necessary.

Submitted by xxot on Tue, 02/15/2011 Permalink

Is it possible for Polycom SoundPoint 650? I have tried to use latest firmware 3.3.1 but it seems it doesn't understand thirdlane's config. I didn't have time to dig into it and downgrade to version 3.2.4 which is work ok. Does 3.3.1 allows me do things you mentioned above or I need another phone? Does SP 650 belong to new generation phones?

Submitted by xxot on Wed, 02/16/2011 Permalink

Have faced an issue with intercom and speed dial :( The problem similar to the issue above: want to page extension and use speed dial button for this. I've create button "intercom" which could dial *78. and ask an extension for paging (via thirdlane's script). I would like to use speed dial to point this extension, but when I press speed, it creates new call. I just need to prepend some digits in front of the extension, which is on the speed dial. I don't want to create 2 speed buttons: one for regular call and one for paging. Feel that solution should be easy, but can't find it. Please, advice.

Submitted by eeman on Wed, 02/16/2011 Permalink

you're going to want to open a ticket with polycom to even see if what you want to do is even possible. To speek with polycom they generally require you to go through your reseller, and they usually require you to have an extended maintenance contract on one of your phones (they will ask for that MAC). The only feature I know of that works that way is the transfer softkey.

Submitted by xxot on Wed, 02/16/2011 Permalink

Oh, my god, so complicated. But it is base feature, don't you think so? If you are a receptionist who process 10-20 calls per minute you will fight for every key pressing. And it's a problem not only with intercom. To example, you may want to send a call to voicemail, not directly on extension. In this case the same - I need to prepend the speed dial number with some digits. And these polycoms are not so cheap, actually. Thanks for advice. Will try to ask them about it.

Submitted by cbbs70a on Wed, 08/17/2011 Permalink

Oh Polycom Gods;
I've spent countless hours trying to to something that should be very simple. I have some IP500's and I'm trying to program SoftKey3, SoftKey4, and the Transfer (hard) key without success. I thought that I should be able to do something like this in sip.cfg:

keys key.scrolling.timeout="1" key.IP_500.37.function.prim="*2" key.IP_500.25.function.prim="*8"

Where 37 is the key for the Transfer button, and 25 is the SoftKey3 button. Clearly I am missing something (along with not being able to label the soft key). I am eternally in the forums debt for any help at all.

Submitted by eeman on Wed, 08/17/2011 Permalink

2 things..

you never ever alter sip.cfg directly

neither the IP500 or the IP501 support this version of firmware to perform this configuration.

Submitted by cbbs70a on Wed, 08/17/2011 Permalink

Ok. I hear what you're saying about not editing sip.cfg. But seriously, I can't add a simple key for call pickup (*8)? That completely blows. I know the 500's are old phones, but I was hoping to be able to do something. Its not like I'm asking the phones to do something state of the art.

Submitted by eeman on Wed, 08/17/2011 Permalink

the 500's wont support firmware beyond sip 2.1.2
the 501's stopped at sip 3.1.3

those features you are looking for only work on phones that have the silver and black color scheme in software 3.2.x

Submitted by cbbs70a on Wed, 08/17/2011 Permalink

Well, I certainly appreciate your input as always. Whats a decent and cost-effective Polycom phone that I should be looking at? I was able to make enough progress with this to (maybe) satisfy the freakin' customer from hell. What I did was program some of the hard keys as speeddial keys. If anyone gives a crap about this (I know I don't anymore) you can add speeddial entries in MAC-directory.xml. Instead of a phone number for the speeddial, I just added something like '*8'. For the first name, I just called it "Pickup". Then I set a hard key like so:

key.IP_500.31.function.prim="SpeedDial" key.IP_500.31.subPoint.prim="1"

where 31 is the key ID and the second entry says map the 1st speeddial entry to the key. Not rocket science, but it works.
Thanks again for your help.

Submitted by eeman on Thu, 08/18/2011 Permalink

one new feature they added in the 3.2.x firmware was the ability to have enhanced monitoring of a buddy. So for example, lets say you had a IP650 with the expansion modules and you were to use the new BLF template bundled with thirdlane you could populate the expansion module from thirdlane provisioning and it would add the following to your macaddr-registration.cfg :


this adds the information that causes it to blink green when that phone is in the ringing state. Paired with this existing entry in polycom_local:

when you press a button of an extension blinking green it will send *8+extension# to the PBX. If your directed call pickup has a pattern like _*8X. then it will execute that directed call pickup command.

This makes for a very cool pickup feature. You could even do something similar on a IP550 or IP450 where you use 1 less line key for the extensions and have the spare line key watch a single extension. That application is best suited for an administrative assistant who needs to watch and retrieve calls for her boss as they come in.

I have even improved the directed call pickup using the new PickupChan feature of 1.6.2 and 1.8. Instead of relying on dialplan to set a PICKUPMARK I simply use PickupChan to fetch the sip device in the ringing state. This fixes the issue with huntlists and queues since they didnt set a PICKUPMARK variable.