WhatsApp Gateway

Panneau d'administration

Utilisez ADMIN_API_KEY (gestion des comptes) ou la clé d'un compte existant.
Tableau de bord
Comptes actifs
Msgs envoyés
Msgs reçus
Webhooks actifs
Derniers messages
Direction Type Numéro Statut Date
Aucun message
Nouveau compte WhatsApp
Comptes enregistrés

Chargement…

Tester l'envoi d'un message
Format international E.164
Seul hello_world est disponible par défaut (fourni par Meta). Les templates personnalisés doivent être approuvés dans le Meta Business Manager.
Envoyé ! wamid :
Historique des messages
Dir. Type Numéro wamid Statut Date
Chargement…
Enregistrer un callback

Le gateway renverra les messages entrants vers cette URL en temps réel.

Callbacks enregistrés

Chargement…

URL de base : http://localhost:3000
Authentification : header X-API-Key: <votre_clé>

CléAccèsComment l'obtenir
ADMIN_API_KEYGestion des comptes (créer, supprimer, lister)Fichier .env du gateway
api_key du compteEnvoi de messages, webhooks, logsRetournée à la création du compte
X-API-Key: votre_clé_ici

Dans .env de votre projet Laravel :

WA_GATEWAY_URL=https://gateway.example.com
WA_GATEWAY_API_KEY=votre_api_key

Dans config/services.php :

'whatsapp_gateway' => [
    'url'     => env('WA_GATEWAY_URL'),
    'api_key' => env('WA_GATEWAY_API_KEY'),
],

Envoi d'un message :

use Illuminate\Support\Facades\Http;

$gateway = config('services.whatsapp_gateway');

Http::withHeaders(['X-API-Key' => $gateway['api_key']])
    ->post($gateway['url'] . '/api/messages/text', [
        'to'      => '+237612345678',
        'message' => 'Votre commande est confirmée !',
    ]);

// Boutons
Http::withHeaders(['X-API-Key' => $gateway['api_key']])
    ->post($gateway['url'] . '/api/messages/interactive/buttons', [
        'to'      => '+237612345678',
        'body'    => 'Que souhaitez-vous faire ?',
        'buttons' => [
            ['id' => 'order',  'title' => 'Commander'],
            ['id' => 'status', 'title' => 'Mon statut'],
        ],
    ]);

Quand un message arrive, le gateway envoie ce JSON à chaque URL callback enregistrée :

{
  "event": "message",           // "message" | "status"
  "account_id": "uuid",
  "phone_number_id": "123…",
  "timestamp": 1718187202,
  "data": {
    "from": "+237612345678",    // pour event = "message"
    "wamid": "wamid.HBg…",
    "type": "text",
    "content": "Bonjour !",
    "raw": { /* payload Meta brut */ }
  }
}
Si un secret est défini sur le webhook, chaque requête contient le header X-Hub-Signature-256: sha256=… pour vérifier l'authenticité côté client.