لا يمكن تحديث نص الموضوع عبر API

لقد اتبعت المستندات ، ولكنها تقوم فقط بتحديث عنوان الموضوع ، دون تحديث النص الأساسي.

التعليمات البرمجية الخاصة بي (JavaScript):

async function updateDiscourseTopic(topic_id) {
  const Discourse_API_Key = "Discourse_API_Key";
  const url = `https://discourse.mysite.com/t/-/${topic_id}.json`;

  const payload = {
    title: 'session_1',
    raw: "نص أساسي جديد (لا ينطبق)"
  }

  const response = await fetch(url, {
    method: 'PUT',
    headers: {
      "Api-Key": Discourse_API_Key,
      "Api-Username": "system",
      "Content-Type": "application/json",
    },
    body: JSON.stringify(payload)
  });

}

مجرد تخمين من خلال النظر إلى الكود، ولكن ربما يكون ذلك بسبب استخدامك topic_id بدلاً من post_id؟ لأن المنشور الأول هو الموضوع في Discourse، أكثر أو أقل؟

3 إعجابات

@Lilly’s على حق.

يتم تعريف الموضوع بواسطة سمات مثل العنوان والفئة والعلامات وما إلى ذلك.

لكن المحتوى ينتمي إلى منشور.

إذا كنت ترغب في تحديث العنوان والمحتوى، فأنت بحاجة إلى طلبين.

  1. PUT على الموضوع

  2. PUT على المنشور الأول. يمكنك العثور على معرف المنشور في رمز HTML للصفحة. ابحث عن السمة data-post-id في <article>.
    مثال:

<article id="post_2" aria-label="post #2 by @Lilly" role="region" data-post-id="1288311" data-
topic-id="264640" data-user-id="127856" class="boxed onscreen-post">
3 إعجابات

رائع، أنت على حق، لقد نجح الأمر :sparkling_heart:

وقد اكتشفت كيفية استرداد معرف أول منشور في موضوع باستخدام واجهة برمجة تطبيقات Discourse:

async function getFirstPostIdFromOnetopic(topic_id) {
  const Discourse_API_Key = "Discourse_API_Key";
  const url = `https://discourse.mysite.com/t/${topic_id}/posts.json`;

  const response = await fetch(url, {
    method: 'GET',
    headers: {
      "Api-Key": Discourse_API_Key,
      "Api-Username": "system",
      "Content-Type": "application/json",
    }
  });
  const data = await response.json();
  const firstPostId = data.post_stream.posts[0].id;
  
  return firstPostId;
}

شكراً لك ولـ @Lilly :innocent:

3 إعجابات

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.