Post作成済みWebhookイベントのペイロードを変更する方法

こんにちは。

トピック生成イベントが発生したときに、Webhook のペイロード値をカスタマイズしたいです。

例…

AS-IS

{
  "post": {
    "id": 19,
    "name": "user",
    "username": "user",
    "avatar_template": "/letter_avatar_proxy/v2/letter/u/c0e974/{size}.png",
    "created_at": "2018-07-20T06:24:33.205Z",
    "cooked": "<p>Cool, now i have you, haha</p>",
    "post_number": 6,
    "post_type": 1,
    "updated_at": "2018-07-20T06:24:33.205Z",
    "reply_count": 0,
    "reply_to_post_number": null,
    "quote_count": 0,
    "avg_time": null,
    "incoming_link_count": 0,
    "reads": 0,
    "score": 0,
    "topic_id": 11,
    "topic_slug": "this-is-new-topic",
    "topic_title": "This is new topic",
    "display_username": "user",
    "primary_group_name": null,
    "version": 1,
    "user_title": null,
    "moderator": false,
    "admin": true,
    "staff": true,
    "user_id": 1,
    "hidden": false,
    "trust_level": 1,
    "deleted_at": null,
    "user_deleted": false,
    "edit_reason": null,
    "wiki": false,
    "topic_posts_count": 6
  }
}

TO-BE

{
   "topic_title": "This is new topic"
}

どのようにすれば実現できるか教えていただけますか?

私も同様のニーズがあります。混乱しています。今のところ良い方法はありません。

ねえ、Discourse には Webhook ペイロードのほんの一部だけを送信する組み込みの方法はありませんが、機能する可能性のあるいくつかのアイデアがあります。

  • 中央に小さなプロキシ(小さな Node.js や Python のエンドポイントなど)を配置し、完全な Webhook を受け取って topic_title 以外をすべて削除してから転送することができます。これは非常に柔軟で、Discourse 自体には手を加える必要がありません。

  • または、もしご興味があれば、小さな Discourse プラグインを作成して on(:post_created) をリッスンし、必要なフィールドだけを送信することもできます。Ruby で数行書くだけで完了です。

  • もう一つの手軽な方法は、Zapier や n8n のようなツールに完全なペイロードを取得させ、最終的なシステムに届く前にマッピング/フィルタリングさせることです。

大層なものではありませんが、topic_title だけが必要な場合に私が試すであろう方法です :slightly_smiling_face: