Configuration des webhooks (Queues)
Jambo utilise Symfony Messenger pour traiter les webhooks et autres tâches asynchrones en arrière-plan. Sans un worker en cours d’exécution, ces tâches s’accumulent dans la queue sans jamais être traitées.
Configurer le transport
Dans .env :
# Recommandé pour la production : transport doctrine (fiable)MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0
# Redis (plus rapide, nécessite un serveur Redis)MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messagesPour le transport doctrine, créez la table de queue :
php bin/console messenger:setup-transportsLancer le worker
php bin/console messenger:consume async --time-limit=3600Production : Supervisor
[program:jambo-worker]command=php /var/www/jambo-api/bin/console messenger:consume async --time-limit=3600user=www-datanumprocs=2autostart=trueautorestart=truesupervisorctl reread && supervisorctl update && supervisorctl start jambo-worker:*Vérifier la signature des webhooks
Chaque requête webhook inclut un header X-Jambo-Signature :
$signature = 'sha256=' . hash_hmac('sha256', $rawBody, $secret);if (!hash_equals($signature, $request->headers->get('X-Jambo-Signature'))) { // Signature invalide — rejeter la requête}