Tuesday, January 11, 2011

Cisco CUCME custom desktop images for 7962G, 7942G, 7961G, 7961G-GE, 7941G, and 7941G-GE

The later versions of Cisco CUCME provides sample desktop images for phones that support 320x212x12 image file sizes (i.e. 7970).

For those of you looking to provide images for 7962G, 7942G, 7961G, 7961G-GE, 7941G, and 7941G-GE, you need to use a different file size and folder.

You need to create two or scale two existing images with the following attributes:


  • Full size image to display on the desktop -320 pixels (width) X 196 pixels (height).
  • Thumbnail image to display in the desktop selection menu - 80 pixels (width) X 49 pixels (height).


If you are using a graphics program that supports a posterize feature for grayscale, set the number of tonal levels per channel to 16, and the image will posterize to 16 shades of grayscale.

You will need to also create a List.xml file to direct phones to the available desktops. The format should be as follows:


<CiscoIPPhoneImageList>
<ImageItem Image="TFTP:Desktops/320x212x12/TN-CiscoLogo.png"
URL="TFTP:Desktops/320x196x4/ImageName.png"/>
</CiscoIPPhoneImageList>


Then:

! Make the directory in flash
mkdir flash:/Desktops/320x196x4
! Copy the files to flash

copy tftp://YourTFTPserverAddress/TN-ImageName.png flash:/Desktops/320x196x4
copy tftp://YourTFTPserverAddress/ImageName.png flash:/Desktops/320x196x4

! Allow phones to access the files
tftp-server flash:/Desktops/320x196x4/SmallImageName.png
tftp-server flash:/Desktops/320x196x4/SmallImageName.png
tftp-server flash:/Desktops/320x196x4/List.xml

Enjoy your new desktop(s).


Wednesday, January 05, 2011

Find MGCP gateway associated with CUCM NumberOfRegisteredGatewaysDecreased alert

After configuring RTMT NumberOfRegisteredGatewaysDecreased alert to deliver information via email, found associated gateway details are not included in the email. This can be a real problem on larger scale deployments with multiple gateways and no other reporting tools available.

To find the gateway in question:
  1. Freak out when receiving [RTMT-ALERT-StandAloneCluster] NumberOfRegisteredGatewaysDecreased alert.
  2. Hope the traces have been enabled in CUCM. The default Error level on CallManager should be sufficient.
  3. Go to RTMT | Trace & Log Central | Collect Files
  4. Choose Cisco CallManager
  5. Choose Cisco Database Layer Monitor
  6. Set the date and time as close to the alert times as reasonably possible.
  7. Download the files somewhere you can find them.
  8. Search SDL file for DMRemoteDeviceRegisterUnRegister
  9. The last column indicates gateway in question (i.e. S0/SU0@MyRouter:10.10.3.1)
  10. Fix something.
Of course, your results may vary.

Monday, January 03, 2011

Knoahsoft and Cisco CUCM on demand recording service

While implementing a Knoahsoft recording solution in a Cisco CUCM environment, found ad-hoc recording is started by dialing *7*7* in conversation (or *8*8* to cancel). Users could not be depended on to remember the code(s), given they would not be used frequently.

Below are two ASP pages I put together to serve as a CUCM service, accessed by a Service URL button on a phone.

The users have a button labelled "Call Recording" when pressed displays basic instructions and two softkeys on their display. The softkeys ultimately dial the codes. This technique was used since speed dial buttons do not generate DTMF in conversation.

This is the page that serves the text instructions on the phone display and creates the softkeys to start and cancel recordings.

<%@ Language=JavaScript %>
<%
var serverIP = Request.ServerVariables("LOCAL_ADDR");
var SERVICE_DIR="CiscoIPServices";

Response.Expires = -1;

Response.Buffer = true;

Response.ContentType = "text/xml";

Response.Write("<CiscoIPPhoneText>");
Response.Write("<Title>Call Recording</Title>");
Response.Write("<Prompt>Start or Cancel recording below</Prompt>");
Response.Write("<Text>Use the keys below to \"Record\" a call in progress, or \"Cancel\" a recording you started.\r\n\r\nContact your system administrator to retrieve your recordings.</Text>");

Response.Write("<SoftKeyItem>");
Response.Write("<Name>Record</Name>");
Response.Write("<URL>http://"+serverIP+"/"+SERVICE_DIR+"/ASP/recording/recordinginput.asp?rectype=start</URL>");
Response.Write("<Position>1</Position>");
Response.Write("</SoftKeyItem>");

Response.Write("<SoftKeyItem>");
Response.Write("<Name>Cancel</Name>");
Response.Write("<URL>http://"+serverIP+"/"+SERVICE_DIR+"/ASP/recording/recordinginput.asp?rectype=stop</URL>");
Response.Write("<Position>2</Position>");
Response.Write("</SoftKeyItem>");

Response.Write("<SoftKeyItem>");
Response.Write("<Name>Exit</Name>");
Response.Write("<URL>SoftKey:Exit</URL>");
Response.Write("<Position>4</Position>");
Response.Write("</SoftKeyItem>");

Response.Write("</CiscoIPPhoneText>");

Response.Flush();
%>


This is the recordinginput.asp page that is called by the one above. It uses CiscoIPPhoneExecute, ExecuteItem and SendDigits to generate DTMF in conversation. There are some unnecessary elements, as I was attempting various means to call the function directly from a service.


<%@ Language=JavaScript %>

<%

function InputMenu(rectype)
{
if(rectype== "start"){
mystatus="starting"
mydigits="*7*7*";
}else if(rectype=="stop"){
mystatus="stopping"
mydigits="*8*8*";
}else return;

Response.Write("<CiscoIPPhoneExecute>\r\n");
Response.Write("<ExecuteItem URL=\"SendDigits:"+mydigits+":1\"/>\r\n");
Response.Write("</CiscoIPPhoneExecute>\r\n");
return;

}

var serverIP;
var mystatus;
var myresponse;

SERVICE_DIR="CiscoIPServices";
serverIP = Request.ServerVariables("LOCAL_ADDR");

Response.ContentType = "text/xml";

Response.Buffer = true;

rectype = Request.QueryString("rectype");

InputMenu(rectype);

Response.Expires = -1 ;
Response.AddHeader("REFRESH","5;URL=http://localhost/CiscoIPServices/ASP/recording/recordingtext.asp?rectype="+rectype+"");
Response.Flush();

%>