Desde que lanzamos Discourse Gamification hace un año, una de las funciones más solicitadas en nuestra hoja de ruta ha sido la capacidad de integrar Discourse Gamification con sistemas de gamificación externos. Los ejemplos son abundantes:
-
Integrar con programas de gamificación existentes en empresas.
-
Capacidad para otorgar puntos por eventos que ocurren fuera de Discourse, como eventos presenciales (IRL) o en otros lugares en línea, como ser un cliente en una comunidad o comprar un producto.
-
La capacidad de permitir que los usuarios canjeen sus puntos por artículos promocionales, productos o beneficios.
Hoy, justo a tiempo para el primer aniversario del plugin, hemos hecho todo lo anterior posible 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 negativa, para acomodar eventos de canje o penalizaciones.
-
Actualizar y listar eventos personalizados creados previamente.
API
\u003e
Los puntos otorgados a través de la API tardarán hasta 1 hora en reflejarse en la puntuación general de un usuario para eventos creados con la fecha actual, y hasta 24 horas para eventos creados en los últimos 10 días. Para eventos creados con una fecha anterior a 10 días, puedes usar el botón Recalcular puntuaciones en la interfaz de administración de gamificación o ejecutar la tarea rake de relleno: rake gamification_scores:backfill_scores_from[AAAA-MM-DD].
Actualmente hay 3 puntos finales de API diferentes.
Listar Eventos
Devuelve hasta 100 eventos. Puedes filtrar por id, user_id y/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'
También puedes listar eventos específicos de un usuario o 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
El punto final de actualización requiere id y points. Opcionalmente, puedes actualizar description. Ten en cuenta que user_id y date no se pueden cambiar después de la creación.
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": "Asistente a la conferencia magistral 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"
