cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
5464
Views
5
Helpful
0
Comments
pkinane
Cisco Employee
Cisco Employee

The short answer is that you don't....

 

That isn't entirely true while at the same time it kind of is, but for the most part you don't configure the softkeys. You enable or disable them via TCL.

 

 

Here is the long answer.

 

Be sure to read the whole thing or else you might end up wasting some time.

 

To change the configured soft keys on the 9971 you do it a lot like the SCCP phones... with a template.
Rather than using an ephone-template <tag> you use a voice register template <tag>. This is explained here.

 

When you create a voice register template there is a new file that will be added to flash.
The new file is the featurePolicy<tag>.xml file.
The tag on the new file will be the same as the tage you set for the voice register template.

I created a new voice register template as shown below:

 

voice register template 1
  softkeys idle Confrn Gpickup Dnd

 

This created the new file in flash:

 

R3#show flash: | i featurePolicy1
89         824 Nov 8 2017 04:01:50 +08:00 its/featurePolicy1.xml
R3#

 

I had a problem though. The softkeys don't show on the 9971 even though the commands worked

and the file was successfully created.


I went under voice register global and entered no create profile then create profile.

I went under vocie register pool and entered apply-config.

I power cycled the phone by removing power.

My softkeys wouldn't show.

 

So I enabled debug tftp events and debug tftp packets.

I could see the featurePolicy1.xml requested and sent.

 

000267: Nov  8 03:44:02.614: TFTP: Looking for featurePolicy1.xml
000268: Nov  8 03:44:02.614: TFTP: Opened flash:/its/featurePolicy1.xml, fd 4, size 824 for process 264
000269: Nov  8 03:44:02.614: TFTP: Sending block 1 (retry 0), len 512, socket_id 0x2249968C
000270: Nov  8 03:44:02.618: TFTP: Received ACK for block 1, socket_id 0x2249968C
000271: Nov  8 03:44:02.618: TFTP: Sending block 2 (retry 0), len 312, socket_id 0x2249968C
000272: Nov  8 03:44:02.618: TFTP: Received ACK for block 2, socket_id 0x2249968C
000273: Nov  8 03:44:02.618: TFTP: Finished flash:/its/featurePolicy1.xml, time 00:00:00 for process 264


So I read even more documents.

 

After reading this section of documentation it all made sense.

Here is what it says:

 

"Feature Policy Softkey Control

 

Cisco Unified CME 8.5 allows you to control the display of softkeys on the Cisco Unified SIP IP Phones 8961, 9951, and 9971 using the Feature Policy template. The Feature Policy template allows you to enable and disable a list of feature softkeys on Cisco Unified SIP IP Phones 8961, 9951, and 9971. Table 1 lists the controllable feature softkeys with specific feature IDs and their default state on Cisco Unified SIP IP Phones 8961, 9951, and 9971.

Table 1 Feature IDs and Default State of the Controllable Features

Feature ID

Feature Name

Description

Default State on CME

1

ForwardAll

Forward all calls

Enabled

2

Park

Parks a call

Enabled

3

iDivert

Divert to Voicemail

Enabled

4

ConfList

Conference List

Disabled

5

SpeedDial

Abbreviated Dial

Disabled

6

Callback

Call back

Disabled

7

Redial

Redial a call

Enabled

8

Barge

Barge into a call

Enabled

 

Cisco Unified CME uses the existing softkey command under voice register template configuration mode to control the controllable feature softkeys on phones. Cisco Unified CME generates a featurePolicy<x>.xml file for each voice register template <x> configured. The list of controllable softkey configurations are specified in the featurePolicy<x>.xml file. Phones need to reboot or reset to download the Feature Policy template file. For Cisco IP phones that do not have a Feature Policy template assigned to them, you can use the default Feature Policy template file (featurePolicyDefault.xml file)."

The only softkeys you can modify on the 9971 (and other SIP phones) for CME are the ones in the table. This is why mine wouldn't show. If the table above isn't clear enough, then the highlighted sentence above might do the trick for you. Here is is again:

"The list of controllable softkey configurations are specified in the featurePolicy<x>.xml file."

As a reminder, here are my softkeys:

 

voice register template 1
  softkeys idle Confrn Gpickup Dnd

 

Here is the file's contents. You can see none of the softkeys I selected are present.

R3#more flash:its/featurePolicy1.xml
<featurePolicy name="Feature Policy 1">
<versionStamp>0098045630884221</versionStamp>
<featureDef name="Forward All">
<id>1</id>
<enable>true</enable>
</featureDef>
<featureDef name="Park">
<id>2</id>
<enable>true</enable>
</featureDef>
<featureDef name="To Voicemail (Alerting)">
<id>3</id>
<enable>true</enable>
</featureDef>
<featureDef name="Conference List">
<id>4</id>
<enable>true</enable>
</featureDef>
<featureDef name="Speed Dial">
<id>5</id>
<enable>false</enable>
</featureDef>
<featureDef name="Call Back">
<id>6</id>
<enable>false</enable>
</featureDef>
<featureDef name="Redial">
<id>7</id>
<enable>true</enable>
</featureDef>
<featureDef name="Barge">
<id>8</id>
<enable>true</enable>
</featureDef>
<featureDef name="To Voicemail (Connected)">
<id>9</id>
<enable>true</enable>
</featureDef>
</featurePolicy>

