Seit der Einführung von Discourse Gamification vor einem Jahr gehört die Möglichkeit, Discourse Gamification mit externen Gamification-Systemen zu integrieren, zu den am häufigsten angefragten Funktionen auf unserer Roadmap. Beispiele hierfür sind zahlreich:
- Integration in bestehende Gamification-Programme von Unternehmen
- Möglichkeit, Punkte für Ereignisse zu vergeben, die außerhalb von Discourse stattfinden, z. B. reale Veranstaltungen (IRL) oder andere Online-Aktivitäten wie der Status als Kunde in einer Community oder der Kauf eines Produkts
- Möglichkeit, Nutzern zu erlauben, ihre Punkte gegen Werbegeschenke, Produkte oder Vorteile einzutauschen
Heute, passend zum ersten Jahrestag des Plugins, haben wir all dies mit einer vollständigen API zur Verarbeitung benutzerdefinierter Scoring-Ereignisse ermöglicht
.
Dieses neue System ermöglicht es Administratoren:
- Nutzern benutzerdefinierte Scoring-Ereignisse zu vergeben
- Nutzern negative Scoring-Ereignisse zu vergeben, um Einlösungen oder Sanktionen abzubilden
- Benutzerdefinierte, zuvor erstellte Ereignisse zu aktualisieren und aufzulisten
API
Über die API vergabene Punkte können bis zu 1 Stunde dauern, um sich im Gesamtscore eines Nutzers für Ereignisse mit dem aktuellen Datum widerzuspiegeln, und bis zu 24 Stunden für Ereignisse, die in den letzten 10 Tagen erstellt wurden. Für Ereignisse, die mit einem Datum älter als 10 Tage erstellt wurden, können Sie die Schaltfläche Scores neu berechnen in der Gamification-Admin-Oberfläche verwenden oder den Backfill-Rake-Task ausführen:
rake gamification_scores:backfill_scores_from[YYYY-MM-DD].
Derzeit gibt es drei verschiedene API-Endpunkte.
Ereignisse auflisten
Gibt bis zu 100 Ereignisse zurück. Sie können nach id, user_id und/oder date filtern.
curl https://<example_url>/admin/plugins/gamification/score_events.json \
-H 'API-Key: <api_key_here>' \
-H 'API-Username: <api_username_here>'
Sie können auch spezifische Benutzer- oder Datumsereignisse auflisten:
curl https://<example_url>/admin/plugins/gamification/score_events.json?user_id=1&date=2023-05-01 \
-H 'API-Key: <api_key_here>' \
-H 'API-Username: <api_username_here>'
Ereignis erstellen
curl -X POST https://<example_url>/admin/plugins/gamification/score_events.json \
-H 'API-Key: <api_key_here>' \
-H 'API-Username: <api_username_here>' \
-H "Content-Type: application/json" \
-d '{
"user_id": 13,
"date": "2023-04-14",
"points": 15,
"description": "May 2023 Karaoke attendee"
}'
Alternative Syntax mit 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"
Ereignis aktualisieren
Der Update-Endpunkt erfordert id und points. Sie können optional description aktualisieren. Beachten Sie, dass user_id und date nach der Erstellung nicht geändert werden können.
curl -L -X PUT https://<example_url>/admin/plugins/gamification/score_events.json \
-H 'API-Key: <api_key_here>' \
-H 'API-Username: <api_username_here>' \
-H "Content-Type: application/json" \
-d '{
"id": 6,
"points": 25,
"description": "May 2023 keynote attendee"
}'
Alternative Syntax mit 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"
