Проверка Podio Webhook в скрипте Google Apps

Я создал Webhook в Podio для моего URL-адреса скрипта Google Apps с функцией doPost, которая выглядит следующим образом:

function doPost(e) {

  var DecodedPostData = decodeURIComponent(e.postData.contents).replace(/\+/g‌," ");

  doPostLogData = "POST Data Received:\n" + e.postData.contents + "\n\n" + "DECODED POST DATA:\n" + DecodedPostData;

//GmailApp.sendEmail("[email protected]", "Data", "Triggered");

try { 
var response;

      var formData = {   // Make a POST request with file and script data.
            "code": [e.parameters.code]
          }

          var options = {
            'method' : 'post',
            'payload' : formData,
            'muteHttpExceptions' : true
          }

          response = UrlFetchApp.fetch('https://api.podio.com/hook/' + e.parameters.hook_id + '/verify/validate', options);
      GmailApp.sendEmail("[email protected]", "Data", doPostLogData + "\n\n" + e.parameters.code + "\n\n" + e.parameters.hook_id + "\n\n" + response.getContentText());
}
catch (e) {

GmailApp.sendEmail("[email protected]", "Data", e);
}


return;

}

Я получаю следующее электронное письмо (т.е. как журнал того, что происходит):

POST Data Received:
hook_id=12345&code=abcde&type=hook.verify

DECODED POST DATA:
hook_id=12345&code=abcde&type=hook.verify

abcde

12345

{"error_parameters":{},"error_detail":null,"error_propagate":false,"request":{"url":"http:\/\/api.podio.com\/hook\/12345\/verify\/validate","query_string":"","method":"POST"},"error_description":"No
matching operation could be found. No body was
given.","error":"not_found"}

Я не могу понять, что я делаю неправильно. Кажется, кто-то задавал здесь аналогичный вопрос (JSON в скрипте Google Apps), но я не Не думаю, что в нем содержится ответ на мой вопрос.

Любая идея, что мне не хватает или я могу делать неправильно? Насколько я могу судить из документации Podio

Любой вклад очень ценится. Спасибо!


person bbx    schedule 19.12.2018    source источник
comment
1. Вместо этого используйте e.parameter. 2. Удалить[] в формеДанные   -  person TheMaster    schedule 20.12.2018
comment
Также они могут потребоваться. 3. Измените на 'payload' : JSON.stringify(formData) 4. Добавьте 'contentType': "application/json" к options.   -  person Tanaike    schedule 20.12.2018
comment
e.parameter.code дал тот же результат, что и e.parameters.code, так что это ничего не изменило. Удаление [] само по себе не решило проблему, а скорее удалило их и внесло изменения, предложенные Танайке! Спасибо!   -  person bbx    schedule 20.12.2018
comment
@bbx Попробуйте добавить это как ответ.   -  person TheMaster    schedule 20.12.2018


Ответы (1)


Чтобы решить эту проблему, я реализовал оба предложения от TheMaster и Tanaike. Которые были:

  1. Вместо этого используйте e.parameter.
  2. Удалить[] в formData
  3. Изменить на «полезную нагрузку»: JSON.stringify(formData)
  4. Добавьте 'contentType': "application/json" в опции.

Спасибо!

person bbx    schedule 20.12.2018