A conversational AI chatbot built with Rasa for handling appointment bookings through natural language interactions.
This project implements an intelligent chatbot assistant that can help users:
- Book new appointments
- View existing appointments
- Modify appointment details
- Cancel appointments
- Check availability
- Rasa: 3.6.21
- Python: 3.10.19
- Rasa SDK: 3.6.2
- OS: Ubuntu (Linux)
- Ubuntu 20.04 LTS or later
- Python 3.10
- Minimum 4GB RAM
- 10GB free disk space
git clone https://github.com/AndrewBorst/appointment-rasa.git
cd appointment-rasapython3.10 -m venv venv
source venv/bin/activatepip install --upgrade pip
# Option 1: Install exact versions (RECOMMENDED for team consistency)
pip install -r requirements.txt
# Option 2: Install just Rasa (may get different dependency versions)
pip install -r requirements-main.txtImportant: All developers should use Option 1 (requirements.txt) to ensure everyone has the exact same package versions and avoid "works on my machine" issues.
rasa --versionappointment-rasa/
├── actions/ # Custom action code
│ ├── __init__.py
│ └── actions.py # Custom action implementations
├── data/ # Training data
│ ├── nlu.yml # NLU training examples
│ ├── rules.yml # Conversation rules
│ └── stories.yml # Conversation stories
├── models/ # Trained models (excluded from git)
├── tests/ # Test conversations
│ └── test_stories.yml
├── config.yml # Model configuration
├── domain.yml # Bot's domain definition
├── endpoints.yml # Endpoints configuration
├── credentials.yml # External service credentials
├── instructions.md # Detailed setup instructions
└── README.md # This file
Train or retrain the model after making changes to training data:
rasa trainTest the chatbot in interactive mode:
rasa shellType your messages and press Enter. Use /stop to exit.
Test only the NLU component:
rasa shell nluCheck your training data for inconsistencies:
rasa data validateStart the Rasa server:
rasa run --enable-api --cors "*"If you have custom actions, run the action server in a separate terminal:
# Terminal 1: Action Server
rasa run actions
# Terminal 2: Rasa Server
rasa run --enable-api --cors "*"Edit the files in the data/ directory:
nlu.yml: Add intent examplesstories.yml: Add conversation flowsrules.yml: Add conversation rules
- Domain (
domain.yml): Define intents, entities, slots, responses, and actions - Config (
config.yml): Configure the NLU pipeline and policies - Actions (
actions/actions.py): Implement custom action logic
The chatbot will integrate with a database to:
- Store appointment records
- Track customer information
- Manage availability
- Handle booking conflicts
- Book new appointments
- Cancel existing appointments
- Modify appointment details
- Check available time slots
- View customer appointments
- Email/SMS confirmations
- Calendar integration
- Multi-language support
Recommended method (avoids Rasa bug):
./run_tests.shAlternative methods:
# Explicit paths (avoids results/ directory scanning issue)
rasa test --stories tests --nlu data/nlu.yml
# Test only NLU
rasa test nlu --nlu data/nlu.yml
# Test only Core/Stories
rasa test core --stories testsrasa test without arguments may fail with a TypeError due to a Rasa bug where it tries to parse JSON report files in the results/ directory as training data.
Workaround:
- Use
./run_tests.shscript (recommended) - Or delete the
results/directory before running tests - Or use explicit paths as shown above
Test results are saved to the results/ directory:
intent_report.json- NLU classification reportstory_report.json- Story evaluation reportfailed_test_stories.yml- Any failed test stories- Various confusion matrices and visualizations
Model training fails
- Check YAML syntax in training data files
- Ensure training data is balanced across intents
Actions not working
- Make sure action server is running (
rasa run actions) - Check endpoint configuration in
endpoints.yml
Python version issues
- This project requires Python 3.10
- Use
python3.10 --versionto verify
Run in debug mode to see detailed logs:
rasa shell --debugThis is a private repository. For questions or suggestions, please contact the repository owner.
Private - All Rights Reserved
AndrewBorst
🚧 In Development - Basic setup complete, appointment booking features in progress.
Last Updated: October 10, 2025