-
Notifications
You must be signed in to change notification settings - Fork 121
Missing Omnichannel features / bridges for GSoC-2020 projects #234
Description
We are about to start the GSoC season(2020) and this year we have at least 3 projects that aim to implement new Omnichannel Apps:
- Dialogflow/RASA chatbot integration(Rocket.Chat)
- Salesforce live agent integration(Viasat)
- Salesforce CRM integration(Viasat)
Even though we already have a few Omnichannel Apps implemented and working very well, we'll need to add/extend a set of new features/bridges in order to develop the 3 news Apps mentioned before.
The discussions about the spec of each project have already started, the students are getting familiar with the Apps-Engine as well as our partners that will be the mentors of some sponsored projects.
Therefore, I'm going to describe what features are still missing on the current version of the Apps-Engine and will be necessary for the execution of the projects:
- Ability to create new users and make them Omnichannel agents:
We'll integrate Rocket.Chat with an external system that will be responsible for determining which agent will serve a given omnichannel room that will be identified by some information stored in its custom fields. Initially, the users may not exist in Rocket.Chat, so the App will need to create it as well as to set the new user as an Omnichannel Agent. Also, the Apps-Engine will need to allow the storage of User's custom fields, in addition to finding a specific User based on a custom field value.
We will need to be able to find users by custom fields because we'll need to store the external application unique ID, this is the information that will identify the Rocket.Chat User/Agent which will serve Omnichannel conversations. the following Rocket.Chat features need to be available to the Apps through the Apps-Engine:
- Create new Rocket.Chat User
- Call Livechat.addAgent method
- Assign other roles to the user, such as the
botrole since the agent's won't be online in Rocket.Chat and the Omnichannel routing system allows offline agents since they have thebotrole
- Add assignAgent and unassignAgent event handlers
The Apps will need to be notified when an agent is assigned or unassigned from an Omnichannel room. To achieve this the Apps-Engine will need to support event handlers on the following Rocket.Chat methods:
- RoutingManager.assignAgent
- RoutingManager.unassignAgent
In both event handlers, the Apps will need to get theroomandagentinformation.
- Ability to listen when a new Omnichannel conversation starts
An App may need to be notified when a new Omnichannel conversation starts in order to execute specific tasks. Currently, we already support the LivechatRoomClosedHandler, now we need to extend something like LivechatRoomStartedHandler. This event happens here:
- createLivechatRoom method
We were aware that we'd need to extend new Omnichannel features sometime, now we have very important reasons to put some effort into these demands, otherwise, it wouldn't be possible to execute the GSoC projects that have Apps-Engine dependency.