3: Berichten ontvangen
De gateway levert elk binnenkomend bericht door een POST-verzoek te sturen naar een webhook route in je app. Je verifieert het gedeelde geheim en doet vervolgens wat je wilt met het bericht.
3.1: De webhook route
route both POST receive {
$given = (string)($_SERVER['HTTP_SECRET'] ?? '')
if ($this->secret === '' || !hash_equals($this->secret, $given)) return output(['error' => 'unauthorized'], code: 401)
$data = json_decode((string)file_get_contents('php://input'), true) ?: []
type_message::create(sender: (string)($data['from'] ?? ''), kind: (string)($data['type'] ?? 'text'), body: (string)($data['text'] ?? ''), ts: time())
return output(['ok' => true])
}
Twee details zijn belangrijk:
- Gebruik
hash_equalsvoor de geheime controle, nooit==, om timinglekken te voorkomen. - Lees de ruwe body met
php://input; de gateway stuurt JSON, geen formulier.
3.2: Een bericht verwerken
Binnen de webhook heb je de volledige app beschikbaar. Log het (zoals hierboven), stuur automatisch een antwoord met de WhatsApp resource, route het naar een mens, of verspreid het via Phlo Realtime naar een live inbox. De demo logt naar een JSON-model en rendert een Inbox; het enige wat je hoeft te doen is de webhook van de gateway naar /receive te wijzen zodat berichten verschijnen.