11-07-2017 02:21 PM - edited 03-12-2019 10:27 AM
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.
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.
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: