We have a web application, and people have asked us if we can pop up screens when they get an incoming call on their PBX.
I think that the easiest way to do this would be to ha开发者_如何学JAVAve a small app that sat in the system tray and waited for a call using TAPI or TSAPI. When a call comes in, it would open a web page to a configured URL, passing the caller ID as a parameter.
Does such an application exist somewhere?
P.s. anyone know what happened to the Simple Computer Telephony Protocol
It depends a lot on the PBX in use - I've work with Avaya and CallMedia servers. Both of those companies provided a small desktop client and a DLL which can be referenced from within code.
The biggest problem is informing the web page once the system tray app gets an event. Launching a browser can be slow and is not a good user experience for call handling. Better is to keep a browser open and receive events..
The company I worked for used some pretty out-dated tech so they had:
PBX --(XML)-- PBX System Tray Client --(COM)-- Our own desktop app --(COM)-- An ActiveXControl embedded in the page --(Javascript)-- The website framework which handled the event as appropriate
As you can see it was quite long and convoluted - A more elegant approach would be to have a silverlight/similar app embedded on the page which receives events from the system tray client (via a web service or similar?)
You also need to address the question of a) multiple pages open - do all get the events? and b) swapping PBX at a later date shouldn't require a complete re-write.
As I left that company we were implementing a mechanism where our app received messages from the PBX directly via XML. Silverlight controls on any/all web pages registered with our desktop app via 2-Way WCF. We then had our desktop app send the appropriate events to the appropriate page.
Some other things to consider: Are you going to be handling mixed-channel? ie can handling an email block an incoming call event? If so, you need some sort of 2-way comms to say "Rejecting call...". You also need to be careful about what State the agents' telset is in - If you go to an "available" state before you finish saving data, you can potentially browse away before recording everything. Also, in my experience, agents are really happy to press the buttons on the telset rather than in your app - so you need to handle unexpected status changes.
Also consider transferring calls - most modern PBX allow a call transfer to occur in such a way that an id is associated with the call - so if it's an internal transfer, the recipients' screen can show all call notes/etc.
I can provide more info if you can clarify what PBX/etc. you're using and what events you need to handle
Events I'd recommend you handle at a minimum: Call ringing, Call answered, Call Dropped, Call Transferred
and you should be able to raise: Accept Call, Place Call, Drop Call, Transfer Call (Hot and Cold transfers, optionally with data if it's internal)
Of course this may be overkill for your solution :)
Edit: I forgot to add that our solution also handled logging the agents on/off of the telset when they logged into the web app - This gave a really nice user experience but required handling all the logon/logoff variables as well as maintaining a lookup table of user->extension #
NCID (Network Caller ID) is a Sourceforge project that seems to be the sort of thing I want, but it depends on a linux server, and only seems to support Caller ID from a modem connected to a serial port, or by sniffing SIP packets passing over the Ethernet interface of the server. It doesn't supoprt any PBX systems with TAPI or similar because it runs on Linux only.
The client app that connects to the server NCIDpop does exactly what I want - it can take a URL string to go and look up a number with, and open a web page when you click on it.
It's not quite the answer for me, but might be useful to others finding this question.
精彩评论