# 📘 Documentation Admin – Intégration WhatsApp Business API

## 🔐 Configuration de base

### `.env` requis
```env
WHATSAPP_TOKEN=EAA...
WHATSAPP_PHONE_NUMBER_ID=1234567890
WHATSAPP_WEBHOOK_TOKEN=secrettoken
```

### Vérification du webhook (Meta)
- URL : `https://yourdomain/api/whatsapp/webhook`
- Token de vérification : doit correspondre à `WHATSAPP_WEBHOOK_TOKEN`

---

## 📩 Envoi de message

**Route :** `POST /api/message/send`

### Exemple JSON (texte)
```json
{
  "to": "33612345678",
  "type": "text",
  "text": {
    "body": "Bonjour 👋"
  }
}
```

> Supporte aussi `image`, `video`, `document`, `interactive`, etc.

---

## 📥 Réception de messages / statuts

- Le webhook `POST /api/whatsapp/webhook` :
  - enregistre les messages reçus dans la table `conversations`
  - décrémente les crédits `CurrentMonthCredits`
  - met à jour le `status` d'un message (`delivered`, `read`, etc.)

---

## 🧾 Historique utilisateur

### Interface admin
- URL : `/admin/user/{id}/conversations`
- Permet :
  - de visualiser tous les messages avec filtres
  - de voir la conversation complète au clic sur une ligne (HTMX)

### API :
`GET /api/user/{id}/conversations`

---

## 💬 Modèle de conversation

```go
type Conversation struct {
  UserID     uint
  From       string
  To         string
  MessageID  string
  Type       string
  Content    string
  Direction  string // inbound / outbound
  Status     string // delivered, read, sent...
}
```

---

## 🧮 Crédit consommé par message

| Type         | Crédit |
|--------------|--------|
| text         | 1      |
| image/video  | 2      |
| document     | 2      |
| interactive  | 1      |
| sticker/audio| 1      |
| reaction     | 0      |

---

## ✅ À tester
- [ ] Vérifier réception via webhook
- [ ] Vérifier affichage des conversations admin
- [ ] Vérifier décompte de crédits
- [ ] Tester `GET` de validation webhook avec Meta
