Il semble qu’il y ait des possibilités d’amélioration concernant la manière dont les assignations de tags sur les sujets sont exposées via l’API. Plus précisément, la capacité d’interroger les tags nouvellement ajoutés aux sujets. Mon cas d’usage particulier consiste à utiliser le système de tags dans Discourse pour indiquer qu’un sujet doit être exporté vers un autre système (un gestionnaire de tâches, par exemple), et je prévois d’utiliser Integromat pour cela. Cela pourrait tout aussi bien s’appliquer à n’importe quel système interrogeant l’API pour déterminer, par exemple, si un tag « Créer une tâche » a été ajouté à un sujet, puis agir en conséquence.
À ma connaissance, l’API actuelle ne permet pas facilement cela. Il existe une solution de contournement avec les webhooks, mais sauf erreur de ma part, un appel API direct serait plus propre et plus simple.
Merci d’en prendre connaissance ! J’espère que je me suis bien adressé au bon endroit.
L’ajout d’un tag à un sujet déclenchera la classe de webhook topic, que vous pouvez écouter pour surveiller tout nouveau tag ajouté à vos sujets. Vous pouvez même le filtrer pour un tag spécifique dans l’interface utilisateur de Discourse afin de limiter le nombre d’événements.
Merci pour votre réponse rapide ! Donc, la « solution de contournement » suggérée par Integromat est vraiment la méthode prévue pour gérer cela ?
Je ne suis malheureusement pas très familier avec les API par rapport aux webhooks, etc., mais je pense spécifiquement à l’intégration que Fibery propose avec Discourse. Elle reflète intégralement le contenu de Discourse, mais dans un système permettant des interliens arbitraires entre les données (par exemple, sujets, utilisateurs, etc.) pour une gestion de projet et de feedback de plus haut niveau. À ma connaissance, ils utilisent l’API pour cette intégration :
Donc, si eux souhaitaient prendre en charge les tags dans leur intégration (ce qu’ils ne font pas actuellement), y compris la détection de l’ajout ou de la suppression de tags, serait-ce possible avec l’API actuelle ? Sinon, cela suggère-t-il une utilité encore inédite pour enrichir la prise en charge des tags par l’API ?
Je reconnais à nouveau que je pose peut-être des questions évidentes par ignorance. Peut-être que cela est difficile ou déraisonnablement contraignant à exposer via l’API, ou simplement que cela ne présente pas de sens pour une raison quelconque. Mais j’espère qu’il est assez simple de clarifier ce point.
Un appel API permet à un service externe d’interroger Discourse à tout moment pour extraire des données.
Cependant, si ce service souhaite réagir à des événements dans Discourse, il devrait interroger périodiquement le système pour détecter les changements, ce qui est soit inefficace, soit peu pratique s’il y a beaucoup d’« éléments » à surveiller ou à interroger.
Les webhooks permettent à Discourse de signaler doucement ce service externe chaque fois qu’un nouvel événement se produit, afin que ce service puisse faire son travail uniquement lorsqu’il y a quelque chose à faire. Le service peut se fier aux informations contenues dans la charge utile du webhook, si elles sont suffisantes, ou les utiliser pour déclencher des appels API supplémentaires afin d’accomplir la tâche nécessaire. Ainsi, l’API et le système de webhooks sont complémentaires.
Excellent, c’est très utile. Imaginons que vous mirroriez Discourse vers un système externe (Fibery). Si je comprends bien, il serait approprié d’utiliser l’API pour collecter initialement toutes les données des sujets, etc. Mais si vous souhaitez maintenir ces données à jour dans le temps, par exemple pour les modifications de catégories ou de tags, vous utiliseriez les webhooks pour être informé de ces changements, n’est-ce pas ? Dans ce cas, comment récupérer les données pour de nouveaux sujets entièrement ? Via l’API ou les webhooks ? Autrement dit, est-ce que l’API ne sert que pour un tirage unique afin de peupler un miroir, tandis que les webhooks prennent le relais pour les mises à jour continues sur l’ensemble des données ? Ou s’agit-il d’une combinaison des deux, et si oui, comment fonctionne cette combinaison ?
J’aimerais beaucoup boucler la boucle sur ce sujet et savoir que je comprends parfaitement comment cela devrait fonctionner. Je travaille avec l’équipe de Fibery dans l’espoir de les voir l’implémenter également. Donc, si vous avez la possibilité de répondre à mes questions restantes, je vous en serais très reconnaissant.