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égration avec des programmes de gamification existants dans les entreprises
-
Capacité à attribuer des points pour des événements se produisant en dehors de Discourse, tels que des événements en présentiel (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 articles promotionnels, des produits ou des avantages
Aujourd’hui, juste à temps pour le premier anniversaire du plugin, nous avons rendu tout cela possible grâce à une API complète pour gérer les événements de score personnalisés
.
Ce nouveau système permet aux administrateurs de :
-
Attribuer aux utilisateurs un événement de score personnalisé
-
Attribuer aux utilisateurs des événements de score négatifs, pour gérer les échanges ou les pénalités
-
Mettre à jour et lister les événements personnalisés créés précédemment
API
\u003e
Les points attribués via l’API peuvent prendre jusqu’à 1 heure pour se refléter dans 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 à 10 jours, vous pouvez utiliser le bouton Recalculer les scores dans l’interface d’administration de la gamification, ou exécuter la tâche rake de remplissage : rake gamification_scores:backfill_scores_from[AAAA-MM-JJ].
Il existe actuellement 3 points de terminaison API différents.
Liste des événements
Retourne jusqu’à 100 événements. Vous pouvez filtrer par id, user_id et/ou date.
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 les é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": "Participant au karaoké de mai 2023"
}'
Syntaxe alternative utilisant jo :
jo -p user_id="13" date="2023-04-14" points="15" description="Participant au karaoké de mai 2023" | curl --json @- -XPOST http://example/admin/plugins/gamification/score_events -H "Api-Key: apikeyhere" -H "Api-Username: system"
Mettre à jour un événement
Le point de terminaison de mise à jour nécessite id et points. Vous pouvez optionnellement mettre à jour description. Notez que user_id et date ne peuvent pas être modifiés après la création.
curl -L -X PUT 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 '{
"id": 6,
"points": 25,
"description": "Participant à la conférence de mai 2023"
}'
Syntaxe alternative utilisant jo :
jo -p id="11" points="25" description="Participant au karaoké de mai 2023" | curl --json @- -XPUT http://example/admin/plugins/gamification/score_events -H "Api-Key: apikeyhere" -H "Api-Username: system"
