I have been using Polycom phones for a while now and really like the build quality and sound quality. I personally think they are superior SIP phones (yes, I have used and programmed the competing phones too).
In the past, Polycom had been known for not supporting Asterisk very well, and for not documenting button scripting, XML scripts, etc. This has changed. It seems they have been making an effort to open up the documentation and it improves quite a bit on every rev.
At this point I have a production system with several different Polycom phones running in an office and have scripted them to allow for commonly requested office PBX features. I'm not a programmer, but I can hack my way through scripts. I'm posting some of what I have learned here. Feel free to modify or improve this info any way you can... just share.
- Polycom has pretty good documentation here:
http://www.polycom.com/support/voice/soundpoint_ip/soundpoint_ip560.html
- They have a tech note for common asterisk features here:
http://knowledgebase.polycom.com/kb/search.do?cmd=displayKC&docType=kc&externalId=EndUser-TechAlerts-Audio-UsingSPIPSSIPAsteriskTB43565pdf&sliceId=pdfPage_1&dialogID=3333079&stateId=0%200%203331133
Take a good look at this document and the others in the tech bulletin area.
Of note is the info about setting up presence info for other stations (BLF).
Paging and intercom work fine as described with minor modifications.
Call parking, paging, intercom, transfer and night ring etc. can all be setup as a soft keys that change based on call context.
My example extension.cfg file:
http://www.erikutter.com/misc/polycom/phone100.cfg
My example sip.cfg file:
http://www.erikutter.com/misc/polycom/sip.cfg
My example directory.cfg file:
http://www.erikutter.com/misc/polycom/directory.xml
extension.cfg: (for a polycom 560)
Basic stuff in here with server registration info.
In this example I have the reception desk phone. We force the ring type to 5 so that you always get a "double" ring to indicate a call from another internal extension. We set the line keys for the 1st registration to 4 so that we can use the other two line keys for something else. (for user desk phones I set it to 2 so that I have four keys available for something else). I have also setup the MWI 1 line to work with asterisk.
sip.cfg:
I have set the AlertInfo lines so that a call from an outside line will force a regular ring. (route Alert Info set to External). An orphaned parked call will force a high double ring, and an intercom or page will force a auto-answer. Now all internal calls will double ring (phone default) and outside calls will regular ring.
Set the dialplan for whatever you prefer. In my case, my client doesn't want to dial 9 to get an outside line. It's easy to change though and Polycom supports a second dialtone after dialing 9 (9,xxx in the dialplan).
I setup a nice display bacground with the company logo address etc. You could have a static or active XML web page on the background. In the future I will setup an active background that also shows parked calls and outdoor temp. Maybe someone wants to help with the programming here...
Various features need to be enabled or disabled to make everything work. You can look at what I did.
Down toward the bottom of the sip.cfg is the fun stuff.. the softkeys and feature keys. Esentially they are setup to do the following based on call context:
- When the phone is idle you get: PageAll, Intercom, NewCall, Callers, forward, buddies, and NightRing.
- When on a call you get Park, and BlindXfer
I think it's pretty obvious how the programming works here and can be tuned for your feature codes.
- Unprogrammed line keys have been mapped to "speed dials" The speed dials are set in the directory.xml file. If the BW (buddy-watch) field is active you get BLF's (the light and icon will indicate status) that look at the Asterisk hints for status. This is a great way to have buttons for other extensions that will light up when they are in use. What I have done with the reception desk is create Park buttons that can be used to quickly park a call and monitor if it has been picked up. With an extension panel you could have as many of these buttons as you like. I also programmed a night ring button on the receptionist phone so that you can tell at-a-glance if night ring is active.
- I have set the microbrowser to point to a machine that serves up the following basic apps:
- List all parked calls
- Display news
- Display weather
- Display the ferry schedule
Since I'm not too good with PHP these are mostly hacks from other applications I have found surfing around. I did have visual voicemail working fine, but the company doesn't use VM any more. They prefer all VM to be emailed.
You can download a zip of the apps here:
http://www.erikutter.com/misc/polycom/apps.zip
In the past, Polycom had been known for not supporting Asterisk very well, and for not documenting button scripting, XML scripts, etc. This has changed. It seems they have been making an effort to open up the documentation and it improves quite a bit on every rev.
At this point I have a production system with several different Polycom phones running in an office and have scripted them to allow for commonly requested office PBX features. I'm not a programmer, but I can hack my way through scripts. I'm posting some of what I have learned here. Feel free to modify or improve this info any way you can... just share.
- Polycom has pretty good documentation here:
http://www.polycom.com/support/voice/soundpoint_ip/soundpoint_ip560.html
- They have a tech note for common asterisk features here:
http://knowledgebase.polycom.com/kb/search.do?cmd=displayKC&docType=kc&externalId=EndUser-TechAlerts-Audio-UsingSPIPSSIPAsteriskTB43565pdf&sliceId=pdfPage_1&dialogID=3333079&stateId=0%200%203331133
Take a good look at this document and the others in the tech bulletin area.
Of note is the info about setting up presence info for other stations (BLF).
Paging and intercom work fine as described with minor modifications.
Call parking, paging, intercom, transfer and night ring etc. can all be setup as a soft keys that change based on call context.
My example extension.cfg file:
http://www.erikutter.com/misc/polycom/phone100.cfg
My example sip.cfg file:
http://www.erikutter.com/misc/polycom/sip.cfg
My example directory.cfg file:
http://www.erikutter.com/misc/polycom/directory.xml
extension.cfg: (for a polycom 560)
Basic stuff in here with server registration info.
In this example I have the reception desk phone. We force the ring type to 5 so that you always get a "double" ring to indicate a call from another internal extension. We set the line keys for the 1st registration to 4 so that we can use the other two line keys for something else. (for user desk phones I set it to 2 so that I have four keys available for something else). I have also setup the MWI 1 line to work with asterisk.
sip.cfg:
I have set the AlertInfo lines so that a call from an outside line will force a regular ring. (route Alert Info set to External). An orphaned parked call will force a high double ring, and an intercom or page will force a auto-answer. Now all internal calls will double ring (phone default) and outside calls will regular ring.
Set the dialplan for whatever you prefer. In my case, my client doesn't want to dial 9 to get an outside line. It's easy to change though and Polycom supports a second dialtone after dialing 9 (9,xxx in the dialplan).
I setup a nice display bacground with the company logo address etc. You could have a static or active XML web page on the background. In the future I will setup an active background that also shows parked calls and outdoor temp. Maybe someone wants to help with the programming here...
Various features need to be enabled or disabled to make everything work. You can look at what I did.
Down toward the bottom of the sip.cfg is the fun stuff.. the softkeys and feature keys. Esentially they are setup to do the following based on call context:
- When the phone is idle you get: PageAll, Intercom, NewCall, Callers, forward, buddies, and NightRing.
- When on a call you get Park, and BlindXfer
I think it's pretty obvious how the programming works here and can be tuned for your feature codes.
- Unprogrammed line keys have been mapped to "speed dials" The speed dials are set in the directory.xml file. If the BW (buddy-watch) field is active you get BLF's (the light and icon will indicate status) that look at the Asterisk hints for status. This is a great way to have buttons for other extensions that will light up when they are in use. What I have done with the reception desk is create Park buttons that can be used to quickly park a call and monitor if it has been picked up. With an extension panel you could have as many of these buttons as you like. I also programmed a night ring button on the receptionist phone so that you can tell at-a-glance if night ring is active.
- I have set the microbrowser to point to a machine that serves up the following basic apps:
- List all parked calls
- Display news
- Display weather
- Display the ferry schedule
Since I'm not too good with PHP these are mostly hacks from other applications I have found surfing around. I did have visual voicemail working fine, but the company doesn't use VM any more. They prefer all VM to be emailed.
You can download a zip of the apps here:
http://www.erikutter.com/misc/polycom/apps.zip