Merci beaucoup, toutes les parties !
Je prévois donc d’exécuter plusieurs instances de Discourse, ainsi qu’un système d’administration/coordination global (non-Discourse) en arrière-plan. Les sujets seront ajoutés à Discourse de l’une des deux manières suivantes : soit par les utilisateurs via le mécanisme habituel de création de sujets de Discourse, soit par le système d’administration/coordination via l’API.
Lorsque le sujet est créé via l’API, il représentera généralement une tâche ou un élément de flux de travail similaire qui aura déjà son propre identifiant non-Discourse… appelons-le l’“ID externe”.
Lorsque le sujet est créé par l’utilisateur dans Discourse, nous utiliserons des webhooks pour déclencher une fonction Azure afin de créer un clone de type “stub” dans le système central (afin que les messages Discourse soient connectés à un flux plus large de contenu, de tâches, etc.). Par conséquent, là encore, le sujet Discourse aura indirectement un “ID externe” unique - que nous proposons de mettre à jour le sujet avec, via l’API.
Nous avons un composant de thème Discourse personnalisé qui, à chaque chargement de sujet, utilisera Ajax pour récupérer des informations non centrées sur Discourse du système central et les afficher sur l’écran du sujet.
Bien que nous puissions utiliser l’ID du sujet Discourse pour paramétrer l’appel Ajax et trouver les données correspondantes, il est plus efficace de l’utiliser avec l’“ID externe” pour le faire (c’est juste plus propre, pour plusieurs raisons - cela évite les recherches, etc.).
Nous pourrions facilement stocker l’“ID externe” dans un champ personnalisé - nous en avons déjà un pour d’autres données - mais nous remarquons que l’API des sujets a un champ “external_id” qui ressemble exactement à ce dont nous avons besoin, et je préférerais l’utiliser pour diverses raisons… cela rend ce champ quelque peu crucial plus facile à intégrer dans les rapports, les exportations, peut-être les recherches futures, etc.
Voir la capture d’écran de Discourse API Docs
Je suppose qu’il s’agit d’un champ plutôt nouveau - la plupart des conseils sur le forum semblent se rapporter au champ external_id de l’utilisateur, ce qui n’est pas ce dont j’ai besoin en ce moment. Comme mentionné ci-dessus, je récupère le modèle Ember pour le sujet (dans mon composant de thème personnalisé) et je peux obtenir presque toutes les informations sur le sujet à travers lui… mais pas le champ external_id.
(Comme ci-dessus - je récupère le sujet en utilisant ce code, emprunté quelque part sur ce site, je ne sais plus où à ce stade :
const topicController = api.container.lookup("controller:topic");
if (topicController) {
const thisTopic = topicController.get("model");
Donc, la demande - le champ external_id spécifique au sujet est-il caché quelque part dans le modèle (“thisTopic”), ou est-ce que je comprends mal ces concepts et devrais-je simplement utiliser le champ personnalisé pour stocker cet ID externe (je sais que je peux faire fonctionner cette approche, et comment ! .. je préfère juste la propreté et la préparation pour l’avenir d’utiliser l’external_id distinct, si effectivement il est disponible).
Encore une fois, merci pour votre aide, j’apprécie !