As mentioned at https://github.com/RocketChat/Rocket.Chat/issues/1824#issuecomment-170031567 there is a need for some interaction from the website who offers the livechat and livechat app itself.
Possible functions that this API coud have:
FYI @cmcardle75
Some ideas for API calls, in order of decreasing importance. This is quite a wish list, but it would be demo-able with only the first few items on each list. Also, some of these requirements might already be available using existing packages and others might be got for free designing some of the earlier ones to allow them.
Note that the routing to an agent must be asynchronous, as it could be some time before an agent is available. This could be done by putting the visitor in their own private room, but not assigning an agent to that room until the routing request is received. There wouldn't be any need to tell the visitor what is happening. We would be able to do this ourselves with programmatic sending of messages. We probably don't need the department concept.
API (calling into LiveChat from external service)
API Callback (calling into external service from LiveChat)
One potential solution that doesn't involve much work would be to have our own System agent, which is the only qualified operator, so is always assigned to the chat when it enters the system.
If we can write our own programmatic client for this System user, we would be notified when a new chat session starts (either as we join the implicit chat room, or receive the first message). We can then (at our asynchronous leisure) invite the chosen agent to that implicit waiting room. We can remove them as well. We can detect the leaving of various participants, and even attempts to continue the conversation after the agent has left.
We can even consume the text messages themselves to form a transcript. Whether all the calls required already exist to do this, though is another matter...
This is incredible analysis. Thank you @cmcardle75!
On your System agent idea, how will this supervisory agent implement different call-flows for multiple concurrent calls? Are you thinking that it'll keep a global list of all call flows and maintain state of call-in-progress against those flows? Or are you thinking multiple appearances of the supervisory agent?
@sampaiodiego, @Sing-Li We have similar requirements as described by @cmcardle75.
We came across Rocket.Chat while building a universal chat solution connecting 3rd party chat solutions such as Skype, Skype for Business, FB chat, etc., with Cisco contact center agents.
We were building the solution on ActiveMQ but found Rocket.Chat quite interesting because of the rich feature set supported by APIs. However, the solution lacks some APIs that we need. In addition to the APIs requested by @cmcardle75, we need to do the following:
@renatobecker please take a look at this issue and the referenced issue. Make a list of API requests, consolidate, and then close this issue, please? Thanks.
Okay, @marceloschmidt.
Thanks.
We've created specific issues for each feature described on the issue's description.
All of these features can be found here: https://github.com/orgs/RocketChat/projects/20
If you guys notice that there is any feature missing, please, just let me know.
Thanks.
Most helpful comment
Some ideas for API calls, in order of decreasing importance. This is quite a wish list, but it would be demo-able with only the first few items on each list. Also, some of these requirements might already be available using existing packages and others might be got for free designing some of the earlier ones to allow them.
Note that the routing to an agent must be asynchronous, as it could be some time before an agent is available. This could be done by putting the visitor in their own private room, but not assigning an agent to that room until the routing request is received. There wouldn't be any need to tell the visitor what is happening. We would be able to do this ourselves with programmatic sending of messages. We probably don't need the department concept.
API (calling into LiveChat from external service)
API Callback (calling into external service from LiveChat)