Chatbot platform with a modular microservices architecture, connectable to Skype for Business. Built with Rasa Core, IBM Watson, and custom NLP components using TensorFlow embeddings.
The system follows a CONVERSE component pattern with independent, Docker-containerized services:
┌─────────────────────────────────────────────┐
│ Interface │
├──────────┬──────────┬──────────┬────────────┤
│ Security │ Context │ Dialog │ Confidence │
│ Manager │ Manager │ Manager │ Controller │
├──────────┴──────────┴──────────┴────────────┤
│ Configuration Service │
├──────────┬──────────┬──────────┬────────────┤
│ Rasa │ Watson │ SAP │ RPA │
│ Core │ Assistant│ Connector│ Service │
├──────────┴──────────┴──────────┴────────────┤
│ MongoDB (Tracker Store) │
└─────────────────────────────────────────────┘
├── core/ # Core platform services
│ ├── business/ # Business logic engine
│ ├── confidence/ # Response confidence scoring
│ ├── configuration/ # Centralized config service
│ ├── context/ # Conversation context manager
│ ├── dialog/ # Dialog flow manager
│ ├── memory/ # Memory/state manager
│ ├── response/ # Response generation
│ └── security/ # Auth and security
├── enterprise/ # Enterprise integrations
│ ├── rasa/ # Rasa Core + NLU
│ ├── watson/ # IBM Watson Assistant
│ ├── sap/ # SAP connector
│ └── rpa/ # Robotic Process Automation
├── interface/ # Frontend interface
└── deploy/ # Docker deployment configs
- Language: Python 3.6+
- NLP: Rasa Core, TensorFlow
- Enterprise: IBM Watson, SAP
- Database: MongoDB
- Deployment: Docker, Docker Compose
- Interface: Skype for Business
- Docker & Docker Compose
- Python 3.6+
-
Clone the repository:
git clone https://github.com/aifriend/virtual_assistant.git cd virtual_assistant -
Copy the environment file and set your credentials:
cp .env.example .env # Edit .env with your actual credentials -
Build and run:
docker-compose -f 0-docker-compose.yml build docker-compose -f 0-docker-compose.yml up -d
-
Train the Rasa model:
make clean-model docker exec -it rasa_core bash -c "python -m rasa_core.train ..."
All services share a centralized configuration through the configuration_service. Copy config.py to all modules:
make copy-configmake clean-upload # Clean project for production
make clean-logs # Remove all log files
make clean-model # Remove trained models
make clean-mongo # Reset MongoDB data
make show-process # Show active network portsThis project is licensed under the MIT License — see the LICENSE file for details.
Jose — @aifriend