Da quando abbiamo lanciato Discourse Gamification un anno fa, una delle funzionalità più richieste dalla nostra roadmap è stata la possibilità di integrare Discourse Gamification con sistemi di gamification esterni. Gli esempi sono molti:
-
Integrazione con programmi di gamification esistenti nelle aziende
-
Capacità di assegnare punti per eventi che avvengono al di fuori di Discourse, come eventi dal vivo (IRL) o online altrove, ad esempio essere un cliente in una community o acquistare un prodotto.
-
La possibilità di permettere agli utenti di riscattare i loro punti per gadget, prodotti o benefici
Oggi, proprio in occasione del primo anniversario del plugin, abbiamo reso tutto ciò possibile grazie a una completa API per gestire eventi di punteggio personalizzati
.
Questo nuovo sistema consente agli amministratori di:
-
Assegnare agli utenti un evento di punteggio personalizzato
-
Assegnare agli utenti eventi di punteggio negativi, per gestire eventi di riscatto o penalità
-
Aggiornare ed elencare gli eventi personalizzati precedentemente creati
API
\u003e
I punti assegnati tramite API richiederanno fino a 1 ora per essere riflessi nel punteggio complessivo di un utente per gli eventi creati con la data corrente, e fino a 24 ore per gli eventi creati negli ultimi 10 giorni. Per gli eventi creati con una data precedente a 10 giorni, è possibile utilizzare il pulsante Ricalcola Punteggi nell’interfaccia di amministrazione di Gamification o eseguire il task rake di backfill: rake gamification_scores:backfill_scores_from[YYYY-MM-DD].
Attualmente sono disponibili 3 diversi endpoint API.
Elenco Eventi
Restituisce fino a 100 eventi. È possibile filtrare per id, user_id e/o 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'
È inoltre possibile elencare eventi specifici per utente o data:
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'
Crea Evento
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": "Partecipante al Karaoke di maggio 2023"
}'
Sintassi alternativa utilizzando jo:
jo -p user_id="13" date="2023-04-14" points="15" description="Partecipante al Karaoke di maggio 2023" | curl --json @- -XPOST http://example/admin/plugins/gamification/score_events -H "Api-Key: apikeyhere" -H "Api-Username: system"
Aggiorna Evento
L’endpoint di aggiornamento richiede id e points. È possibile aggiornare opzionalmente description. Nota che user_id e date non possono essere modificati dopo la creazione.
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": "Partecipante al keynote di maggio 2023"
}'
Sintassi alternativa utilizzando jo:
jo -p id="11" points="25" description="Partecipante al Karaoke di maggio 2023" | curl --json @- -XPUT http://example/admin/plugins/gamification/score_events -H "Api-Key: apikeyhere" -H "Api-Username: system"
