استخدم واجهة برمجة التطبيقات لإنشاء فئات مقيدة للمجموعات الخارجية

إذا كان لديك موقع مجتمعي يستخدم أيضًا (وليس حصريًا) منصة Discourse، فقد ترغب في توفير منتدى فرعي محدود لكل مجموعة من مجموعتك، على سبيل المثال كفضاء عمل. إليك كيفية القيام بذلك باستخدام Ruby:

  1. تأكد من أن استدعاءات واجهة برمجة التطبيقات (API) الخاصة بك تتم المصادقة عليها بواسطة مستخدم يتمتع بصلاحيات المسؤول.

  2. إنشاء مجموعة منتديات تضم قادة مجموعتك والمستخدمين العاديين

params = { 
  "group": { 
    "name": "<group_name_with_underscores>", 
    "full_name": "<group name>", 
    "title": "Member of <group name>", # اختياري: تمييز المنتدى لأعضاء المجموعة
    "mentionable_level": 99, # اختياري: من يمكنه ذكر هذه المجموعة باستخدام @؟
    "messageable_level": 99, # اختياري: من يمكنه مراسلة المجموعة بأكملها؟
    "owner_usernames": "<comma-separated forum usernames of your group leaders>",
    "usernames": "<comma-separated forum usernames of the other group members>"
   }
}
r = Discourse.make_request("/admin/groups.json", params, "POST", true)

إذا نجح الأمر، ابحث عن حقل ‘id’ في الاستجابة وتذكره؛ فهذا هو معرف المجموعة الخاص بك.

  1. حافظ على مزامنة المجموعة الخارجية ومجموعة المنتدى
# أعضاء جدد بسيطون
r = Discourse.make_request("/groups/#{group_id}/members.json", {"usernames": "<new_members as comma-separated string>"}, "PUT", true)
# قادة جدد
r = Discourse.make_request("/admin/groups/#{group_id}/owners.json", {"group": { "usernames": "<new leader forum usernames as comma-separated string>"}}, "PUT", true)
# إزالة الأعضاء الذين غادروا
r = Discourse.make_request("/groups/#{group_id}/members.json", {"usernames": "<leaving_members as comma-separated string>"}, "DELETE", true)
  1. إنشاء فئة فرعية (أو منتدى فرعي) يمكن الوصول إليها فقط من قبل هذه المجموعة. أوصي بإنشاء منتدى فرعي يدويًا باسم “مساحات العمل” أو “مقيد” أو ما شابه، ليكون الفئة الأصلية لجميع هذه الفئات، ووضعه في أسفل قوائمك. لاحظ أن هذا المنتدى الحاوي يجب أن يكون له إعداد “يمكن للجميع رؤيته” (وإلا فإن Discourse سيعطي خطأ)، ولا ينبغي أن يسمح لأي شخص بالكتابة. بعد ذلك، يمكنك إنشاء منتديات فرعية برمجياً لكل مجموعة جديدة.
params = { 
  "name": "<subforum name, e.g. same as group full name>", 
  "color": "<whatever>", # اختياري
  "text_color": "<whatever>", # اختياري
  "permissions": { 
    "<your group name with underscores>": "1", 
    "admins": "1", # إذا لم يكن لديك هذا، قد لا تتمكن من حذف منتدى الفرعي الخاص بك إلا عبر واجهة برمجة التطبيقات
    "moderators": "1" 
   }, 
  "parent_category_id": "<see note above>", 
  "allow_badges": true,  # اختياري
  "suppress_from_latest": true, # اختياري
}
r = Discourse.make_request("/categories.json", params, "POST", true)

إذا نجح الأمر، تذكر معرف الفئة الذي تحصل عليه في الرد.

  1. قد ترغب في ملء هذا المنتدى الفرعي مسبقًا. سأمنح مجموعتي موضوعًا مثبتًا على شكل ويكي لمشاركة المعرفة والتخطيط.
# إنشاء منشور عادي في هذا المنتدى الفرعي
post_msg = "مرحبًا! هذا المنشور قابل للتعديل من قبل جميع أعضاء المجموعة ويمكن استخدامه كمستودع للمعرفة بالإضافة إلى تتبع المشاريع المشتركة.\n\n**الآتي قالب يمكنك استخدامه أو عدم استخدامه.**\n\n**روابط مفيدة لأعضاء المجموعة:**\n\n- رابط 1\n\n- رابط 2\n\n- رابط 3\n\n**هذه هي المشاريع التي نعمل عليها حاليًا:**\n\n- المشروع 1 - *بدأ*. المشاركون: العضو 1 و 2 و 3\n\n- المشروع 2 - *مرحلة التخطيط*. سيتم مناقشته في اجتماعنا القادم يوم الاثنين."
params = { "raw": post_msg, title: "Knowledge Wiki for #{group_name}", "category": category_id, "archetype": "regular"}
r = Discourse.make_request("/posts", params, "POST", true)
if r and r.status == 200
  my_post = JSON.parse(r.body)
  post_id = my_post["id"]
  topic_id = my_post["topic_id"]
  # تحويله إلى ويكي
  begin
    r = Discourse.make_request("/posts/#{post_id}/wiki", {"wiki": true}, "PUT", false)
    rescue JSON::ParserError  # ستعطي واجهة برمجة تطبيقات Discourse استجابة JSON غير صحيحة، ولكن لحسن الحظ لا نحتاج إلى تحليلها
  end
  # تثبيت هذا الموضوع
  r = Discourse.make_request("/t/topic/#{topic_id}/status", { 
    "status": "pinned", 
    "enabled": "true", # انتبه: يجب أن يكون نصًا، وإلا سيتم إلغاء تثبيت الموضوع
    "until": "3020-01-01 08:00+1:00" # إلى الأبد
  }, "PUT", false)
end

استمتع!

5 إعجابات