Click here to Skip to main content
15,894,907 members
Please Sign up or sign in to vote.
1.00/5 (3 votes)
See more:
Hi Guys,

I'm attempting to build a live support chat application in C# or Java (preferably C# using WCF) and after endless searches I still can't find the answer, hopefully someone here can point me in the right direction.

My problem is that rather than a typical chat room a where users broadcast messages to all connected clients, I need the application to be more like a Live Support app found on websites such as Amazon or eBay.

Ideally multiple customer support agents will have a pre installed WinForms chat application on their machines, when a customer opens a chat window (aspx page) it will connect to a server/service and the server/service will then call all connected customer support agents until one answers. At this point the customer and agent will be connected in a private chat window.

Could somebody please give me some insight or ideas on how to do this?

Thanks,

Owen
Posted
Comments
PIEBALDconsult 8-Nov-15 11:20am    
When beginning a new project, you probably shouldn't concentrate on _how_ another person has done something, but only on the _what_ has been done. You appear to have a reasonable handle on the _what_. _How_ such systems have been done should never enter your thoughts; their way may be awful. _How_ would _you_ like to do it? What tools do _you_ have that can be applied to the challenge?

I agree with using WCF or similar. I do not agree with "the server/service will then call all connected customer support agents until one answers" (I think "push" is a very poor model).
Personally, I'd use a database to track and contain all these conversations.
Agents start their clients, log into the system, and bring up a list of conversations -- perhaps polling the database every five seconds or so.
When a customer starts a conversation (hopefully with a clear product-related question), it gets entered in the database and it shows up on the agents' lists -- "Joe in New York asks: 'Does product X support XML?'" .
An available agent can then select the new conversation and off they go.

That sounds like the basic features required, but you could add more once those are functioning.
The list of conversations can have other features, like color-coding for conversations that have been waiting more than some number of seconds.
It could indicate which agent has the call, duration, number of mesages, etc.
Agents could ask another (more senior?) agent to assist with a call -- that agent can then review all the messages in the coversation to that point.
An agent could perhaps flag the conversation for further review. Maybe a customer has a bug to report or a new feature to describe, and the conversation should go to the development team for review. Or maybe a customer is being abusive of the agent.

One thing I want to stress is that the conversation should be stored in a database and not be lost to the bit-bucket. Archiving or cleanup can happen at some later date. You know those statements that "this conversation may be recorded for training purposes"? There ya go.
BillWoodruff 9-Nov-15 7:31am    
Hi Piebald, This seems to me to be as good an answer to this very general query as the OP could ask for. Why not submit it as an answer ... it will get my #5 :)

Lots of ideas https://www.google.co.uk/search?q=chat+.net+c%23[^]; including CodeProject articles.
 
Share this answer
 
Comments
Owen 'Junior' Watson 8-Nov-15 10:06am    
As I already said, I've searched extensively and all I can find are typical chat rooms where the user broadcasts to all other users, which is NOT what I am looking for.
Richard MacCutchan 8-Nov-15 10:26am    
Then I guess you did not look at the first article in the link.
Owen 'Junior' Watson 8-Nov-15 11:22am    
Does it not just post the message to all logged in clients though?
Richard MacCutchan 8-Nov-15 11:28am    
Possibly, but you can always modify the code to your own requirements.
Hi,
Please have a look at example given,
at url:- https://vcca.codeplex.com/.

https://vcca.codeplex.com/SourceControl/latest

Regards
Shivachalappa K Gotur
 
Share this answer
 
Comments
BillWoodruff 9-Nov-15 7:33am    
That software you refer to is ... on paper ... remarkably multi-functional. However, have you used it yourself? If you have, what do you see as its pros, and cons ?
Hi,

Take a look at this:
https://github.com/dstpierre/lcsk[^]

This looks promising. I didn't try that though.

Building a live chat solution looks easy from the surface, but the real challenge will be on the visitor side. Your app need to be compatible with all the major browsers and they are changing all the time. Also, since smart phones are so popular, your chat app should also look good on the mobile browsers.

To show you a sample of commercial grade live chat app, please take a look at http://www.comm100.com/livechat/[^](I work for the company). It took us 20ish developers and 6 years to develop a live chat app to this level of maturity.


Reliability will be another issue. Your live chat app should be able to withstand minor network glitches. There should be no missing or duplicate messages. To ensure this, how we do it is from the visitor and operator side, whenever a message is typed in, the client side generates an incremental integer identifier at the client side and tries to obtain another integer from the server. If the client side does not receive the integer from the server, it will keep doing that. This way, there will be no missing or duplicate messages. For example, when the network is down and the client does not receive the integer number, the client send the message to the server again. If the server has not received the message (the client side integer is not on the server side), it will store the message and generate a number for the client. If the server has received the message before (the number from the client side is on the server already) but the client did not receive the confirmation, the server will just ignore the duplicate message and send the previously generated number back.

Good luck with your endeavour. If you have any specific question when you do the programming, I can definitely help you with that.

Best.
 
Share this answer
 
Hi Owen,
There is no way for a quick answer to your question to fit in this place.
Since Google didn't gave you an appropriate answer, I guess your best option is to hire a programmer.
https://www.freelancer.com[^]

Your endless search on Google already gave you the leads we can give you here.
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900