APIへのトピックのタグ割り当て変更に関するクエリを追加

Integromat がここで言及している通りです:

API を通じてトピックへのタグ割り当てがどのように公開されるかについて、いくつかの改善の余地があるようです。具体的には、トピックに新しく追加されたタグをクエリできる機能です。私の具体的なユースケースは、Discourse でのタグ付けを利用して、あるトピックを別のシステム(タスクマネージャーなど)にエクスポートすべきことを示し、その処理を Integromat で実行することです。しかし、これは例えば「タスク作成」タグがトピックに追加されたかどうかを API をクエリして判断し、その情報に基づいてアクションを起こすあらゆるシステムにも同様に適用できる可能性があります。

私の理解では、現在の API はそれを容易には許可していません。Webhook を使った回避策はありますが、私の認識が間違っていなければ、直接 API を呼び出す方がよりクリーンでシンプルです。

ご検討いただきありがとうございます!適切な場所に投稿できたことを願っています。:smiley:

トピックにタグを追加すると、topic ウェブフッククラスがトリガーされます。これにより、トピックに新しく追加されたタグを監視できます。さらに、Discourse UI で特定のタグにフィルタリングすることも可能で、イベントの数を抑えることができます。

「いいね!」 1

迅速な返信をありがとうございます!Integromat が提案している「回避策」は、実際にはこの問題を扱うための「公式な」方法なのでしょうか?

残念ながら、API と Webhook の違いなどについては詳しくありませんが、特に Fibery と Discourse の間の統合について考えています。Fibery は実際には Discourse のコンテンツを完全にミラーリングしますが、より高度なプロジェクト管理やフィードバック管理のために、データ(トピックやユーザーなど)を任意に相互リンクできるシステム上で動作します。私の理解では、彼らはこの統合に API を使用しています:

もし彼らが(現在はまだ対応していない)タグのサポートを統合に追加したい場合、タグの追加や削除の検出を含め、現在の API で可能でしょうか?もし不可能なら、これは API のタグサポートをさらに深く拡張するための、まだ見ぬ有用性を示唆しているのでしょうか?

繰り返しになりますが、無知から当然の質問をしている可能性もあることは理解しています。この機能を API に公開することが困難だったり、理不尽な負担になったり、あるいは何らかの理由で意味をなさないのかもしれません。しかし、少なくとも明確にしてくれることを願っています。:folded_hands:

API 呼び出しは、外部サービスがいつでも Discourse からデータを抽出できるようにするものです。

ただし、そのサービスが Discourse 内のイベントに反応したい場合、変更を定期的にポーリングする必要があります。監視・ポーリングすべき「対象」が多い場合、これは非効率か、実際的に不可能です。

一方、ウェブフックを使えば、新しいイベントが発生するたびに Discourse が外部サービスに優しく通知できます。これにより、外部サービスは何かやるべきことがあるときだけ「自分の処理」を実行できます。サービスは、ウェブフックのペイロード情報が十分であればそれに依存するか、必要なタスクを実行するために追加の API 呼び出しをトリガーとして利用できます。つまり、API とウェブフックシステムは互いに補完し合っています。

「いいね!」 1

素晴らしい、非常に参考になります。Discourse を外部システム(Fibery)にミラーリングする場合について確認させてください。私の理解が正しければ、初期段階で全トピックデータなどを収集するには API を使用するのが適切でしょう。しかし、カテゴリやタグの変更など、時間の経過とともにデータを維持・更新したい場合は、その変更を把握するために Webhook を使用すべきでしょうか?もしそうだとしたら、全く新しいトピックのデータ取得はどうすればよいのでしょうか?API 経由でしょうか、それとも Webhook 経由でしょうか?別の言い方をすれば、ミラーを構築するための一度限りのデータ取得には API を使い、その後はすべての更新を維持するために継続的に Webhook を使うのが理にかなっているのでしょうか?それとも、両方を組み合わせた運用が必要なのでしょうか?もし組み合わせる場合、その仕組みはどうなるのでしょうか?

このトピックについて完全に理解し、仕組みを把握して締めくくりたいと考えています。Fibery チームとも連携しており、彼らにもこの機能の実装を検討してもらえればと願っています。もしお時間があれば、残りの質問にお答えいただければ大変ありがたく存じます。:folded_hands: