Как отправить ответ http POST, который будет работать с чатботом с использованием GAS - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь создать веб-крючок для чат-бота, чтобы получать информацию из Google Sheets. Поскольку в Google есть скрипт Google Apps, который легко работает с листами, я подумал, что попробую запустить там свои скрипты. Мне удалось обработать запрос GET, как того требует чатбот, возвращающий строку. Но я не могу подключить запрос POST для передачи информации. Я зарегистрировал запрос и ответ, которые выглядят правильно и заставляют меня думать, что мой сценарий работает нормально, но в подключении http должно быть что-то не так. Проблемы, которые я нахожу, в том, что GAS отправляет обратно перенаправление, что может быть проблемой. Есть ли способ обойти это, просто отправив JSON строковый ответ? Кроме того, при выполнении запроса POST в чате, я получаю сообщение об ошибке:

Webhook "Данные заказа GAS" не выполнен Запрос не выполнен с кодом состояния 405

Я посмотрел Ошибка 405 и говорит, что

Ошибка 405: веб-серверу не разрешен HTTP-метод для запрошенного URL-адреса

Как узнать, где моя ошибка является? Мой другой вариант - aws лямбда, но он также не работает.

Это моя функция doPost. Все отлично работает. Он должен вернуть строку, но ContentService на самом деле отвечает перенаправлением 302 (протестировано с тестером Talend API). Мои функции журнала сохраняют информацию на листе журнала, поскольку я не могу использовать журнал сценариев.

//get order information from an order id
function doPost(e) {
  startLog(['- NEW POST REQUEST - v'+ver, new Date()]);//e.postData.contents
  var content=JSON.parse(e.postData.contents);
  addLog(JSON.stringify(content));//log input
  if(!verify(e.parameter.token)){//part of chatbot to validate url
    addLog("Token Invalid");
    return ContentService.createTextOutput("Token Invalid");
  }

  var response = processPost(content.result.resolvedQuery);//analyze data (return json object)
  addLog(JSON.stringify(response));
  return ContentService.createTextOutput(JSON.stringify(response)).setMimeType(ContentService.MimeType.TEXT);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...