Introduction
Pendahuluan
EcoBot is a Python/Flask backend for WhatsApp-based waste management. It integrates AI text and vision, a SQLite database, and role-based workflows to deliver education, schedules, collection locations, and administrative operations.
Version 1.5.0 introduces hybrid AI mode, database-backed long‑term memory, resilient API calls, and a toggleable registration flow.
Use Cases / Functions
Kasus Penggunaan / Fungsi
WhatsApp Chatbot Integration
WhatsApp Chatbot
Citizens can report waste collection needs, classify waste types, and receive instant feedback through WhatsApp messaging, making the service accessible to all community members.
Administrative & Coordinator Access
Akses Koordinator & Admin
Administrators can monitor waste collection statistics and receive automated reports, while admins have full control via API endpoints for managing roles and data.
Automated Waste Classification
Klasifikasi Sampah Otomatis
AI-powered image analysis automatically identifies waste types from photos, providing instant classification and recycling guidance to users.
Collection Point Management
Manajemen Titik Pengumpulan
Dynamic mapping and scheduling for waste collection points, helping users find the nearest appropriate disposal locations and optimizing collection routes.
Features
Fitur
- AI Modes - EcoBot (database-only), General, and Hybrid modes selectable via WhatsApp commands.
- Conversation Memory - Long‑term memory stored in SQLite (user facts and conversation history).
- Registration Modes - Auto or manual, controlled by
REGISTRATION_MODE
. - WhatsApp Integration - Uses WAHA.
- AI Providers - Lunos.tech (text) and Unli.dev (vision).
- Admin Commands - /admin help, user/point management, stats, logs, backup, broadcast, report, memory_stats.
Arsitektur Sistem
System Overview
EcoBot menggunakan pola arsitektur microservice yang dibangun di atas kerangka kerja Flask. Sistem ini terdiri dari beberapa komponen kunci yang saling berinteraksi:
Komponen Arsitektur
Architecture Components
Komponen | Teknologi | Tujuan |
---|---|---|
Lapisan API | Flask Blueprints | Endpoint REST untuk webhook, manajemen pengguna, dan data titik pengumpulan. |
Mesin Inti | Python 3.10+ | Mengelola logika bisnis, konfigurasi, dan fungsionalitas utama. |
Database | SQLite | Penyimpanan data pengguna, log pesan, dan status aplikasi. |
API WhatsApp | WAHA Integration | Penerimaan dan pengiriman pesan melalui WhatsApp. |
Layanan AI | Lunos.tech & Unli.dev | Pemrosesan bahasa alami dan klasifikasi gambar untuk fitur-fitur cerdas. |
Layanan Email | Mailry.co | Pengiriman laporan dan notifikasi otomatis melalui email. |
Alur Data
Data Flow
Memulai
Getting Started
Quickstart
Quickstart
-
Clone and install
git clone https://github.com/mycoderisyad/raflangt-ecobot.git cd raflangt-ecobot python3 -m venv venv && source venv/bin/activate pip install -r requirements.txt
-
Configure environment
cp .env.example .env # edit .env and set at minimum: WAHA_BASE_URL=... WAHA_API_KEY=... LUNOS_API_KEY=... LUNOS_BASE_URL=... REGISTRATION_MODE=auto
-
Run the server
python3 main.py
-
Point WAHA webhook to EcoBot
Set WAHA instance webhook URL to
http://<your-server>:5000/webhook
(or your public URL). Ensure the instance is connected. -
Test via WhatsApp
- Send
help
to see features by role - Try AI modes:
/hybrid-ecobot
,/layanan-ecobot
,/general-ecobot
- Send an image to receive waste classification
- Send
Persyaratan
Requirements
- Python 3.10 atau lebih tinggi
- pip (manajer paket Python)
- Virtual environment (direkomendasikan)
- Git untuk kontrol versi
Instalasi
Installation
# Clone the repository
git clone https://github.com/raflangt/ecobot.git
cd ecobot
# Buat virtual environment
python3 -m venv venv
source venv/bin/activate # Di Windows: venv\Scripts\activate
# Install dependensi
pip install -r requirements.txt
# Siapkan konfigurasi lingkungan
cp .env.example .env
# Edit file .env dengan kunci API dan konfigurasi Anda
Menjalankan Aplikasi
Running the Application
# Mode pengembangan (default)
python3 main.py
# Mode produksi
python3 main.py --production
# Produksi dengan Gunicorn
gunicorn -w 4 -b 0.0.0.0:8000 'main:create_app("production")'
Konfigurasi
Configuration
Variabel Lingkungan
Environment Variables
Variabel | Wajib | Deskripsi | Contoh |
---|---|---|---|
ENVIRONMENT |
Tidak | Lingkungan aplikasi | development , production |
PORT |
Tidak | Port server (default: 8000) | 8000 |
WAHA_BASE_URL |
Ya | Base URL WAHA | https://waha.devlike.pro/api/instance_id |
WAHA_API_KEY |
Ya | Kunci otentikasi WAHA | your_waha_api_key |
LUNOS_API_KEY |
Ya | Kunci API layanan AI Lunos.tech | sk-lunos-xxx |
UNLI_API_KEY |
Ya | Kunci API layanan AI Unli.dev | sk-unli-xxx |
MAILRY_API_KEY |
Ya | Kunci API layanan email Mailry.co | your_mailry_api_key |
MAILRY_BASE_URL |
Tidak | Base URL API Mailry.co | https://api.mailry.co |
MAILRY_FROM_EMAIL |
Tidak | Alamat pengirim email | noreply@example.com |
MAILRY_TO_EMAIL |
Tidak | Alamat penerima default | coordinator@example.com |
REGISTRATION_MODE |
Tidak | Mode registrasi pengguna | auto atau manual |
ADMIN_PHONE_NUMBERS |
Ya | Nomor telepon admin (dipisahkan koma) | +6281234567890,+6281987654321 |
Dokumentasi API
API Documentation
Base URLs
Base URLs
Lingkungan | Base URL | Tujuan |
---|---|---|
Produksi | `https://ecobot.example.com` | Lingkungan produksi live (akses publik untuk endpoint kesehatan & publik saja) |
Pengembangan | `http://localhost:5000` | Server pengembangan lokal |
Endpoint sensitif atau administratif tidak dipublikasikan di dokumentasi publik. Untuk akses programatik, hubungi pengelola proyek.
Minta Akses API melalui WhatsApp
Contoh Respons
Response Examples
Health Check Response
Health Check Response
GET /health
{
"status": "healthy",
"service": "EcoBot",
"version": "1.5.0",
"environment": "production"
}
Format Respons Error
Error Response Format
{
"error": {
"code": 400,
"message": "Format permintaan tidak valid",
"details": "Kolom yang dibutuhkan hilang: phone_number"
}
}
Contoh Penggunaan
Usage Examples
WhatsApp Webhook Integration
WhatsApp Webhook Integration
# Contoh pemrosesan payload webhook dari WAHA
# Pastikan Anda telah mengonfigurasi endpoint webhook di dasbor WAHA
{
"messages": [{
"from": "whatsapp:+6281234567890",
"body": "Jadwal sampah",
"type": "text"
}]
}
Alur Integrasi
Workflow Integration
Panduan Deployment
Deployment Guide
Deployment Produksi dengan Heroku/Gunicorn
Production Deployment with Heroku/Gunicorn
# Pastikan file Procfile dan requirements.txt sudah ada di root proyek
# Procfile: web: gunicorn -w 4 -b 0.0.0.0:$PORT main:create_app()
# requirements.txt: flask, gunicorn, requests, dll.
# Login ke Heroku CLI
heroku login
# Buat aplikasi baru di Heroku
heroku create nama-app-unik-ecobot
# Hubungkan repositori Git Anda
git push heroku master
# Setel variabel lingkungan
heroku config:set WAHA_BASE_URL=...
heroku config:set WAHA_API_KEY=...
...
Praktik Terbaik Keamanan
Security Best Practices
Keamanan API
API Security
- Proteksi Kunci API: Simpan kunci di variabel lingkungan, jangan pernah di kode.
- Hanya HTTPS: Selalu gunakan enkripsi SSL/TLS di lingkungan produksi.
- Validasi Input: Validasi semua data yang masuk dan bersihkan input untuk mencegah serangan.
Keamanan Infrastruktur
Infrastructure Security
- Reverse Proxy: Gunakan Nginx atau Caddy sebagai reverse proxy dengan header keamanan.
- Firewall: Batasi akses ke port yang diperlukan saja.
- Pembaruan Reguler: Jaga sistem dan dependensi selalu terbarui.
Changelog / Rencana Masa Depan
Changelog / Future Work
Riwayat Versi
Version History
Versi | Tanggal | Perubahan |
---|---|---|
1.5.0 | 2025-08-26 | Mode AI hybrid, memori percakapan, perintah berbasis peran, konfigurasi REGISTRATION_MODE, dan perbaikan keandalan API. |
Rencana Perbaikan
Planned Improvements
- Pelatihan model AI yang disesuaikan untuk akurasi klasifikasi sampah yang lebih baik.
- Dashboard analitik real-time untuk koordinator.
- Sistem Poin dan Redeem untuk insentif warga.
- Dukungan multi-bahasa untuk komunitas yang beragam.