You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
2 months ago | |
---|---|---|
src | 2 months ago | |
tests/unit | 2 months ago | |
.env.example | 3 months ago | |
.gitignore | 3 months ago | |
Dockerfile | 3 months ago | |
README.md | 2 months ago | |
bun.lock | 3 months ago | |
captain-definition | 3 months ago | |
index.ts | 3 months ago | |
package.json | 3 months ago | |
startup.sh | 3 months ago | |
tsconfig.json | 3 months ago |
README.md
Task WhatsApp Chatbot
A WhatsApp chatbot for task management, designed to work with Evolution API in a secure internal network environment.
📌 Overview
This service provides a WhatsApp interface for task management within WhatsApp groups. It:
- Listens for
/tarea
commands in WhatsApp groups - Stores tasks in a SQLite database
- Manages user permissions and group membership
- Integrates with Evolution API for WhatsApp connectivity
🔐 Security Model
- Internal Networking: The webhook only accepts connections from Evolution API via internal Docker networking
- Environment Variables: Sensitive configuration is managed through environment variables
- Group Restrictions: Only operates within pre-approved WhatsApp groups
- Input Validation: Sanitizes and validates all user inputs
🧱 Architecture
graph TD
A[Webhook Received] --> B{Valid Payload?}
B -->|No| C[Ignore]
B -->|Yes| D{From Known Group?}
D -->|Yes| E[Update User Last Seen]
D -->|No| F{Private Chat + Known User?}
F -->|No| C
F -->|Yes| E
E --> G{/tarea Command?}
G -->|No| C
G -->|Yes| H{New User?}
H -->|Yes| I[Add to DB]
H -->|No| J[Process Command]
✅ Current Features
- Task creation with optional due dates
- Basic command parsing (
/tarea nueva
,/tarea mostrar
) - Group membership tracking
- SQLite database persistence
- Health check endpoint
- Environment validation
- Input validation for dates and commands
🛠️ Setup
Environment Variables
EVOLUTION_API_URL=http://evolution-api:3000
EVOLUTION_API_KEY=your-api-key
EVOLUTION_API_INSTANCE=main
WHATSAPP_COMMUNITY_ID=your-community-id
CHATBOT_PHONE_NUMBER=1234567890
WEBHOOK_URL=https://your-webhook.com
PORT=3007
NODE_ENV=production
Development Setup
# Install dependencies
bun install
# Start development server
bun run dev
# Run tests
bun test
📅 Roadmap
High Priority
- Implement ResponseQueue processing logic with retries
- Add database schema validation and migrations
- Add error recovery with transaction rollback
- Implement group sync delta updates
Medium Priority
- Add task assignment and ownership
- Implement user permissions system
- Add rate limiting for API calls
- Create task history tracking
Low Priority
- Add task reminders system
- Implement multi-language support
- Create analytics dashboard
- Add user-friendly task list UI
🧪 Testing
Running Tests
bun test
Test Coverage
- Webhook validation
- Command parsing
- Environment checks
- Basic error handling
- Input validation
🧑💻 Contributing
- Fork the repository
- Create a feature branch
- Add tests for new functionality
- Submit a pull request
📚 Documentation
For detailed API documentation and architecture decisions, see the docs/ directory.