Incapaz de adicionar novo post usando API

Olá, não consigo adicionar uma nova postagem em um tópico no meu fórum Discourse usando a API. Meu código:

function postComment(topicId, comment) {
  const url = `${DISCOURSE_API_URL}/t/${topicId}/posts.json`; // Certifique-se de que esta URL está correta
  Logger.log(`Postando para a 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, // Para capturar a resposta completa do erro
  };

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

    // Registrar a resposta para depuração
    Logger.log(`Código da Resposta: ${response.getResponseCode()}`);
    Logger.log(`Corpo da Resposta: ${JSON.stringify(jsonResponse, null, 2)}`);

    // Verificar se a postagem foi bem-sucedida
    if (response.getResponseCode() === 200) {
      Logger.log(`Comentário postado com sucesso: ${JSON.stringify(jsonResponse, null, 2)}`);
    } else {
      Logger.log(`Falha ao postar comentário: ${JSON.stringify(jsonResponse, null, 2)}`);
    }

    return jsonResponse; // Retornar a resposta da API
  } catch (error) {
    Logger.log(`Erro ao postar comentário: ${error}`);
    return null; // Retornar null em caso de erro
  }
}

Estou recebendo esta resposta:

Info
Código da Resposta: 404
15:35:29
Info
Corpo da Resposta: {
  "errors": [
    "A URL ou recurso solicitado não pôde ser encontrado."
  ],
  "error_type": "not_found"
}

mesmo que o tópico do fórum exista e eu possa postar nele diretamente no site do fórum.
Por favor, ajude.

404 provavelmente não significa que sua chave de API está incorreta ou não está sendo passada corretamente.

A menos que signifique que você está realmente usando o caminho errado. Se você fizer a engenharia reversa da API do Discourse para uma postagem, é esse o caminho usado?

Estou usando este caminho: ${DISCOURSE_API_URL}/t/${topicId}/posts.json
onde DISCOURSE_API_URL = \"https://community.xxxxxxxxxxx.com\"

Acho que a URL para responder a um tópico via API é /posts.json. Ao criar uma resposta, em oposição a quando você está criando um novo tópico, o topic_id é um parâmetro obrigatório.

Os detalhes estão aqui: Discourse API Docs, mas você também pode simplesmente criar uma resposta a um tópico através da interface do seu site e verificar a RequestURL que está definida na seção “network” do inspetor da web do seu navegador.

2 curtidas