I have an audio recording solution that records all the phones in a CUCM using built-in-bridge via SIP Trunk route point. I now need a data collection mechanism for value added meta data such as CTI Events and ACD Data. I would like to be notified of Call/Phone CTI Events such as "Alerting", "Active", "Held", "Retrieved", "Transfer", "Conference", "Disconnect". I would also like to receive more meta data than whats in the SIP INVITE / NOTIFY packets from the recorder. I would like to know what VDN handled the call, what Skill or ACD Queue it routed via ACD to get to the agent, amongst various other data that may be available.
The solution needs to be a single service that can subscribe (if that's the proper terminology) to events from many different devices. This is not a desktop app, this is not a softphone, this is not a one-to-one. This needs to be a one-to-many concept whereby a single service running on a single server, receives events for many different devices. Yes, it could be more than one service on more than one server for load balancing, failover and redundancy but you get the idea. A service based approach for all devices is required.
I've done some research and realize there are 2 potential avenues to investigate, TAPI and CTIOS? Please advise on the best method of approach and where to download the development kits for CUCM 10.5. Seems the last known MEDIA KIT for CTIOS is outdated. Per the devnet webpage for CTIOS it says "Customers and partners should order CTIOS by ordering the NFR Media kit CCEH-MEDIA80-K9 through their sales team". This SKU no longer exists, looks like its an CUCM8.x SKU.
See this page: Getting Started - Cisco CTIOS where they reference the SKU.
I have created almost exactly what you are describing. I use a combination of TAPI and CTIOS Monitor Mode. Monitor Mode provides the one to many perspective you want as it sends you call event, statistic events and basically everything you can get from a client but for all users in a single stream. Now the data you may want to collect may not be contained discretely in packaged form in the messages. You may have to "build" your data from disparate sources such as Call events for when the call is answered and hung up. Agent Statistic events for agent states and Skill Group events for skill groups. So for example if you wanted to check the total number of abandoned calls you might have to watch the Call events to see that the call was going to the agent but was not answered and therefore abandoned. You would then have to combine that information with other Agent Stats or Skill group stats as though they were a stat you simply got with a Stat event. I did this years ago for a Supervisor desktop where the customer wanted statistics not normally available. CTIOS can only give you ICM and Agent stats and has only recently added private line stats. If you want purely telephony stats like for non ACD phones or private lines then TAPI or JTAPI is your answer. These apis can be used in concert and mashed in your service. I used CTIOS for agent stats and TAPI for private line stats and combined all the data in my repository. That was the collector service and the supervisor service did dissemination to the supervisor desktops.
So that is how I approached it and its been running a large government call center for years without major issue. Hope this helps, enjoy the journey
Shannon, please send me an email to dmcgrail at csiworld dot com so I can reply directly to you. I have a potential opportunity for you that you may find interesting. Thank you.