Molte grazie, a tutte le parti!
Quindi, prevedo di eseguire più istanze di Discourse, nonché un sistema di amministrazione/coordinamento generale (non Discourse) in background. Gli argomenti verranno aggiunti a Discourse in uno dei 2 modi: o dagli utenti tramite il normale meccanismo di creazione di argomenti di Discourse, o dal sistema di amministrazione/coordinamento tramite l’API.
Dove l’argomento viene creato tramite l’API, rappresenterà tipicamente un’attività o un elemento di flusso di lavoro simile che avrà già il proprio ID non-Discourse… chiamiamolo “ID Esterno”.
Dove l’argomento viene creato dall’utente all’interno di Discourse, utilizzeremo i webhook per attivare una funzione Azure per creare un clone simile a un segnaposto nel sistema centrale (in modo che i messaggi di Discourse vengano collegati a un flusso più ampio di contenuti, attività, ecc.). Pertanto, di nuovo, l’Argomento Discourse indirettamente avrà un “ID Esterno” univoco, che proponiamo di aggiornare l’Argomento, tramite l’API.
Abbiamo un componente tematico Discourse personalizzato che, ogni volta che un argomento viene caricato, utilizzerà Ajax per recuperare informazioni non incentrate su Discourse dal sistema centrale e visualizzarle nella schermata dell’Argomento.
Mentre potremmo usare l’ID dell’Argomento Discourse per parametrizzare la chiamata Ajax e trovare i dati corrispondenti, è più efficiente usare l’“ID Esterno” per farlo (è semplicemente più pulito, per molteplici ragioni: evita ricerche, ecc.).
Potremmo facilmente memorizzare l’“ID Esterno” in un campo personalizzato - ne abbiamo già uno per altri dati - ma notiamo che l’API degli Argomenti ha un campo “external_id” che sembra esattamente ciò di cui abbiamo bisogno, e preferirei usarlo per varie ragioni… rende semplicemente questo campo un po’ cruciale più facile da incorporare in report, esportazioni, forse ricerche future, ecc.
Vedi lo screenshot da Discourse API Docs
Suppongo che questo sia un campo piuttosto nuovo - la maggior parte dei consigli nel forum sembra riferirsi al campo external_id dell’utente, che non è quello di cui ho bisogno al momento. Come accennato in precedenza, sto recuperando il modello Ember per l’argomento (all’interno del mio componente tematico personalizzato) e posso ottenere quasi tutte le informazioni sull’argomento tramite esso… ma non il campo external_id.
(Come sopra - sto ottenendo l’argomento usando questo codice, preso in prestito da qualche parte su questo sito, non so dove a questo punto:
const topicController = api.container.lookup("controller:topic");
if (topicController) {
const thisTopic = topicController.get("model");
Quindi, la richiesta: il campo external_id specifico dell’argomento è sepolto nel modello (“thisTopic”) da qualche parte, o sto fraintendendo questi concetti e dovrei semplicemente usare il campo personalizzato per memorizzare questo ID esterno (so che posso far funzionare quell’approccio, e come! .. preferisco solo la pulizia e la prontezza futura di usare l’external_id distinto, se effettivamente disponibile).
Ancora, grazie per l’aiuto, lo apprezzo!