Как получить данные об ответах из Google-chat webhook?

#node.js #gunzip #google-chat

Вопрос:

Я следую следующему примеру:

 const fetch = require('node-fetch');

const webhookURL = '<INCOMING-WEBHOOK-URL>';

const data = JSON.stringify({
  'text': 'Hello from a Node script!',
});

fetch(webhookURL, {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json; charset=UTF-8',
  },
  body: data,
}).then((response) => {
  console.log(response);
});
 

Во всех смыслах и целях мой код, по сути, один и тот же.

Согласно API тело ответа должно быть типа Сообщение, но вместо этого я получаю следующее:

 Response {
  size: 0,
  timeout: 0,
  [Symbol(Body internals)]: {
    body: Gunzip {
      _writeState: [Uint32Array],
      _readableState: [ReadableState],
      _events: [Object: null prototype],
      _eventsCount: 5,
      _maxListeners: undefined,
      _writableState: [WritableState],
      allowHalfOpen: true,
      bytesWritten: 0,
      _handle: [Zlib],
      _outBuffer: <Buffer 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 00 48 02 15 01 00 00 00 05 00 04 00 04 00 04 00 38 2f 01 15 01 00 00 00 30 46 01 15 01 00 00 00 1e 1e ... 16334 more bytes>,
      _outOffset: 0,
      _chunkSize: 16384,
      _defaultFlushFlag: 2,
      _finishFlushFlag: 2,
      _defaultFullFlushFlag: 3,
      _info: undefined,
      _maxOutputLength: 4294967295,
      _level: -1,
      _strategy: 0,
      [Symbol(kCapture)]: false,
      [Symbol(kTransformState)]: [Object],
      [Symbol(kError)]: null
    },
    disturbed: false,
    error: null
  },
  [Symbol(Response internals)]: {
    url: <my webhook url>,
    status: 200,
    statusText: 'OK',
    headers: Headers { [Symbol(map)]: [Object: null prototype] },
    counter: 0
  }
}
 

Я не уверен, как обработать эти данные, чтобы прочитать их как нужный тип сообщения, как указано в документах API. Любая помощь будет очень признательна!

Для справки: https://developers.google.com/chat/reference/rest/v1/spaces/webhooks

Комментарии:

1. вы пробовали ставить async перед вызовом функции?

2. Да, на самом деле моей второй мыслью было попробовать сделать const response = await fetch(...) это . Объект ответа тот же самый

Ответ №1:

Решение было удивительно простым. Я забыл, что для того, чтобы прочитать содержимое fetch , как указано здесь, мне нужно позвонить

 const resJson = await response.json()