Extending Ace Operator V.2

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.

  1. 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.
  2. 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).
  3. 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.
  4. 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.
  5. 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.

VN:R_U [1.9.20_1166]
Rating: 0.0/5 (0 votes cast)

About amit

Amit Chatterjee is a software professional with over 20 years of experience as a software developer and architect. He has been involved in large and complex software products for Telecommunications, B2B E-Commerce and Healthcare industries. He has founded and contributed to open-source projects since the 1990s. Currently, he leads two open-source projects, QUIK-J and CafeSip. His primary interests are in the areas of Service Oriented Architecture, Enterprise Applications, Business Intelligence and Big Data.
This entry was posted in Developer Blogs, Features, Install, Setup, Administer and tagged , , , . Bookmark the permalink.

17 Responses to Extending Ace Operator V.2

  1. sachingoyal01 says:

    Dear Sir, Can we use Oracle as Database instead of MySql? Kindly guide me how can we achieve this?

    VN:R_U [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)
    • amit says:

      Yes it is possible to use Oracle, but it will take some work on your part. First, you have to port the schema using Oracle DDL instead of MySQL DDL. You will find the DDL script under the .ace/sql directory in the tomcat user’s home directory. In addition, you will have to change the appropriate configuration files to use a Oracle JDBC driver instead of the MySQL JDBC driver. Finally, you will have to add the Oracle JDBC driver (ojdbc14, for example) in the classpath by adding it to tomcat/lib directory.

      VN:R_U [1.9.20_1166]
      Rating: 5.0/5 (1 vote cast)
  2. sachingoyal01 says:

    Dear Sir,

    How can I use the application without SSL? What changes are required for that?

    Regards,
    Sachin

    VN:R_U [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)
    • amit says:

      You can use the application without SSL but I would not suggest it. Without SSL, private information about the users and their chat messages will be easily visible to anyone with a tcpdump or a sniffer software.

      If you still insist on doing it, you will have to build from the sources. See my blog on that. Search for the all the web.xml files, open it and remove the security constraints requiring SSL transport.

      Hope this helps.
      Amit

      VN:R_U [1.9.20_1166]
      Rating: 5.0/5 (1 vote cast)
  3. sachingoyal01 says:

    Dear Sir,

    Kindly suggest me how can we maintain chat history of users and how can we view the same?

    One more suggestion is required. If one user is logged in and we try to login with same credentials again then can we show the message that user is already logged in?

    Regards,
    Sachin

    VN:R_U [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)
    • amit says:

      Sachin,

      For chat history, you have two choices:
      (1) You can enable email transcripts on the chat. See the profile configuration for details. When enabled, at the end of a chat, the transcript in HTML format will be emailed to a selected mailbox. You can build an application which polls the mailbox periodically, saves them in a data store and do lookups as needed.

      (2) All (XML) messages exchanged during a chat are stored in files under $ACE_HOME/transcripts directory. You can build an application which polls this directory and extract important information. Although this method is more complex, we use this mechanism in our hosted solution to archive chat records, index for text search, etc.

      As far as login when an user is already logged in, we decided a long time back to logout the user from the first session and let the user login from the second session. This was done because an user may have forgotten to logout by mistake and instead of preventing the user from logging in again, we allow the user to login but disable the first session.

      Hope this helps.

      VN:R_U [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)
  4. sachingoyal01 says:

    Dear Sir,

    Kindly help me again to resolve one more problem.
    I want to populate name and email of logged in user in visitor popup screen, how can I do that?

    Regards,
    Sachin

    VN:R_U [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)
    • sachingoyal01 says:

      Dear Sir,

      I found the way to do that. It is already provided in code :) .
      Thanks a lot.

      Regards,
      Sachin

      VN:R_U [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)
  5. sachingoyal01 says:

    Dear Sir,

    I am facing an issue while logging in as operator.
    In preferences, I have selected chrome as default theme. If I select any other theme and then again select chrome theme, then chrome theme will not get reflected.
    If a theme is selected second time, it will not get reflected.

    Kindly suggest.

    Regards,
    Sachin

    VN:R_U [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)
    • amit says:

      Sachin, this is a known problem and is documented as a bug. But this is a low priority issue and the fix is not straightforward. We will get to it someday.

      VN:R_U [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)
  6. sachingoyal01 says:

    Dear Sir,

    Thanks a lot for your help and support.

    Sir, I have to add functionality in operator view to show chat history of last one month of visitor. For this, I have parsed conversations stored in transcript and I can find all the conversations of a visitor from chat history. I have to show link of all the conversations of a visitor and on clicking the link, I have to display the chat to operator. Now I have to implement it on operator interface which is really difficult task for me.
    Kindly suggest me the right approach to achieve this.

    Regards,
    Sachin

    VN:R_U [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)
  7. sachingoyal01 says:

    Dear Sir,

    I have to add functionality in operator view to show chat history of last one month of visitor. For this, I have parsed conversations stored in transcript and I can find all the conversations of a visitor from chat history. I have to show link of all the conversations of a visitor and on clicking the link, I have to display the chat to operator. Now I have to implement it on operator interface which is really difficult task for me.
    Kindly suggest me the right approach to achieve this.

    Regards,
    Sachin

    VN:R_U [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)
    • amit says:

      Sachin,

      The best option is to create a separate web application to display the chat transcripts. That is what we have done for our hosted solution. What we have is a separate application that our customers can login to view chat transcripts, chat statistics, do a text search, etc. This application is not open-source.

      You can do the same. I suggest using popular frameworks like servlets, node.js, jquery, etc. to build an application like this.

      VN:R_U [1.9.20_1166]
      Rating: 0.0/5 (0 votes cast)
  8. sachingoyal01 says:

    Dear Sir,

    Thanks a lot for your support.

    Sir, Is there any option available where chat session is automatically disconnected after a fixed time interval if there is no communication take place from visitor end for that time interval?

    Regards,
    Sachin

    VN:R_U [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)
  9. sachingoyal01 says:

    Dear Sir,

    Is there any document available regarding Ace 2.0 database?

    Kindly help.

    Regards,
    Sachin

    VN:R_U [1.9.20_1166]
    Rating: 0.0/5 (0 votes cast)

Leave a Reply