Desde que lanzamos Discourse Gamification hace un año, una de las características más solicitadas de nuestra hoja de ruta ha sido la capacidad de integrar Discourse Gamification con sistemas de gamificación externos. Los ejemplos son muchos:
-
Integrar con programas de gamificación existentes en empresas
-
Capacidad de otorgar puntos por eventos que ocurren fuera de Discourse, como eventos IRL, o en otros lugares en línea, como ser cliente en una comunidad, o comprar un producto.
-
La capacidad de permitir a los usuarios canjear sus puntos por merchandising, productos o beneficios
Hoy, justo a tiempo para el primer aniversario del plugin, hemos hecho posible todo lo anterior con una API completa para manejar eventos de puntuación personalizados
.
Este nuevo sistema permite a los administradores:
-
Otorgar a los usuarios un evento de puntuación personalizado
-
Otorgar a los usuarios eventos de puntuación negativos, para acomodar eventos de canje o penalizaciones
-
Actualizar y listar eventos personalizados creados previamente
API
Los puntos otorgados a través de la API tardarán hasta 10 minutos en reflejarse en la puntuación general de un usuario para los eventos creados con la fecha actual, y hasta 24 horas para los eventos creados en los últimos 10 días. Para los eventos creados con una fecha anterior a los últimos 10 días, debe ejecutar la tarea rake de relleno (backfill).
Actualmente hay 3 endpoints de API diferentes.
Listar Eventos
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'
También puede listar eventos específicos de usuario o por fecha:
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'
Crear 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": "Asistente al Karaoke de Mayo de 2023"
}'
Sintaxis alternativa usando jo:
jo -p user_id="13" date="2023-04-14" points="15" description="Asistente al Karaoke de Mayo de 2023" | curl --json @- -XPOST http://example/admin/plugins/gamification/score_events -H "Api-Key: apikeyhere" -H "Api-Username: system"
Actualizar 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": "Asistente al discurso principal de Mayo de 2023"
}'
Sintaxis alternativa usando jo:
jo -p id="11" points="25" description="Asistente al Karaoke de Mayo de 2023" | curl --json @- -XPUT http://example/admin/plugins/gamification/score_events -H "Api-Key: apikeyhere" -H "Api-Username: system"
