tompaana / intermediator-bot-sample

A sample bot, built with the Microsoft Bot Framework (v4), that routes messages between two users on different channels.
https://tompaana.github.io/content/chatbots_as_middlemen.html
MIT License
124 stars 66 forks source link

Implement proper call center support (scenario 2) #27

Open tompaana opened 6 years ago

tompaana commented 6 years ago

The main README describes scenario 2: Channel <-> call center (agent UI).

However, the agent UI is very basic and doesn't really provide much features to support a proper scenario. For instance, the requests are accepted as they come in and there is no way to close the webchat windows.

The minimum requirements for a new agent UI:

In the ideal case the agent UI is hooked via the controller to the command handling mechanism that is already in place for scenario 1.

prats69 commented 6 years ago

I want to add the bot to the slack channel and it should respond to everyone in the channel and send their message to the skype account. Can you point me in the right direction? I tried to do some things but I got lost in the routermanager.

tompaana commented 6 years ago

@prats69

In a nutshell:

  1. Make Skype the aggregation channel (MessageRouterManager.RoutingDataManager.AddAggregationChannel())
  2. Call MessageRouterManager.ConnectAsync() for all parties (in Slack) whose messages you want to send to Skype.
prats69 commented 6 years ago

Can you add me on skype: pratik.malhotra

scorpfromhell commented 6 years ago

What if we already have a web based chat system for the call center agents? How do we connect to the Bot so that a human handoff is possible?

mutanttech commented 5 years ago

@tompaana, I have been looking for human handoff solutions and this sample appeared first in my search. My requirement is that I have three different bots based of BFv3/C# and QnA with LUIS using Directline Channel. I am using WebChat Control for the users to interact. Now, after understanding the need of users looking to talk to human agents, I want to implement a solution for this. Ideally what I think is that there should be a Agent UI through which agents can login, do concurrent chats and see history and reports. I hope this to be a Web Based application which means that Agents should be communicating with the users through a web chat interface possibly same WebChat control.

Now I am unable to figure how can I use this sample and make it sit as router between Agent UI and Client Chat Window. One more concern is that how we can allow several users to become Agents and also allow agents to chat with multiple users simultaneously and maintain the conversation history. One more use case is passing all the conversation that happened between user and bot to agent after human handover so that agent know what has been talked about.

For now our bots are available for anonymous access. Please guide how we should approach this problem or are there any off-the-shelf products that can provide this kind of functionality.

Any suggestions are highly appreciated.

scorpfromhell commented 5 years ago

What you are asking for Amit is the whole live chat platform.

You could build it using SignalR as the chathub.

We have put in nearly three years of efforts into building that. Unfortunately it is the IP of my employer and is not open source.

You need to have different chat queues with different agents assigned to them. Based on what query it is, the chatbot will have to handoff to the appropriate chat queue. Within the chat queue, you'll need to assign it to whichever agent is currently available (online, and doesn't have more than 3-4 current chat sessions already) plus ensure that no one agent is constantly loaded (consider all the chats assigned to all the agents since morning/beginning of shift).

But once you go there, you'll need to build so many "bells and whistles" for the agents and their supervisors, so that they can be efficient in handling all those chat requests that'll no doubt be handed off by the chatbot. ~30% has been our handoff rate.

On Thu, Feb 28, 2019, 1:00 PM Amit C notifications@github.com wrote:

@tompaana https://github.com/tompaana, I have been looking for human handoff solutions and this sample appeared first in my search. My requirement is that I have three different bots based of BFv3/C# and QnA with LUIS using Directline Channel. I am using WebChat Control for the users to interact. Now, after understanding the need of users looking to talk to human agents, I want to implement a solution for this. Ideally what I think is that there should be a Agent UI through which agents can login, do concurrent chats and see history and reports. I hope this to be a Web Based application which means that Agents should be communicating with the users through a web chat interface possibly same WebChat control.

Now I am unable to figure how can I use this sample and make it sit as router between Agent UI and Client Chat Window. One more concern is that how we can allow several users to become Agents and also allow agents to chat with multiple users simultaneously and maintain the conversation history. One more use case is passing all the conversation that happened between user and bot to agent after human handover so that agent know what has been talked about.

For now our bots are available for anonymous access. Please guide how we should approach this problem or are there any off-the-shelf products that can provide this kind of functionality.

Any suggestions are highly appreciated.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/tompaana/intermediator-bot-sample/issues/27#issuecomment-468167625, or mute the thread https://github.com/notifications/unsubscribe-auth/AEtUla6d90nOFX5ZIDABjMu-MYp4JlJ1ks5vR4V8gaJpZM4Rrns2 .

mutanttech commented 5 years ago

@scorpfromhell, Thanks for your response. If your employer is providing it at a product, let me know the website to check it out.

I would like to know how @tompaana thinks about this.

tompaana commented 5 years ago

@mutanttech @scorpfromhell

The call center scenario would indeed be a completely different product/platform. I believe I should close this issue here. This project is merely a sample on how to use the message routing component.

I think the best bet to implement a call center, given that one want to use the message router, is to take the message routing component source and customize it based on one's needs.

I've also seen call center platforms that enable bot integration together with the message routing component. Using those can save a lot in maintenance and software engineering costs.

mutanttech commented 5 years ago

@tompaana, can you please share what call center platforms you have seen aforementioned. I would also like to take a look to gain some insights.

tompaana commented 5 years ago

@mutanttech For instance, LiveEngage is one that has routing capabilities out-of-the-box, but can be enhanced with custom code. I have implemented a simple connector for LivePerson service (Node.js). Ibex Dashboard is another OSS project by Microsoft containing enablers for this kind of a scenario (but does not do the job out-of-the-box).

little1222 commented 4 years ago

The main README describes scenario 2: Channel <-> call center (agent UI).

However, the agent UI is very basic and doesn't really provide much features to support a proper scenario. For instance, the requests are accepted as they come in and there is no way to close the webchat windows.

The minimum requirements for a new agent UI:

  • (I'd like to see this) implemented with Node and Typescript similarly to the current agent UI built by Bill Barnes
  • Have a queue for requests including the time the requests have been in the queue (e.g. on the right-hand side of the browser window)
  • Buttons to accept/reject requests
  • A button to close a chat window

In the ideal case the agent UI is hooked via the controller to the command handling mechanism that is already in place for scenario 1.