| ID | Username | Role | Device | Dibuat |
|---|
Website dapat berkomunikasi dengan WA Gateway melalui API dan Webhook.
PORT=3003 AUTH_USER=lotim AUTH_PASS=5203 JWT_SECRET=wa-gateway-secret-key-2026 WEBHOOK_URL=http://website.com/api/webhook/whatsapp WEBHOOK_SECRET=secret DB_HOST=127.0.0.1 DB_USER=root DB_PASS= DB_NAME=bedait_wa
| Method | Endpoint | Deskripsi |
|---|---|---|
| POST | /auth/login | Login — dapatkan JWT token |
| GET | /auth/me | Cek user saat ini |
| GET | /health | Cek status gateway |
| GET | /devices | Daftar semua device |
| POST | /devices | Tambah device baru |
| DELETE | /devices/:id | Hapus device |
| POST | /devices/:id/restart | Restart device |
| POST | /devices/:id/logout | Logout dari WhatsApp |
| POST | /send/message | Kirim pesan WhatsApp |
| POST | /send/group | Kirim pesan ke grup |
| GET | /groups | Daftar grup WhatsApp |
| GET | /user/check | Cek nomor terdaftar |
| GET | /conversations | Daftar percakapan |
| GET | /conversations/:phone | Detail percakapan |
| GET | /logs | Log aktivitas |
| GET | /sessions/export | Download backup sessions |
| GET | /users | Daftar users |
| POST | /users | Tambah user baru |
| PUT | /users/:id | Update user |
| DELETE | /users/:id | Hapus user |
// Login — dapatkan token
fetch('/auth/login', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ username: 'lotim', password: '5203' })
})
// Response: { "token": "eyJ...", "user": { ... } }
// Gunakan token di setiap request
fetch('http://localhost:3003/send/message', {
method: 'POST',
headers: {
'Authorization': 'Bearer eyJ...',
'Content-Type': 'application/json'
},
body: JSON.stringify({
device_id: 'default',
phone: '6281234567890',
message: 'Halo!'
})
})
fetch('http://localhost:3003/send/message', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + token,
'Content-Type': 'application/json'
},
body: JSON.stringify({
device_id: 'default',
phone: '6281234567890',
message: 'Halo dari website!'
})
})
Setiap pesan masuk akan dikirim ke WEBHOOK_URL dengan format:
{
"event": "message",
"device_id": "default",
"device_name": "Default",
"payload": {
"from": "6281234567890",
"body": "Halo",
"id": "message-id",
"from_name": "Nama Pengirim",
"chat_id": "6281234567890@c.us",
"timestamp": 1234567890
}
}
// Contoh verifikasi (PHP)
$secret = 'secret';
$payload = file_get_contents('php://input');
$signature = 'sha256=' . hash_hmac('sha256', $payload, $secret);
if ($signature === $_SERVER['HTTP_X_HUB_SIGNATURE_256']) {
// signature valid
}
// Dapatkan daftar grup dulu
fetch('http://localhost:3003/groups?device_id=default', {
headers: { 'Authorization': 'Bearer ' + token }
})
// Response: { groups: [{ id: "id@g.us", name: "Nama Grup" }] }
// Kirim ke grup
fetch('http://localhost:3003/send/group', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + token,
'Content-Type': 'application/json'
},
body: JSON.stringify({
device_id: 'default',
group_id: 'id@g.us',
message: 'Halo grup!'
})
})
CREATE TABLE messages (
id INT AUTO_INCREMENT PRIMARY KEY,
device_id VARCHAR(50),
direction ENUM('in','out'),
phone VARCHAR(20),
message TEXT,
from_name VARCHAR(100),
wa_message_id VARCHAR(100),
status VARCHAR(20),
created_at DATETIME
);