I'm currently developing a TAPI-based application to provide "intelligent caller ID" to agents in our call center using our Cisco IP phone system. When a call comes in and the agent picks it up on a "real" phone at their workstation, the application, which lives in the workstation's system tray, gets the number on the remote side of the call, and runs it through a central database to see if the number is known as belonging to one of our client companies or their reps. If so, we display information about who the agent is now talking to (person or client location name, company, title, etc).
I developed a proof of concept that monitors my cubicle's phone, using Julmar's excellent ATAPI library, and got it working well. However, the agents' phones have a significant difference; they plug into a sidecar module with an additional 14 extensions connected to our 1-800 hunt line.
The problem I'm having now is that I need to know not just when a call is connected, but when it's connected to the single phone I'm monitoring, sitting underneath the workstation on which the application is running. Currently, I can see line state changes on all the 800 lines, but I can't tell which line state changes were the direct result of an action of the phone device I'm monitoring; obviously I can monitor changes in phone state and line state, but if two calls ringing on the 800 block are picked up by two agents at nearly the same time I can't tell which phone got which call.
This information simply has to be available somewhere in the TAPI interface, if possibly not wrapped by ATAPI. Any hints on what I should be looking at, hopefully from someone who's done this before, are appreciated.