Notre serveur envoie des webhooks sous forme de POST JSON vers l’URL que vous avez configurée. Voici comment les intercepter et les traiter.
POSTapplication/jsonX-Signature pour vérifier la payloadtype, question ou answer, tag, lang, sent_at, etc.HTTP 200 pour confirmer la réception<?php
$payload = json_decode(file_get_contents('php://input'), true);
$signature = $_SERVER['HTTP_X_SIGNATURE'] ?? '';
$secret = 'VOTRE_CLE_SECRETE';
$expected = hash_hmac('sha256', json_encode($payload), $secret);
if (!hash_equals($expected, $signature)) {
http_response_code(403);
exit('Signature invalide');
}
if ($payload['type'] === 'question') {
$question = $payload['question'];
$tag = $payload['tag'];
$lang = $payload['lang'];
}
http_response_code(200);
echo 'Webhook reçu';
?>
const express = require('express');
const crypto = require('crypto');
const app = express();
app.use(express.json());
app.post('/webhook', (req, res) => {
const payload = req.body;
const signature = req.header('X-Signature') || '';
const secret = 'VOTRE_CLE_SECRETE';
const expected = crypto.createHmac('sha256', secret)
.update(JSON.stringify(payload))
.digest('hex');
if (signature !== expected) return res.status(403).send('Signature invalide');
if (payload.type === 'question') {
console.log(`Question reçue [${payload.lang}/${payload.tag}]: ${payload.question}`);
}
res.send('Webhook reçu');
});
app.listen(3000, () => console.log('Serveur webhook prêt sur le port 3000'));
from flask import Flask, request, abort
import hmac, hashlib, json
app = Flask(__name__)
secret = b'VOTRE_CLE_SECRETE'
@app.route('/webhook', methods=['POST'])
def webhook():
payload = request.get_json()
signature = request.headers.get('X-Signature', '')
expected = hmac.new(secret, json.dumps(payload).encode(), hashlib.sha256).hexdigest()
if signature != expected:
abort(403, 'Signature invalide')
if payload['type'] == 'question':
print(f"Question reçue [{payload['lang']}/{payload['tag']}]: {payload['question']}")
return 'Webhook reçu', 200
if __name__ == '__main__':
app.run(port=5000)
Ce diagramme et ces exemples montrent comment recevoir, vérifier et traiter le webhook JSON de manière sécurisée et simple pour votre serveur.