كيفية تغيير حمولة حدث Webhook بعد الإنشاء

مرحباً.

أرغب في تخصيص قيمة حمولة الويب هوك عند حدوث حدث لإنشاء موضوع.

مثال…

الوضع الحالي

{
  "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
  }
}

الوضع المطلوب

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

هل يمكنني معرفة كيفية القيام بذلك؟

لدي أيضًا حاجة مماثلة. أشعر بالحيرة أيضًا. لا يوجد حل جيد في الوقت الحالي.

مرحباً، لا توجد طريقة مدمجة في Discourse لإرسال جزء صغير فقط من حمولة الويب هوك (webhook payload)، ولكن هناك بعض الأفكار التي قد تنجح:

- يمكنك وضع وكيل (proxy) صغير في المنتصف (مثل نقطة نهاية Node.js أو Python صغيرة) يستقبل الويب هوك الكامل، ويزيل كل شيء باستثناء topic_title، ثم يعيد إرساله. هذا مرن للغاية ولا يمس إعدادات Discourse نفسها.

- أو، إذا كنت مستعداً لذلك، يمكن لمكون إضافي (plugin) صغير لـ Discourse الاستماع إلى on(:post_created) وإرسال الحقول التي تهتم بها فقط. بضعة أسطر فقط في Ruby وستكون قد انتهيت.

- خيار كسول آخر هو السماح لأداة مثل Zapier أو n8n بالتقاط الحمولة الكاملة وتعيينها/تصفيتها قبل أن تصل إلى نظامك النهائي.

لا شيء معقد، مجرد بعض الطرق التي قد أجربها إذا كنت أحتاج فقط إلى topic_title :slightly_smiling_face:

نعم. أنا أستخدم الطريقة الأولى، ولكن هذا يتطلب ترميزًا وصيانة إضافيين.