Panduan Presensi Karyawan Otomatis dengan WhatsApp Attendance Bot

📱 Panduan WhatsApp Attendance Bot
🎯 Fitur Utama
Bot ini adalah sistem presensi karyawan yang menggunakan:
- 📍 Geolocation - Validasi lokasi karyawan
- 📸 Face Recognition - Identifikasi otomatis dari foto
- ⚡ Real-time - Proses langsung dan cepat
- 🔐 Secure - API key protection
🚀 Quick Start
1️⃣ Setup & Instalasi
# Install dependencies npm install @whiskeysockets/baileys qrcode-terminal axios form-data # Edit konfigurasi di whatsapp-bot.js const API_BASE_URL = 'http://localhost:5000/api/v1' const API_KEY = 'your-secret-api-key-here' # Ganti dengan API key Anda # Jalankan bot node whatsapp-bot.js # Scan QR code yang muncul dengan WhatsApp
2️⃣ Verifikasi Bot Berjalan
Setelah scan QR code, Anda akan menerima pesan:
✅ Attendance Bot Online! 📡 API: Connected 📍 Kirim lokasi + foto untuk presensi ⌨️ Ketik /help untuk bantuan
📍 Cara Melakukan Presensi
✅ CHECK-IN (Masuk Kerja)
Langkah 1: Kirim LIVE LOCATION (PENTING!)
1. Buka chat dengan bot 2. Klik ikon lampiran (+) 3. Pilih "Lokasi" 4. Pilih "LOKASI LIVE" atau "LIVE LOCATION" (bukan share location biasa!) 5. Pilih durasi (15 menit atau 1 jam) 6. Kirim
⚠️ PENTING: Harus LIVE LOCATION, bukan share location biasa!
Bot akan membalas DAN MEREPLY pesan lokasi Anda:
✅ Live Location Diterima! 📍 Lat: -6.208800 📍 Lng: 106.845600 📸 Kirim foto selfie untuk melanjutkan presensi!
Langkah 2: Kirim Foto Selfie
1. Ambil foto selfie (wajah harus jelas) 2. Kirim foto tanpa caption
Bot akan MEREPLY foto Anda dengan:
🔄 Memproses Presensi... 📍 Validasi lokasi kantor 📸 Face recognition ⏱️ Mohon tunggu...
Kemudian bot akan MEREPLY lagi dengan hasil:
🟢 CHECK-IN BERHASIL! 👤 John Doe 🆔 K001 ⏰ 08:30:15 📊 Confidence: 95.5% 🏢 Kantor Pusat Jakarta 📍 -6.208800, 106.845600 ✅ Presensi tercatat dalam sistem!
📸 Kirim foto selfie untuk melanjutkan presensi!
**Langkah 2: Kirim Foto Selfie**
- Ambil foto selfie (wajah harus jelas)
- Kirim foto tanpa caption
Bot akan membalas:
🟢 CHECK-IN BERHASIL!
👤 John Doe 🆔 K001 ⏰ 08:30:15 📊 Confidence: 95.5% 🏢 Kantor Pusat Jakarta 📍 -6.208800, 106.845600
✅ Presensi tercatat dalam sistem!
--- ### 🔴 CHECK-OUT (Pulang Kerja) **Langkah 1: Kirim Lokasi Live** (sama seperti check-in) **Langkah 2: Kirim Foto dengan Caption**
- Ambil foto selfie
- Tambahkan caption: "checkout" atau "pulang" atau "out"
- Kirim
Bot akan membalas:
🔴 CHECK-OUT BERHASIL!
👤 John Doe 🆔 K001 ⏰ 17:30:45 📊 Confidence: 96.2% 🏢 Kantor Pusat Jakarta 📍 -6.208800, 106.845600
⏱️ Total Jam Kerja: 9.0 jam
✅ Presensi tercatat dalam sistem!
--- ## ⌨️ Command List ### User Commands | Command | Deskripsi | Contoh | |---------|-----------|---------| | `/help` atau `/start` | Panduan lengkap | `/help` | | `/locations` | Daftar lokasi kantor | `/locations` | | `/status` | Status sistem bot & API | `/status` | | `/mystatus [ID]` | Cek status presensi Anda | `/mystatus K001` | | `/checkin` | Panduan check-in | `/checkin` | | `/checkout` | Panduan check-out | `/checkout` | ### Response Examples **`/locations`**
🏢 Lokasi Kantor (2)
- Kantor Pusat Jakarta 📍 Jl. Sudirman No. 1 🎯 Radius: 100m 📊 -6.2088, 106.8456
- Kantor Cabang Bogor 📍 Jl. Pajajaran No. 10 🎯 Radius: 50m 📊 -6.5944, 106.7892
💡 Anda harus berada dalam radius kantor untuk presensi!
**`/status`**
📊 System Status
🤖 WhatsApp Bot: Online 📡 API Server: Online 🏢 Office Locations: 2 ⏰ 07/10/2025 20:30:15
✅ Sistem siap digunakan!
**`/mystatus K001`**
📊 Status Presensi
🆔 Employee ID: K001 📅 07/10/2025
Status: Present 🟢 Check-in: 08:30:15 🔴 Check-out: 17:30:45 🏢 Kantor Pusat Jakarta
✅ Bisa check-in ❌ Sudah check-out
--- ## ❌ Error Handling & Solutions ### Error: "Lokasi belum dikirim!" **Penyebab:** Anda langsung kirim foto tanpa kirim lokasi dulu. **Solusi:** 1. Kirim lokasi live terlebih dahulu 2. Tunggu konfirmasi bot 3. Baru kirim foto --- ### Error: "Lokasi sudah kedaluwarsa!" **Penyebab:** Lokasi yang Anda kirim sudah lebih dari 5 menit. **Solusi:** 1. Kirim ulang lokasi live yang baru 2. Langsung kirim foto (jangan menunggu lama) --- ### Error: "Lokasi Tidak Valid!" **Penyebab:** Anda berada di luar radius kantor yang diizinkan. **Solusi:** 1. Pastikan Anda berada di kantor 2. Cek lokasi kantor dengan `/locations` 3. Pastikan GPS aktif dan akurat 4. Coba pindah ke area yang lebih dekat dengan pusat kantor --- ### Error: "Wajah tidak dikenal" **Penyebab:** Face recognition tidak mengenali wajah Anda. **Solusi:** 1. Pastikan foto selfie jelas (tidak blur) 2. Wajah menghadap langsung ke kamera 3. Pencahayaan cukup terang 4. Tidak memakai masker/kacamata hitam 5. Hubungi admin untuk mendaftarkan wajah Anda jika belum terdaftar --- ### Error: "Sudah check-in hari ini" **Penyebab:** Anda sudah melakukan check-in hari ini. **Solusi:** - Jika ingin check-out, kirim foto dengan caption "checkout" - Jika memang salah check-in, hubungi admin --- ### Error: "Belum check-in hari ini" **Penyebab:** Anda mencoba check-out padahal belum check-in. **Solusi:** 1. Lakukan check-in terlebih dahulu 2. Kirim foto tanpa caption untuk check-in --- ## 💡 Tips & Best Practices ### 📸 Foto yang Baik ✅ **DO:** - Wajah terlihat jelas - Pencahayaan cukup - Menghadap kamera - Tidak blur - Background netral ❌ **DON'T:** - Foto blur atau gelap - Wajah tertutup masker/kacamata - Angle terlalu miring - Terlalu jauh dari kamera - Foto group/banyak orang ### 📍 Lokasi yang Akurat ✅ **DO:** - Aktifkan GPS/Location Services - Gunakan "Lokasi Live" atau "Lokasi Saat Ini" - Kirim dari dalam area kantor - Tunggu GPS akurat (biasanya 10-30 detik) ❌ **DON'T:** - GPS mati - Kirim lokasi palsu/fake - Kirim dari luar kantor - Menggunakan VPN yang mengubah lokasi ### ⏰ Timing ✅ **DO:** - Check-in saat tiba di kantor - Check-out saat akan pulang - Kirim lokasi dan foto berurutan (jangan terlalu lama jeda) ❌ **DON'T:** - Check-in terlalu pagi/dini hari - Check-out sebelum jam kerja selesai - Menunda kirim foto setelah kirim lokasi --- ## 🔧 Troubleshooting ### Bot Tidak Merespons **Cek:** 1. Bot masih online? (tanya admin) 2. Koneksi internet Anda stabil? 3. Nomor Anda terdaftar di sistem? **Solusi:** - Tunggu beberapa detik - Coba kirim ulang - Hubungi admin ### API Server Down **Gejala:**
❌ Error! API server tidak dapat dijangkau
**Solusi:** - Tunggu admin memperbaiki server - Bot tetap bisa terima pesan, tapi tidak bisa proses presensi ### Face Recognition Gagal Terus **Solusi Bertahap:** 1. Coba di tempat dengan pencahayaan lebih baik 2. Pastikan kamera bersih 3. Ambil foto dari jarak 30-50cm 4. Jika tetap gagal, hubungi admin untuk re-register wajah --- ## 📞 Kontak Admin Jika mengalami masalah yang tidak bisa diselesaikan: 1. Screenshot error message 2. Catat waktu kejadian 3. Hubungi admin dengan informasi: - Nomor WhatsApp Anda - Employee ID - Waktu kejadian - Screenshot error --- ## 🔐 Security & Privacy ### Data yang Disimpan: - ✅ Lokasi (koordinat GPS) - untuk validasi - ✅ Waktu check-in/out - untuk record presensi - ✅ Foto selfie - untuk face recognition - ✅ Employee ID & confidence score ### Data yang TIDAK Disimpan: - ❌ Riwayat lokasi real-time - ❌ Foto selain untuk presensi - ❌ Chat history ### Privacy: - Foto hanya digunakan untuk face recognition - Lokasi hanya digunakan untuk validasi area kantor - Data tersimpan secure di server perusahaan --- ## 📊 Flowchart Presensi
START ↓ Buka chat dengan bot ↓ Kirim lokasi live ↓ Bot: "Lokasi diterima! Kirim foto" ↓ Ambil foto selfie ↓ Check-in? → Kirim foto tanpa caption ↓ atau Check-out? → Kirim foto dengan caption "checkout" ↓ Bot memproses:
- Validasi lokasi (dalam radius kantor?)
- Face recognition (wajah dikenal?)
- Check validitas (sudah check-in/out?) ↓ ✅ BERHASIL → Bot kirim konfirmasi + detail atau ❌ GAGAL → Bot kirim error + saran solusi ↓ END
--- ## 🆘 FAQ **Q: Apakah harus kirim lokasi live setiap kali presensi?** A: Ya, karena sistem perlu memvalidasi Anda berada di kantor. **Q: Berapa lama lokasi yang saya kirim valid?** A: Lokasi valid selama 5 menit. Setelah itu harus kirim ulang. **Q: Bisa presensi untuk orang lain?** A: Tidak. Face recognition akan identifikasi wajah yang ada di foto. **Q: Bagaimana jika lupa check-out?** A: Hubungi admin untuk manual correction. **Q: Bisa check-in/out berkali-kali dalam sehari?** A: Tidak. Sistem hanya menerima 1 check-in dan 1 check-out per hari. **Q: Apakah bot menyimpan history chat?** A: Tidak. Bot hanya memproses pesan untuk presensi saja. **Q: Bagaimana cara mendaftar wajah baru?** A: Hubungi admin untuk didaftarkan melalui web interface. --- ## 📈 Version History **v3.0.0** (Latest) - ✨ Geolocation validation - ✨ Face recognition auto-detect - ✨ Simplified flow (location + photo only) - 🔧 Bug fixes: senderNumber undefined - 📝 Improved logging **v2.0.0** - Multiple reference photos - Employee management via bot - Admin commands **v1.0.0** - Basic face recognition - WhatsApp integration --- **Semoga panduan ini membantu! Untuk pertanyaan lebih lanjut, hubungi admin sistem.** 🚀