Похоже, что в том, как присвоение тегов темам раскрывается через API, можно внести некоторые улучшения. В частности, возможность запрашивать недавно добавленные теги к темам. Мой конкретный случай использования — применение тегирования в Discourse для обозначения того, что определённую тему следует экспортировать в другую систему (например, в систему управления задачами), и я планирую использовать для этого Integromat. Однако это так же легко может относиться к любой системе, которая обращается к API, чтобы определить, например, был ли добавлен тег «Создать задачу» к теме, и затем действовать на основе этой информации.
Насколько я понимаю, текущий API не позволяет этого сделать легко. Существует обходной путь с использованием веб-хуков, но, если я не ошибаюсь, прямой вызов API был бы чище и проще.
Спасибо за рассмотрение! Надеюсь, я разместил это в правильном месте.
Добавление тега в тему вызовет вебхук класса topic, на который вы можете подписаться, чтобы отслеживать любые недавно добавленные теги в ваших темах. Вы даже можете отфильтровать его по конкретному тегу в интерфейсе Discourse, чтобы уменьшить количество событий.
Спасибо за быстрый ответ! Так что «обходной путь», который предлагает Integromat, на самом деле является единственно правильным способом решения этой задачи?
К сожалению, я не очень хорошо разбираюсь в различиях между API и вебхуками и т. д., но меня интересует конкретно интеграция Fibery с Discourse. Она фактически полностью зеркалирует контент Discourse, но в системе, позволяющей произвольное связывание данных (например, тем, пользователей и т. д.) для управления проектами и обратной связи на более высоком уровне. Насколько я понимаю, для этой интеграции они используют API:
Так что, если бы они захотели поддержать теги в своей интеграции (чего они сейчас не делают), включая отслеживание добавления/удаления тегов, было бы это возможно с помощью текущего API? Если нет, то не говорит ли это о ещё не раскрытой возможности углубить поддержку тегов в API?
Ещё раз признаю, что, возможно, задаю очевидные вопросы из-за незнания. Может быть, это сложно или необоснованно обременительно раскрывать такую возможность в API, или же это просто не имеет смысла по каким-то причинам. Но надеюсь, что это достаточно легко прояснить.
Вызов API позволяет внешнему сервису обращаться к Discourse в любое время для извлечения данных.
Однако, если этот сервис хочет реагировать на события в Discourse, ему придётся периодически опрашивать систему на предмет изменений, что либо расточительно, либо непрактично, если нужно отслеживать множество «объектов».
Вебхуки позволяют Discourse мягко уведомлять внешний сервис каждый раз, когда происходит новое событие, поэтому сервис может выполнять свои задачи только тогда, когда есть что делать. Сервис может полагаться на данные из полезной нагрузки вебхука, если их достаточно, или использовать их для запуска дополнительных вызовов API для выполнения необходимых действий. Таким образом, API и система вебхуков дополняют друг друга.
Отлично, это очень полезно. Допустим, вы зеркалируете Discourse во внешнюю систему (Fibery). Если я правильно понимаю, для первоначального сбора всех данных по темам и прочего следует использовать API. Но если вы хотите поддерживать актуальность этих данных с течением времени, например, при изменениях в категориях или тегах, то для отслеживания таких изменений лучше использовать вебхуки, верно? Если так, то как получать данные для совершенно новых тем? Через API или вебхук? Может быть, перефразирую: имеет ли смысл использовать API только для одноразового выгрузки данных для заполнения зеркала, а затем постоянно использовать вебхуки для обновления всей информации? Или это комбинация обоих подходов, и если да, то как именно они работают вместе?
Мне бы очень хотелось закрыть эту тему и убедиться, что я полностью понимаю, как это должно работать. Я работаю с командой Fibery, надеясь, что они тоже реализуют эту функцию. Поэтому, если у вас будет возможность ответить на мои оставшиеся вопросы, буду очень признателен.