Как изменить полезную нагрузку события вебхука, созданного после публикации

Здравствуйте.

Я хочу настроить значение полезной нагрузки вебхука при возникновении события создания темы.

Пример…

Как есть

{
  "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>Круто, теперь я тебя поймал, ха-ха</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
  }
}

Как должно быть

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

Подскажите, пожалуйста, как это сделать?

У меня тоже есть подобная потребность. Я тоже в замешательстве. На данный момент хорошего решения нет.

Привет! В Discourse нет встроенного способа отправлять только небольшую часть полезной нагрузки вебхука, но есть несколько идей, которые могут сработать:

  • Можно разместить небольшой прокси-сервер посередине (например, крошечный endpoint на Node.js или Python), который будет получать полную полезную нагрузку вебхука, оставлять только topic_title и пересылать её дальше. Это очень гибкое решение, не требующее изменений в самом Discourse.

  • Или, если вы готовы к этому, можно написать небольшой плагин для Discourse, который будет слушать событие on(:post_created) и отправлять только нужные вам поля. Всего несколько строк на Ruby — и готово.

  • Ещё один простой вариант — позволить такому инструменту, как Zapier или n8n, получить полную полезную нагрузку и отфильтровать или сопоставить её перед передачей в вашу финальную систему.

Ничего сложного, просто несколько способов, которыми я бы воспользовался, если бы мне требовался только topic_title :slightly_smiling_face:

Да. Я использую вариант 1, но это требует дополнительного кодирования и поддержки.