Como integrar a Gamificação do Discourse com um sistema externo (resgatar e premiar pontos)

Pode ser minha década de experiência trabalhando em bancos, mas a maneira como imagino o resgate de pontos é emitindo eventos personalizados de valor negativo.

Por exemplo, digamos que você tenha um usuário que queira resgatar pontos por uma camiseta, e essa camiseta custe 10 mil pontos. O fluxo em seu sistema de resgate seria:

  1. Verifique se o usuário tem pontos suficientes:

    curl https://meta.discourse.org/u/falco.json -s | jq . | grep score
        "gamification_score": 89386,
    
  2. Emita um evento de “saque de pontos”

    jo -p user_id="13" date="2023-04-14" points="-10000" description="Resgate de Camiseta - pedido #123" | curl --json @- -XPOST http://example/admin/plugins/gamification/score_events -H "Api-Key: apikeyhere" -H "Api-Username: system"
    

Você vai querer envolver isso em um semáforo de algum tipo, pois este é o exemplo clássico de uso deles, mas essa é a essência do fluxo de trabalho proposto.

Este é um recurso muito recente, então me diga se o fluxo de trabalho proposto não funcionar corretamente.

Está funcionando bem para mim, tanto no navegador quanto via API. É um endpoint de administrador, então você precisa estar logado como administrador pelo navegador ou passar chaves de API como explicado no OP.

3 curtidas