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

Tenho uma ideia maluca, acontece que no WooCommerce estou usando uma carteira virtual (baseada em pontos) que eu gostaria de sincronizar com os pontos de gamificação do Discourse… mas sinto que apenas uma API é muito pesada (seja consultando a cada x cron ou quando o usuário faz uma ação no WC)… você poderia criar um webhook para que a carteira virtual no WooCommerce seja atualizada com os pontos obtidos no discourse?.. Anexo um esquema de guia

Sei que pode ser mais complexo do que parece, especialmente porque a API do Discourse é relativamente nova (e também não há webhook), mas apresento apenas um caso de uso, valide a ideia

A gamificação recalcula a cada 5 minutos, então acho que usar uma sincronização no estilo crontab é bastante apropriado.

1 curtida

Ah, eu não tinha pensado nessa abordagem… ou seja, posso usar o n8n (hospedagem própria para reduzir custos); criarei um gatilho cron a cada 5 ou talvez 10 minutos consultando a API do Discourse para novos pontos (Como eu faria para consultar todos os usuários? Ou você faria isso para eventos?)… Embora, é claro, haverá uma pequena janela de tempo constante onde você não verá a pontuação sincronizada em ambas as plataformas…

Eu estava pensando sobre isso, e acho que se um webhook pudesse ser criado para o plugin de gamificação enviando as informações por eventos (sem ter que consultar via API) isso evitaria ter que consultar, por exemplo, se há 200 usuários ativos, 200 vezes uma API a cada 5 minutos (além disso, por padrão, o Discourse permite webhooks)… é importante porque o Discourse é a principal fonte de pontos (e atualiza com mais frequência) e isso seria uma atualização que permite a sincronização em segundo plano. instantaneamente de acordo com as mudanças no Discourse…

@Falco
planeja adicionar uma API para excluir eventos? obrigado.

1 curtida

Quero adicioná-lo, mas ainda não está planejado. No momento, você pode atualizar seu valor para 0.

2 curtidas

obrigado @Falco
acho que para um evento, o ID pode ter um ponto negativo, certo?
digamos, se perder em um evento de competição

1 curtida

Sim, você também pode atribuir pontuações negativas. É útil para realizar eventos como trocar pontos por presentes, aplicar penalidades, etc.

1 curtida

Chegando atrasado aqui - Existe uma maneira de que certas transações de pontos possam ser sinalizadas para que não contem como ‘gastos’ para a classificação no placar? Gostaria que outros pontos verdadeiramente negativos contassem para o placar (votos/bandeiras contra, eventos de API conforme sugerido acima para ‘perder’ um evento de escada, etc.).
por exemplo.

  • acumule 10 mil pontos através de atividades, esteja na liderança. Yay!
  • Gaste 10 mil pontos em produtos chiques, fique com 0 pontos ‘gastáveis’ pois uma consulta somaria 10 mil - 10 mil.
    • mas ainda assim deve estar no topo do placar.
  • Perca 2 mil pontos em um jogo de escada, exiba no placar com 8 mil. Perca a liderança… Saldo gastável negativo 2 mil.
1 curtida

ei @Falco
depois de editar o ponto de um evento, ele recalculará o ponto geral para um ID?
Parece que não. Isso é esperado?

É isso que o aviso no OP cobre. Como armazenamos em cache a pontuação total em toda a interface do usuário, após sua edição, ela só será refletida após uma atualização do cache. Para eventos recentes, o cache é atualizado automaticamente, mas para eventos que ocorreram há mais de 10 dias, você precisará acionar uma atualização de pontuação para o período.

2 curtidas

7 posts foram divididos em um novo tópico: Adicionar bulk_create à API de eventos externos de Gamificação

Temos a capacidade de restringir o escopo da Chave de API apenas ao plugin Gamification?

Não vejo uma opção em nossa visualização de Administração de Chaves de API para restringir a chave a ...admin/plugins/gamification/score_events

E nossa liderança está cética quanto à necessidade de uma chave de API verdadeiramente Global para isso.

1 curtida

Suspeito que você esteja certo. Parece que mais escopos são adicionados conforme são solicitados. Você poderia com um plugin personalizado se estiver auto-hospedado. Você poderia enviar um PR e/ou postar como uma solicitação de #recurso. Se você for um cliente corporativo, poderia pedir à sua liderança. :wink:

Hmm. Agora me pergunto se é possível adicionar um escopo de API personalizado em um plugin (especialmente tendo um plugin adicionando um escopo de API para outro plugin). Suspeito que seja, mas nunca vi isso ser feito.

Talvez apenas criar um usuário apenas para a API, para que pelo menos você possa rastreá-lo dessa forma.

1 curtida

Isso já aconteceu?

CC: @Falco

Como um novato em programação, esforcei-me muito para entender o conteúdo da postagem, mas ainda está bem difícil para mim…… Eu queria perguntar se este recurso é semelhante a “pagar para ver”? É um recurso muito comum em fóruns tradicionais onde os usuários ganham pontos através de eventos (como check-in diário, postar, responder, etc.), e então algumas postagens no fórum exigem que os usuários paguem pontos para ver o conteúdo completo. Em fóruns tradicionais (como o Discuz), tanto as operações de ganho de pontos quanto de dedução de pontos são automatizadas. Pelo que posso ver agora, a gamificação pode lidar com a parte de “ganhar pontos”, mas a operação de “deduzir pontos” requer chamadas de API manuais por administradores? Isso seria muito difícil para um fórum pessoal. Pelo que entendi, operar APIs imprudentemente sem muito conhecimento de programação pode ser perigoso e pode até fazer com que toda a comunidade entre em colapso……:sob:

Seria possível implementar este recurso de “pagar para ver” como um plugin autônomo? Ou, se eu fosse contratar alguém para personalizá-lo, qual seria aproximadamente o custo?