Come integrare la Gamification di Discourse con un sistema esterno (riscuoti e assegna punti)

Ho un’idea pazzesca, succede che in WooCommerce sto usando un portafoglio virtuale (basato su punti) che vorrei sincronizzare con i punti di gamification di Discourse… ma sento che solo un’API è molto pesante (sia consultando ogni x cron o quando l’utente compie un’azione in WC)… potresti creare un webhook in modo che il portafoglio virtuale in WooCommerce venga aggiornato con i punti ottenuti in discourse?.. allego uno schema guida

So che può essere più complesso di quanto sembri, soprattutto perché l’API di Discourse è relativamente nuova (e non c’è nemmeno un webhook), ma presento solo un caso d’uso, convalida l’idea

La gamification ricalcola ogni 5 minuti, quindi penso che l’utilizzo di una sincronizzazione in stile crontab sia piuttosto appropriato.

1 Mi Piace

Oh, non avevo pensato a quell’approccio… cioè posso usare n8n (hosting proprio per ridurre i costi); creerò un trigger cron ogni 5 o forse 10 minuti interrogando l’API di Discourse per nuovi punti (Come potrei interrogare tutti gli utenti? O lo faresti per eventi?)… Anche se, ovviamente, ci sarà una piccola finestra temporale costante in cui non vedrai il punteggio sincronizzato su entrambe le piattaforme…

Ci stavo pensando, e credo che se si potesse creare un webhook per il plugin di gamification che invii le informazioni tramite eventi (senza dover interrogare tramite API) si eviterebbe di dover interrogare, ad esempio, se ci sono 200 utenti attivi, 200 volte un’API ogni 5 minuti (inoltre, per impostazione predefinita, Discourse consente i webhook)…è importante perché Discourse è la fonte principale di punti (e si aggiorna più costantemente) e questo sarebbe un aggiornamento che consentirebbe la sincronizzazione in background. istantaneamente in base alle modifiche in Discourse…

@Falco
hai in programma di aggiungere un’API per eliminare eventi? grazie.

1 Mi Piace

Vorrei aggiungerlo, ma non è ancora previsto. Al momento puoi aggiornare il suo valore a 0.

2 Mi Piace

grazie @Falco
immagino che per un evento, l’ID possa ottenere un punto negativo, giusto?
diciamo, se si perde in un evento competitivo

1 Mi Piace

Sì, puoi assegnare anche punteggi negativi. È utile per fare eventi come scambiare punti per regali, applicare penalità, ecc.

1 Mi Piace

In ritardo qui - C’è un modo per contrassegnare determinate transazioni di punti in modo che non vengano conteggiate come “spese” per la classifica? Vorrei che altri veri punti negativi contassero per la classifica (voti/flag contrari, eventi API come suggerito sopra per “perdere” un evento della scala, ecc.).
ad es.

  • accumula 10k punti attraverso attività, sii in testa. Evvai!
  • Spendi 10k punti in gadget fantasiosi, sii a 0 punti “spese” poiché una query sommerebbe 10k - 10k.
    • ma dovresti comunque essere in cima alla classifica.
  • Perdi 2k punti in una partita della scala, visualizza in classifica a 8k. Perdi la testa… Saldo spendibile negativo 2k.
1 Mi Piace

Ciao @Falco
dopo aver modificato il punto di un evento, ricalcolerà il punto complessivo per un ID?
Sembra di no. È previsto?

È ciò che copre l’avviso nell’OP. Poiché memorizziamo nella cache il punteggio totale ovunque nell’interfaccia utente, dopo la tua modifica si rifletterà solo dopo un aggiornamento della cache. Per gli eventi recenti la cache si aggiorna automaticamente, ma per gli eventi accaduti oltre 10 giorni fa, dovrai attivare un aggiornamento del punteggio per il periodo.

2 Mi Piace

7 post sono stati divisi in un nuovo argomento: Aggiungi bulk_create all’API degli eventi esterni di Gamification

Abbiamo la possibilità di limitare l’ambito della chiave API solo al plugin Gamification?

Non vedo un’opzione nella nostra vista di amministrazione delle chiavi API per limitare la chiave a ...admin/plugins/gamification/score_events

E la nostra dirigenza è scettica sul fatto che abbiamo bisogno di una chiave API veramente globale per questo.

1 Mi Piace

Sospetto che tu abbia ragione. Sembra che vengano aggiunti più ambiti man mano che vengono richiesti. Potresti farlo con un plugin personalizzato se sei self-hosted. Potresti inviare una PR e/o pubblicare una richiesta di funzionalità (Feature request). Se sei un cliente enterprise, potresti chiedere alla tua leadership. :wink:

Hmm. Ora mi chiedo se sia possibile aggiungere un ambito API personalizzato in un plugin (specialmente se un plugin aggiunge un ambito API per un altro plugin). Sospetto di sì, ma non l’ho mai visto fare.

Forse basta creare un utente solo per l’API, in modo almeno da poterlo tracciare in quel modo.

1 Mi Piace

È mai successo?

CC: @Falco

Essendo un neofita della programmazione, ho provato duramente a capire il contenuto del post ma è ancora piuttosto difficile per me… Volevo chiedere se questa funzionalità è simile a “paga per vedere”? È una funzionalità molto comune nei forum tradizionali in cui gli utenti guadagnano punti tramite eventi (come il check-in giornaliero, la pubblicazione, la risposta, ecc.), e quindi alcuni post nel forum richiedono agli utenti di pagare punti per visualizzare il contenuto completo. Nei forum tradizionali (come Discuz), sia l’operazione di guadagno punti che quella di detrazione punti sono automatizzate. Da quello che vedo ora, la gamification può gestire la parte di “guadagno punti”, ma l’operazione di “detrazione punti” richiede chiamate API manuali da parte degli amministratori? Questo sarebbe troppo difficile per un forum personale. Da quello che capisco, operare sconsideratamente con le API senza molta conoscenza di programmazione può essere pericoloso e potrebbe persino causare il collasso dell’intera community… :sob:

Sarebbe possibile implementare questa funzionalità “paga per vedere” come plugin autonomo? O se dovessi assumere qualcuno per personalizzarla, all’incirca quanto costerebbe?