Desde que lançamos o Discourse Gamification há um ano, uma das funcionalidades mais solicitadas em nosso roteiro foi a capacidade de integrar o Discourse Gamification com sistemas de gamificação externos. Os 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 lugares online, como ser um cliente em uma comunidade ou comprar um produto.
-
A capacidade de permitir que os usuários troquem seus pontos por brindes, produtos ou benefícios
Hoje, justamente na data 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 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é 1 hora para refletir na pontuação geral de um usuário para eventos criados com a data atual, e até 24 horas para eventos criados nos últimos 10 dias. Para eventos criados com uma data anterior a 10 dias, você pode usar o botão Recalcular Pontuações na interface de gamificação do administrador ou executar a tarefa rake de preenchimento:
rake gamification_scores:backfill_scores_from[AAAA-MM-DD].
Atualmente, existem 3 endpoints de API diferentes.
Listar Eventos
Retorna até 100 eventos. Você pode filtrar por id, user_id e/ou date.
curl https://<example_url>/admin/plugins/gamification/score_events.json \
-H 'API-Key: <api_key_here>' \
-H 'API-Username: <api_username_here>'
Você também pode listar eventos específicos de um usuário ou data:
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>'
Criar Evento
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": "Participante do Karaoke de Maio de 2023"
}'
Sintaxe alternativa usando jo:
jo -p user_id="13" date="2023-04-14" points="15" description="Participante do Karaoke de Maio de 2023" | curl --json @- -XPOST http://example/admin/plugins/gamification/score_events -H "Api-Key: apikeyhere" -H "Api-Username: system"
Atualizar Evento
O endpoint de atualização requer id e points. Você pode opcionalmente atualizar a description. Note que user_id e date não podem ser alterados após a criação.
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": "Participante da keynote de Maio de 2023"
}'
Sintaxe alternativa usando jo:
jo -p id="11" points="25" description="Participante do Karaoke de Maio de 2023" | curl --json @- -XPUT http://example/admin/plugins/gamification/score_events -H "Api-Key: apikeyhere" -H "Api-Username: system"
