If you have already installed, configured and running Ace Operator and wondering how to extends the capabilities beyond supported customizations, you may find this post useful. Ace Operator is an open-source software. You can modify the Java code and create your own version but of course, when you do that, you will find it hard to merge your code when the next version of Ace Operator comes out with new feature sets that you want. In this blog, I discuss about less intrusive changes that allow you to extends Ace Operator without having to branch out to your code stream.
As a part of our hosted Ace Operator business, we offer a set of features that are not available in the open-source solution. The features include Analytics and reporting, customer portal, transcript management among other things and all these features are provided by developing external application applications that interact with Ace Operator. At a high-level, here are the various ways of interacting with Ace Operator.
- Configuration tables: Ace Operator stores much of the configuration data in the MySQL. The data is stored in two databases, ace and webtalk. The webtalk database contains configuration information on operators, operator groups and queue configuration. You can develop an external application that manages operators by directly reading and writing from these tables. In almost all cases, Ace Operator will pickup the information you added/removed/modified in the database.
- Chat records and measurements: Ace Operator records quite a bit of information on operator and visitor activities as well as the chat sessions. This includes information like when operators log in an out, chat session initiation information, disconnection and so on. In addition, every operator group records group statistics every 15 minute including number of active chats, average visitor wait time, etc. You can develop an external application that reads data from these tables for extracting useful application and presenting them in reports. The Analytics and reporting application we offer in our hosted service does just that using Apache Camel (used as an ETL tool) and Jasper Reports (for report generation).
- RMI services: Ace Operator provides a set of RMI services that can be used to get group measurements, check if all operators are busy, activating/deactivating groups, checking if an operator is logged in or not, etc. These are considered more of real-time real time services compared to extracting data from the database. The Portal application we offer to our hoisted customers uses these services to present users with useful information and allow group administrators to setup group parameters.
- JMX services: In addition, Ace Operator comes with a set of JMX services for external management applications to use. You can use a JConsole to examine these services.
- Plugin architecture: If you explore the configuration files located under the .ace/config directory or the database tables (webtalk.feature_tbl), you will find that a number of configuration elements define fully qualified Java class names to specify a certain functionality handler. This is similar to how Servlets are configured in web.xml and beans are configured if you are using Spring Framework. You can replace the functionality by adding your own class instead of the standard classes and by changing the configuration. For example, you can add your own class for handling operator queue instead of using the standard, com.quikj.application.web.talk.feature.operator.Operator class. You will be able to add the classes you created for customizing Ace Operator either in ace-contactcenter war file or you can add them to the Tomcat lib directory.
I hope this blog helps you with your customization effort. Since Ace Operator is an open-source application, you will be able to go through the code and understand how to add new features in the best possible way. If you added a new feature and want to contribute to the Ace Operator open-source application, we will be very happy to consider it.