Impossibile aggiungere un nuovo post usando l'API

Ciao, non riesco ad aggiungere un nuovo post all’argomento sul mio forum Discourse utilizzando l’API, il mio codice:

function postComment(topicId, comment) {
  const url = `${DISCOURSE_API_URL}/t/${topicId}/posts.json`; // Assicurati che questo URL sia corretto
  Logger.log(`Posting to URL: ${url}`);
  const headers = {
    "Api-Key": DISCOURSE_API_KEY,
    "Api-Username": DISCOURSE_API_USERNAME
  };

  const payload = {
    post: {
      topic_id: topicId,
      raw: comment
    },
  };

  const options = {
    method: "post",
    contentType: "application/json",
    headers: headers,
    payload: JSON.stringify(payload),
    muteHttpExceptions: true, // Per catturare la risposta completa dell'errore
  };

  try {
    const response = UrlFetchApp.fetch(url, options);
    const jsonResponse = JSON.parse(response.getContentText());

    // Registra la risposta per il debug
    Logger.log(`Response Code: ${response.getResponseCode()}`);
    Logger.log(`Response Body: ${JSON.stringify(jsonResponse, null, 2)}`);

    // Verifica se l'invio è andato a buon fine
    if (response.getResponseCode() === 200) {
      Logger.log(`Commento inviato con successo: ${JSON.stringify(jsonResponse, null, 2)}`);
    } else {
      Logger.log(`Invio commento fallito: ${JSON.stringify(jsonResponse, null, 2)}`);
    }

    return jsonResponse; // Restituisce la risposta dell'API
  } catch (error) {
    Logger.log(`Errore durante l'invio del commento: ${error}`);
    return null; // Restituisce null in caso di errore
  }
}

sto ricevendo questa risposta:

Info
Response Code: 404
15:35:29
Info
Response Body: {
  "errors": [
    "The requested URL or resource could not be found."
  ],
  "error_type": "not_found"
}

anche se l’argomento del forum esiste e posso pubblicare direttamente sul sito web del forum.
Per favore, aiutami.

404 non è probabile che significhi che la tua api key sia errata o non venga passata correttamente.

A meno che non significhi che stai effettivamente utilizzando il percorso sbagliato. Se Ingegnerizzi al contrario l’API di Discourse per un post, è quello il percorso utilizzato?

Sto usando questo percorso: ${DISCOURSE_API_URL}/t/${topicId}/posts.json
dove DISCOURSE_API_URL = \"https://community.xxxxxxxxxxx.com\"

Penso che l’URL per rispondere a un argomento tramite l’API sia /posts.json. Quando si crea una risposta, a differenza di quando si crea un nuovo argomento, topic_id è un parametro obbligatorio.

I dettagli sono qui: Discourse API Docs, ma puoi anche semplicemente creare una risposta a un argomento tramite l’interfaccia utente del tuo sito e controllare l’URL della richiesta impostato nella sezione “network” dell’ispettore web del tuo browser.

2 Mi Piace