Polycom Server Side DND

I’m about to deploy Polycom SoundPoint 335 phones in to a call center. This phone does not have a dedicated DND button like other Polycoms models do. On those if one wants to disable DND all that is required is to map the key to something else in sip.cfg.

On this model the approach seems to be to enable DND as a server side feature. The phone them seems to pass information back up to Asterisk. With that enabled Asterisk (1.4.25 in this case) appears to get flooded with these as-feature-event SUBSCRIBE dialogues which it does not know how to handle.

SUBSCRIBE sip:0004F22FB652@10.0.3.214:5060 SIP/2.0
Via: SIP/2.0/UDP 10.0.3.60;branch=z9hG4bK5a0ba5cf6C4D26C6
From: “Lab x4502” sip:0004F22FB652@10.0.3.214;tag=C12F3C2E-D6A9051D
To: sip:0004F22FB652@10.0.3.214:5060
CSeq: 2 SUBSCRIBE
Call-ID: ce2e77ba-176f2109-b778f9d0@10.0.3.60
Contact: sip:0004F22FB652@10.0.3.60
Allow: INVITE, ACK, BYE, CANCEL, OPTIONS, INFO, MESSAGE, SUBSCRIBE, NOTIFY, PRACK, UPDATE, REFER
Event: as-feature-event
User-Agent: PolycomSoundPointIP-SPIP_335-UA/3.3.1.0769
Accept-Language: en
Accept: application/x-as-feature-event+xml
Authorization: Digest username=“0004F22FB652”, realm=“lab”, nonce=“41aa0e8e”, uri=“sip:0004F22FB652@10.0.3.214:5060”, response=“bcaca3e1c143a351f73213a4800de2a2”, algorithm=MD5
Max-Forwards: 70
Expires: 3600
Content-Length: 0

Is this feature supported in more recent versions of Asterisk?

Anyone know another method to disable DND on a IP335 other than to toss it in to server mode and bombard Asterisk?

Had a couple of conversations with a Polycom support engineer and some lab sessions myself to prove some behavior out. Here is the outcome for those who follow in my footsteps.

The Polycom 3XX line of phones does not have a dedicated DND button. It is now under Menu > Features > Do Not Disturb. As such the key.SPIP335.9.function.prim=“Null” approach to nullify the behavior of the DND button on other models does not work. There is no key 9, key 23, to referernce as the one to unset. Bummer.

The Polycom sanctioned approach to disabling DND on these phones is to set the DND control to server mode reg.1.serverFeatureControl.dnd=“1” where one can then simply ignore the request for DND to be set and unset at the server. Which is nice and all but if your SIP Server (Asterisk 1.4.25) does not support the SIP Subscription to x-as-feature-event events there is a problem.

From first hand experience in the lab the phone when set to this mode will attempt to make a SIP subscription request every 7 seconds to Asterisk. Asterisk will reject them as unallowed, unless subscriptions are enabled in which case is rejects them as 489 bad event. In a call ceneter organization with 200+ phones or a large office that is going to add up happening every 7 seconds all the time with no let up. Not acceptable.

The only other approach that may be acceptable to some is to set call.rejectBusyOnDnd=“0”. The net effect of this is the phone enters in to a silent ring mode (lights blink, call appears on LCD, but no audible ring) and no action is taken block the call.

Asterisk Community

For chan_sip.c to support the as-feature-event protocol which I’ve read the Polycom and SNOM phones support. I’m looking in to it and may try to implement it. If not the entire thing enough for the subscription to work and for it to be valid for 15 minutes or so just to appease the phone and get it to stop spamming asterisk.

Polycom…

All the other Menu > Feature items have their own configuration item to enable or disable. There is feature.callList.enabled=“1” feature.callPark.enabled=“1” couldn’t you see the need for feature.dnd.enabled=“1”?

The divert.fwd.enable=“0” 0/1 toggles the feature on/off and adds/removes it from the Menu > Feature menu why does divert.dnd.enable=“0” just set the initial state of DND and not act more like a add/rmove of the feature. Can I suggest three states to that setting -1/0/1 remove/on/off?

Cheated a bit on this one. Had already hacked up chan_sip.c to send a false 200 OK to the SUBSCRIBE request with a very high expiration timeout value to stop the Polycom from attempting the subscription every 7 seconds (which did work by the way).

Then someone in Polycom support suggested disabling the menu key all together. That approach got rid of all the nasty features an agent can abuse, DND, CFW, and such in one pass. What remains is a phone that pretty much cannot do anything more than take or make calls (our original intent anyways).

For those interested on the SoundPoint IP 355 model phone under UCS 3.3.1 this one liner did the trick.

If anyone is interested, there is a working solution for getting Polycom to work with a server-side DND using Asterisk. I took the pains to figure it out, and it works very well using a Polycom using UCS firmware 3.3.1revF or 3.3.2, at least (it does not currently work with the just-released version 4). I’ve posted the complete solution over in the Polycom community forums at this link:

http://community.polycom.com/t5/VoIP/Server-based-DND-using-FAC-NOTIFY/m-p/8042#M1080

As this involved editing Asterisk, and I’m not much of a C programmer (I’m mainly a web developer), I’m wondering if Asterisk developers monitor this forum. This solution was based on critical information I received from Polycom that not only covers the XML schema necessary for indicating DND status, but also call forwarding status. While I successfully edited the source for Asterisk to get DND working, after looking at the Asterisk source and trying my best to make sense of it (as a non-C programmer), I determined that I don’t personally know enough to be able to implement this successfully for both, at this time…at least not without help. The critical part for us was to get server-side DND working, anyway. CFWD was less important for us.

I’m hoping, however, that an Asterisk developer might be able to look at this solution and consider adding this into a future build of Asterisk, so that everybody using a Polycom can enjoy this feature.