General description

Analytics is a component responsible for gathering analytics data. It stores all information in SQL database. It serves data for the admin panel: analytics module.

API

Default port: 5754

Application has got HTTP API which is not secured by any mechanism, therefore should NOT be visible from outside the Kubernetes cluster.

There are default endpoints for monitoring purposes. They are described in Components monitoring section.

Databases

SQL

The component has its own SQL Database for storing transcription. Main tables:

  • session log - contains all conversations' information
  • message_event - contains single messages within a conversation, contains details such as: dialog state, intents, variables, tags, commands, used states, and executions times

RabbitMQ

The component reads data from the queues:

  • automate.analytics.message - used for getting transcriptions
  • automate.jobs.XXX - used for handling jobs from cron-orchestrator

Communication

This service communicates with the following services:

ApplicationConfig to URLAuth
bot-integrationchatbots.senti-one-api.urlOTP
storagechatbots.storage-api.urlOTP

Config

Application's config:

chatbots.analytics {
  db { 
    url: "jdbc:postgresql://HOST:PORT/chatbots-analytics",
    user: "USER",
    password: "PASSWORD"
    max-connections: 20
  }

data-retention {

    # Max duration to keep data for, always extended to the start of a day
    duration: 365d


    # Sessions delete limit per run, can be ignored when there are more sessions in 6h period
    limit-per-run: 100000
}

Other required configurations:

  
chatbots.senti-one-api {  
  url: "", # actual address for bot-integration service  
  secret: "KNSWG4TFORIGC43T" # same secret as defined in bot-integration service  
}  

 



chatbots.messaging {  
  rabbit {  
    hosts: ["HOST:PORT"]  
    username: "USER"  
    password: "PASSWORD"  
  }  
}    



Play Framework config

More information about Play Framework could be found in Play Framework configuration section

Job execution

AnalyticsExport (Optional)

This optional cron job (if configured) is executing in this component. It fetches data from the DB and from bot-integration API. Then it zips the results and sends to the specified address (in the job's configuration).

Troubleshooting

No analytics data in analytics module (NOT conversation analytics)

If it is reported that analytics module does not show any data in charts it could mean that this component is not doing its job. First thing is to check if actual data exists in the underlying DB.

If the data is present in the DB then communication between admin and analytics should be investigated.

If there isn't data in the DB, next step would be to check RabbitMQ's automate.analytics.message queue. If there are messages it would mean there are probably errors when processing messages - check logs.