Desde que lançamos o Discourse Gamification há um ano, uma das funcionalidades mais solicitadas em nosso roteiro tem sido a capacidade de integrar o Discourse Gamification com sistemas de gamificação externos. Exemplos são muitos:
-
Integrar com programas de gamificação existentes em empresas
-
Capacidade de conceder pontos por eventos que ocorrem fora do Discourse, como eventos presenciais (IRL), ou em outros locais online, como ser um cliente em uma comunidade, ou comprar um produto.
-
A capacidade de permitir que os usuários resgatem seus pontos por brindes (swag), produtos ou benefícios
Hoje, bem a tempo do primeiro aniversário do plugin, tornamos tudo isso possível com uma API completa para lidar com eventos de pontuação personalizados
.
Este novo sistema permite que os administradores:
-
Concedam aos usuários um evento de pontuação personalizado
-
Concedam aos usuários eventos de pontuação negativos, para acomodar eventos de resgate ou penalidades
-
Atualizem e listem eventos personalizados criados anteriormente
API
Pontos concedidos via API levarão até 10 minutos para serem refletidos na pontuação geral de um usuário para eventos criados com a data atual, e até 24h para eventos criados nos últimos 10 dias. Para eventos criados com uma data anterior aos últimos 10 dias, você precisa executar a tarefa rake de preenchimento retroativo (backfill).
Existem 3 endpoints de API diferentes atualmente.
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'
Você também pode listar eventos específicos de usuário ou 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'
Criar 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": "Participante do Karaokê de Maio de 2023"
}'
Sintaxe alternativa usando jo:
jo -p user_id="13" date="2023-04-14" points="15" description="Participante do Karaokê de Maio de 2023" | curl --json @- -XPOST http://example/admin/plugins/gamification/score_events -H "Api-Key: apikeyhere" -H "Api-Username: system"
Atualizar 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": "Participante da palestra principal de Maio de 2023"
}'
Sintaxe alternativa usando jo:
jo -p id="11" points="25" description="Participante do Karaokê de Maio de 2023" | curl --json @- -XPUT http://example/admin/plugins/gamification/score_events -H "Api-Key: apikeyhere" -H "Api-Username: system"
