Probably the only thing I miss from Call Manager 4.x (and 3.3 for that matter) is devicelistx.asp. It was a simple tool provided by Cisco that had a lot of potential for home groan applications. It also played a large role in integrating CM data with many 3rd party applications. Now, it is gone and has been replaced with the Real Time Information (RisPort) API.
{readmore}
The devicelistx.asp (DeviceListX Report) was introduced in CM builds starting around 3.3(3). It was provided as a very basic tool that provided a list of IP phone records with associated real time information (i.e IP address, registration status, etc.) that could be read by an application and processed.
This type of information is invaluable to 3rd party applications (e.g. Berbee) that didn’t require line state monitoring offered by CTI but did need to know if a phone was on line and what IP address it was using. For me, the most valuable aspect of this tool was how I could use it with my own scripts to provide registration status reports, check device health before/after a maintenance task, and provide trending information on IP phones.
With the introduction of CUCM 5.x (and later), devicelistx has gone the way of the dodo and now we have the Serviceability API, specifically RisPort. This is an API that uses the SOAP method, XML schemas, etc. to provide realtime information on CUCM endpoints. It isn’t really “new” per se as it started being available in 4.1(3) and, well, how do you think RTMT does its job?
I was used to writing AXL/SOAP applications and I believed this may be an extension of that API, but it is not. I found it to be a tad more cumbersome than I expected. Alot of extra tags in the XML responses (all responses have an H.323 node) and each tag has name space attributes which annoy me personally, but that is just me and it is simple enough to deal with.
What I do like about this API (versus devicelistx) is that it allows you to query a single CUCM node or the entire cluster. You can also query a list of devices and the response is organized by CUCM node (some may not like this, but I think it is handy). You can also query devices other than IP phones (bonus). The RisPort also can facilite monitoring for state changes and capturing time stamps for the latest “state”. Handy for trending.
I am still getting used to this API as I slowly port/enhance scripts to leverage it more. One of the first things I missed from devicelistx was the ability to tweak the maximum number of devices that the application would return (technically not supported, but who was watching). With RisPort, the max is 200 devices in a return stream. This isn’t very many devices but we adapt, learn, and move forward.
What works for me is using the AXL/SOAP API (executeSQLQuery) to retrieve devices from CUCM. Stick device names in an array, iterate through the array and parse out groups of devices (max 200). Then send a cmSelectDevice request to RisPort with a SelectItems node for each device in the group. You can then aggregate responses or act on them anyway you choose.
All in all I am looking forward to adding this functionality into some of the tools I use and plan to post interesting lessons as challenges present themselves.
URL for devicelistx: http://www.cisco.com/en/US/docs/voice_ip_comm/cuipph/all_models/xsi/3_3_3/english/programming/guide/ipphs333.html#wp50761
URL for RISPort: http://www.cisco.com/en/US/docs/voice_ip_comm/cucm/devguide/7_1_2/serviceability.html