Depuis l'enregistrement du produit WooCommerce vers « Ajouter au panier » dans une conversation par chat

DEV - 26/03
Que se passe-t-il entre un propriétaire de magasin enregistrant un produit et un client l'ajoutant au panier à partir d'un message de discussion ? Webhooks, intégrations, recherche hybride, agents parallèles et attribution de conversion.

Un propriétaire de magasin enregistre un produit dans WooCommerce. Trois secondes plus tard, un client à l'autre bout du monde trouve ce produit en tapant « quelque chose de chaud pour l'hiver » dans un widget de chat, l'ajoute à son panier et passe à la caisse. Le propriétaire du magasin voit l'achat attribué à la session de chat sur son tableau de bord.

Cela fait beaucoup de systèmes qui communiquent entre eux. Voici ce qui se passe à chaque étape.

Étape 1 : l'enregistrement du produit déclenche un webhook

Le plugin WooCommerce se connecte àwoocommerce_update_product. Lorsque le propriétaire du magasin clique sur « Publier » ou « Mettre à jour », le hook déclenche et met en file d'attente un événement webhook en mémoire.

L'événement n'est pas envoyé immédiatement. Il va dans une file d'attente en mémoire qui se vide sur le serveur WordPress.fermeraction, une fois que la réponse HTTP est déjà envoyée au navigateur. La page d'administration se charge à vitesse normale. Le webhook se produit une fraction de seconde plus tard.

// Simplifié à partir du plugin actuel add_action('woocommerce_update_product', [$this, 'on_product_update']); add_action('shutdown', [$this, 'flush_webhook_queue']);
Entrer en mode plein écran Quitter le mode plein écran

La file d'attente est dédoublonnée. Si un produit déclenche plusieurs hooks dans une seule requête (l'enregistrement d'un produit variable déclenche des hooks pour le parent et chaque variante), chaque ID de produit est mis en file d'attente une fois. Le lot est envoyé sous la forme d'un seul POST signé par HMAC vers le point de terminaison du webhook.

La charge utile est une structure JSON consolidée : un événement par produit avec toutes les traductions imbriquées à l'intérieur :

{ "events": [{ "type": "product.updated", "data": { "identification_number": "pro...
[Courte citation de 8% de l'article original]
Loading...