GoWhatsapp/wa_gateway_documentation.md

100 lines
2.9 KiB
Markdown

# Dokumentasi API & Webhook WhatsApp Gateway (Go)
Sistem WhatsApp Gateway ini dikembangkan menggunakan Golang dan terhubung dengan library `whatsmeow` untuk memberikan REST API yang responsif dan ringan, serta dilengkapi sistem Webhook modern untuk push notification secara realtime.
---
## 🔒 Autentikasi
Gunakan header berikut untuk mengakses API (jika diaktifkan di konfigurasi gateway Anda):
- **Header:** `x-api-key`
- **Value:** `API_KEY` rahasia Anda
---
## 📩 1. Mengirim Pesan (API Endpoints)
Base URI: `http://localhost:5555/api` (atau disesuaikan dengan URL gateway Anda)
### Mengirim Teks (Personal / Grup)
**Endpoint:** `POST /api/send-message`
**Format Body (JSON):**
```json
{
"phone": "628123456789",
"message": "Halo, ini pesan otomatis."
}
```
*Catatan:* Sistem otomatis mengenali dan memformat nomor.
### Mengirim Media (Gambar, Video, Dokumen)
**Endpoint:**
- `POST /api/send-image`
- `POST /api/send-video`
- `POST /api/send-document`
- `POST /api/send-audio`
- `POST /api/send-sticker`
**Format Body (Multipart/form-data):**
- `phone`: Nomor tujuan
- `caption`: Teks/caption (Opsional)
- `file`: File upload yang valid
### Fitur Teks Lanjutan
- **Quote (Reply):** `POST /api/send-message-quote` (menyertakan `quotedMsgId`)
- **Mention (Tag):** `POST /api/send-message-mention` (menyertakan list `mentionedJIDs`)
---
## 📡 2. Pengecekan Status & QR
- **Cek Status Bot:** `GET /api/status`
- **Generate / Ambil QR Code:** `GET /api/qr` (hanya jika WhatsApp berstatus belum terhubung)
---
## 🪝 3. Dokumentasi Webhook (Realtime Events)
Webhook berfungsi untuk menerima notifikasi secara otomatis ke server Anda (seperti aplikasi MikroTik) ketika ada pesan masuk ke WhatsApp.
### Cara Mengaktifkan Webhook
Edit file `.env` di direktori aplikasi WhatsApp Gateway Golang:
```env
WEBHOOK_ENABLED=true
WEBHOOK_URL=http://url-aplikasi-anda.com/webhook/wa-receive
WEBHOOK_SECRET=kode_rahasia_anda (opsional, untuk X-Webhook-Signature)
```
### Struktur Payload yang Diterima (POST Request)
Server aplikasi Anda akan menerima JSON dengan struktur berikut:
```json
{
"event": "message",
"timestamp": "2024-03-29T22:30:00Z",
"data": {
"messageId": "3E3A4B89...",
"from": "628123456789@s.whatsapp.net",
"phoneNumber": "628123456789",
"chatType": "personal",
"isGroup": false,
"pushName": "Budi",
"messageType": "message",
"text": "Teks pesan dari pengirim"
}
}
```
### Fitur Auto-Reply langsung dari Webhook
Anda dapat memberikan balasan otomatis *tanpa* perlu melakukan API Call lagi. Cukup response endpoint webhook Anda dengan JSON `200 OK`:
```json
{
"action": "reply",
"messages": [
{ "type": "text", "content": "Halo Budi, pesan Anda telah kami terima!" }
]
}
```
---
## 🗂 Fitur Lainnya (Kontak & Grup)
- **Get Kontak:** `GET /api/contacts` (Lokal)
- **Cek Info Nomor WA:** `GET /api/contact/info?phone=628xx`
- **Manajemen Grup:** `GET /api/groups` (List grup) dan `GET /api/groups/:jid/info` (Detail grup)