Components

๐Ÿ“˜

Please read the monitoring section if you are looking for information regarding the criticality of each component.

SentiOne Automate

Application

Application name (pod)Description (purpose)Main Tech-Stack
adminWeb interface offering bot administration utilities. It's being used to manage phrases, dialogue flow, integrations, NLU & Training set management. API interface for knowledge base.React, Play, Scala, sbt, JVM
gatewayExposes REST API used to communicate with bot services.React, Play, Scala, sbt, JVM
ssoApplication offering Single Sign-on integration. It makes a use of cookies injected by Windows OS & Browser. Based on that cookie it's able to authenticate user within Active Directory (Kerberos protocol, negotiation mechanism called SPNEGO). After successful authentication it integrates with new-web and admin applications using OAuth2 protocol. Roles & Permissions mechanism can be managed with use of new-web and admin applications.React, Play, Scala, sbt, JVM
analyticsIt exposes analytical services to admin application.React, Play, Scala, sbt, JVM
dialogsProcesses flow of Dialogue and stores conversation sessions (It deals with parsing dialogue blocks and connections between them)React, Play, Scala, sbt, JVM
web-chatReference webpage for demonstrating web-chat implementation. It can serve webchat window that can be embedded as an iframe on customer's webpage.React, Play, Scala, sbt, JVM
cron-orchestratorIt coordinates execution of so-called 'Cron Jobs'. Responsible for collecting job execution history as well.Play, Scala, sbt, JVM
twitter-botApplication responsible for integrating with Twitter and redirecting Twitter messages to appropriate Bot.Play, Scala, sbt, JVM
ms-teams-botApplication responsible for integrating with Microsoft Teams and redirecting MS Teams messages to appropriate Bot.Play, Scala, sbt, JVM
channels-connectorBridge between different channels (e.g. Facebook or WhatsApp) and SentiOne Automate.Play, Scala, sbt, JVM
thread-coordinatorManager of bot conversation threads owners.Play, Scala, sbt, JVM

NLU

Application name (pod)Description (purpose)Main Tech-Stack
name-serviceSurname declension service (used for generating surnames of the authors)Python, PIP
ducklingSystem entities service (recognising dates, common names, phone numbers)Clojure, JVM
senti-duckWrapper for duckling service which also adds some additional postprocessing.Python, PIP
inferrerNLU Hypothesis gathering servicePython, PIP
keywordsKeyword entities management servicePython, PIP
nlu-facadeFacade for NLU ServicesReact, Play, Scala, sbt, JVM
nlu-pipelineServices connector in form of sequential processing (pipeline)React, Play, Scala, sbt, JVM
intentizer-multiIntent detection serviceTensorFlow, Python, PIP
ner-plNamed Entity detectionTensorFlow, Python, PIP
tagger-plIdentyfing part of speech within text.Python, PIP
pcreRegular expressions servicePython, PIP
patternPattern detection service, empowering our own technology for pattern-detection.Python, PIP

Voice

Application nameDescription (purpose)Main Tech-Stack
charonCharon is a software client for SIP telephone services. It can be a SIP server client as an internal account (extension) as well as terminate sip-trunk with the propagation of telephone numbers inside it - it does not require any additional services to implement such configurationJava, Akka
dialog-sentioneA service exchanging data with Automate - via the gateway component. Communication is carried out via REST API.
The entire system logic is implemented by Automate - VoiceGateway receives information based on what content to generate speech synthesis and returns, in the same way, recognition collected using ASR speech recognition services.
Java, Akka
pytiaClient of ASR speech recognition services. It has a set of appropriate connectors for specific external services to which the audio stream should be transmitted and text recognition should be received in return. Service configuration description (application.conf file)Java, Akka
crocottaText-to-speech client. It enables data exchange with the TTS service by sending text values to it and receiving the generated audio stream. Access to the TTS website is provided using MRCP technology.Java, Akka
gallA service that records telephone calls in the form of audio files. These files are saved on a shared disk share, which must be configured mapped to a directory available to the website.Java, Akka

SentiOne Listen & React

Application name (pod)PurposeMain Tech-Stack
new-webWeb interface used for bot administration. It can be used to browse conversation transcriptions with the ability to play back the original audio conversation. It also allows Human take over of the conversation initially conducted by Bot (if it was in the scope of the project)React, Play, Scala, sbt, JVM
analyserBackend service for new-web. It's responsible for data-analysis, aggregation and dashboards.Scala, sbt, JVM
redisKey-Value database kept in memory used for monitoring API usage by new-web / analyser. It's also used for event-passing for monitored threads (communication between new-web and slim-uploader), distributed operation synchronisation, websocket synchronisation between new-web instancesANSI C, Linux executable
slim-uploaderMoves conversation history (transcription) from RabbitMQ to ElasticSearch cluster.Akka, Scala, sbt, JVM
refineryEnriches conversation with semantic analysis (sentiment).Akka, Scala, sbt, JVM
bot-integrationAllows integrating transcriptions from another systems into SentiOne React. Main purpose is to save transcriptions from SentiOne Automate.Play, Scala, sbt, JVM

Databases

NamePurposeMain Tech-Stack
ElasticSearch clusterDatabase used for storing transcriptionsLucene, Java, JVM
RabbitMQ clusterMessage-passing system used for asynchronous communication.Erlang
RedisStorage of trained NLU models and temporal data (cache)C
PostgreSQL databaseGeneral-purpose database, configured and provided by customer or used internally inside k8s clusterC