So how exactly do you enable or disable the controllable feature softkeys?

I don't know how to do it in IOS. I searched, and I looked, and I read, and I typed command after command with ? all day... Nothing. So I moved forward with enabling/disabling by modifying the text file.

 

R3#tclsh
R3(tcl)#puts [open "flash:/its/featurePolicy1.xml" w+] {
+>(tcl)#<featurePolicy name="Feature Policy 1">
+>(tcl)#<versionStamp>0002002659110252</versionStamp>
+>(tcl)#<featureDef name="Forward All">
+>(tcl)#<id>1</id>
+>(tcl)#<enable>false</enable>
+>(tcl)#</featureDef>
+>(tcl)#<featureDef name="Park">
+>(tcl)#<id>2</id>
+>(tcl)#<enable>true</enable>
+>(tcl)#</featureDef>
+>(tcl)#<featureDef name="To Voicemail (Alerting)">
+>(tcl)#<id>3</id>
+>(tcl)#<enable>true</enable>
+>(tcl)#</featureDef>
+>(tcl)#<featureDef name="Conference List">
+>(tcl)#<id>4</id>
+>(tcl)#<enable>true</enable>
+>(tcl)#</featureDef>
+>(tcl)#<featureDef name="Speed Dial">
+>(tcl)#<id>5</id>
+>(tcl)#<enable>false</enable>
+>(tcl)#</featureDef>
+>(tcl)#<featureDef name="Call Back">
+>(tcl)#<id>6</id>
+>(tcl)#<enable>false</enable>
+>(tcl)#</featureDef>
+>(tcl)#<featureDef name="Redial">
+>(tcl)#<id>7</id>
+>(tcl)#<enable>true</enable>
+>(tcl)#</featureDef>
+>(tcl)#<featureDef name="Barge">
+>(tcl)#<id>8</id>
+>(tcl)#<enable>true</enable>
+>(tcl)#</featureDef>
+>(tcl)#<featureDef name="To Voicemail (Connected)">
+>(tcl)#<id>9</id>
+>(tcl)#<enable>true</enable>
+>(tcl)#</featureDef>
+>(tcl)#</featurePolicy>}
R3(tcl)#exit
R3#

 

The procedure is covered in this document.

 

Below is the summary steps as outlined in that document:

 

"1- Locate your SEPXXXXXXX.cnf.xml file on flash:

CORE#sh flash: | inc SEP

 

2- Now that you have located your SEP file, its time to expose the contents of the file

CORE#more flash:SEPXXXXXXXX.cnf.xml

 

3- This will display an output like this

<device>
<deviceProtocol>SIP</deviceProtocol>
<devicePool>
<dateTimeSetting>
<dateTemplate>M/D/YA</dateTemplate>
<timeZone>US Eastern Standard Time</timeZone>
<ntps>
<ntp priority=”0″>
<name>0.0.0.0</name>
<ntpMode>unicast</ntpMode>
</ntp>
</ntps>
</dateTimeSetting>
<callManagerGroup>
<members>
<member priority=”0″>
<callManager>
<ports>
<sipPort>5060</sipPort>
</ports>
<processNodeName>10.1.200.1</processNodeName>
</callManager>
</member>
</members>
</callManagerGroup>
</devicePool>
<sipProfile>
<sipProxies>
<registerWithProxy>true</registerWithProxy>
</sipProxies>
…………… Omitted output for

</device>

 

4- Copy the result to a Notepad file

 

5- Search for phonePassword

 

6- once you find the line on the XML file remove it

 

7- Time to modify the file using  TCLSH

 

Enter TCLSH mode by typing:

 

CORE#tclsh
CORE(tcl)#

 

Now you need to run the following command but don’t press enter yet, make sure your last character is a curly bracket

 

CORE(tcl)#puts [open “flash:SEPXXXXXXXXX.cnf.xml” w+] {

 

now at this point its OK to copy your modified XML output the one you pasted and modified in Notepad

 

CORE(tcl)#puts [open “flash:SEPXXXXXXXXX.cnf.xml” w+] {
———–Omited Output————-
<dscpForCm2Dvce>96</dscpForCm2Dvce>
<transportLayerProtocol>2</transportLayerProtocol>
</device>}

 

And at the end don’t forget to close with curly brackets again."

 

It is stated that you need to use the tftp-server command; however, I didn't and the file was provided to the phone without issue.

Getting Started

Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: