Depuis le lancement de Discourse Gamification il y a un an, l’une des fonctionnalités les plus demandées de notre feuille de route a été la possibilité d’intégrer Discourse Gamification avec un système de gamification externe. Les exemples sont nombreux :
-
Intégrer avec des programmes de gamification existants dans les entreprises
-
Possibilité d’attribuer des points pour des événements qui se déroulent en dehors de Discourse, comme des événements IRL, ou ailleurs en ligne, comme être un client dans une communauté, ou acheter un produit.
-
La possibilité de permettre aux utilisateurs d’échanger leurs points contre des produits dérivés, des produits ou des avantages
Aujourd’hui, juste à temps pour le premier anniversaire du plugin, nous avons rendu tout ce qui précède possible avec une API complète pour gérer les événements de notation personnalisés
.
Ce nouveau système permet aux administrateurs de :
-
Attribuer un événement de score personnalisé aux utilisateurs
-
Attribuer des événements de score négatifs aux utilisateurs, pour tenir compte des événements d’échange ou de pénalité
-
Mettre à jour et lister les événements personnalisés précédemment créés
API
Les points attribués via l’API prendront jusqu’à 10 minutes pour se refléter sur le score global d’un utilisateur pour les événements créés avec la date actuelle, et jusqu’à 24 heures pour les événements créés au cours des 10 derniers jours. Pour les événements créés avec une date antérieure aux 10 derniers jours, vous devez exécuter la tâche rake de remplissage (backfill).
Il existe actuellement 3 points de terminaison d’API différents.
Lister les événements
curl https://\u003cexample_url\u003e/admin/plugins/gamification/score_events.json \
-H 'API-Key: \u003capi_key_here\u003e' \
-H 'API-Username: \u003capi_username_here\u003e'
Vous pouvez également lister des événements spécifiques à un utilisateur ou à une date :
curl https://\u003cexample_url\u003e/admin/plugins/gamification/score_events.json?user_id=1\u0026date=2023-05-01 \
-H 'API-Key: \u003capi_key_here\u003e' \
-H 'API-Username: \u003capi_username_here\u003e'
Créer un événement
curl -X POST https://\u003cexample_url\u003e/admin/plugins/gamification/score_events.json \
-H 'API-Key: \u003capi_key_here\u003e' \
-H 'API-Username: \u003capi_username_here\u003e' \
-H "Content-Type: application/json" \
-d '{
"user_id": 13,
"date": "2023-04-14",
"points": 15,
"description": "May 2023 Karaoke attendee"
}'
Syntaxe alternative utilisant jo :
jo -p user_id="13" date="2023-04-14" points="15" description="May 2023 Karaoke atendee" | curl --json @- -XPOST http://example/admin/plugins/gamification/score_events -H "Api-Key: apikeyhere" -H "Api-Username: system"
Mettre à jour l’événement
curl -L -X PUT https://\u003cexample_url\u003e/admin/plugins/gamification/score_events.json?id=6 \
-H 'API-Key: \u003capi_key_here\u003e' \
-H 'API-Username: \u003capi_username_here\u003e' \
-H "Content-Type: application/json" \
-d '{
"user_id": 11,
"date": "2023-04-15",
"points": 25,
"description": "May 2023 keynote attendee"
}'
Syntaxe alternative utilisant jo :
jo -p id="11" points="25" description="May 2023 Karaoke attendee" | curl --json @- -XPUT http://example/admin/plugins/gamification/score_events -H "Api-Key: apikeyhere" -H "Api-Username: system"
