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 numerosi:
-
Integrare con programmi di gamification esistenti nelle aziende
-
Possibilità di assegnare punti per eventi che si verificano al di fuori di Discourse, come eventi IRL, o altrove online, come essere un cliente in una community, o acquistare un prodotto.
-
La possibilità di consentire agli utenti di riscattare i loro punti per merchandising, prodotti o vantaggi
Oggi, giusto in tempo per il primo anniversario del plugin, abbiamo reso possibile tutto ciò con una API completa 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 negativo, per tenere conto di riscatti o eventi di penalità
-
Aggiornare ed elencare eventi personalizzati creati in precedenza
API
I punti assegnati tramite API richiederanno fino a 10 minuti per riflettersi sul 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 antecedente agli ultimi 10 giorni è necessario eseguire il task rake di backfill.
Attualmente ci sono 3 endpoint API diversi.
Elenca Eventi
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'
È anche 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 Karaoke Maggio 2023"
}'
Sintassi alternativa utilizzando jo:
jo -p user_id="13" date="2023-04-14" points="15" description="Partecipante Karaoke Maggio 2023" | curl --json @- -XPOST http://example/admin/plugins/gamification/score_events -H "Api-Key: apikeyhere" -H "Api-Username: system"
Aggiorna Evento
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": "Partecipante keynote Maggio 2023"
}'
Sintassi alternativa utilizzando jo:
jo -p id="11" points="25" description="Partecipante Karaoke Maggio 2023" | curl --json @- -XPUT http://example/admin/plugins/gamification/score_events -H "Api-Key: apikeyhere" -H "Api-Username: system"
