Опрос Обезьяна Webhook - PullRequest
       9

Опрос Обезьяна Webhook

0 голосов
/ 09 сентября 2018

После создания webhook, когда я заполняю форму, он отправляет запрос POST в мой API, но тело становится пустым.

Не могу найти в интернете ничего, документация СМ оставляет желать лучшего.

Мой API

async testWebhook({ request, response }) {
   console.log('request.body', request.body)
   response.status(200).send()
   return
}

Что это может быть?

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Я нашел ответ, если ваше приложение работает на Express.js

Survey Monkey Webhook POST объявляет заголовок 'application / vnd.surveymonkey.response.v1 + json'

Если вы не обработаете это в Express, объект request.body будет пустым.

Вы можете использовать body-parser и определить заголовок:

app.use(bodyParser.json({
    type: 'application/vnd.surveymonkey.response.v1+json'
}));

См. Документацию здесь - Типы парсер тела

Я должен также упомянуть, что когда я создавал свой Webhook с помощью Survey Monkey, я включал «тип контента», но только когда я добавил эту дополнительную конфигурацию в свое приложение, он начал показывать мне данные POST.

Пример создания Webhook:

{
    "name": "My Survey Completed Webhook",
    "event_type": "response_completed",
    "object_type": "survey",
    "object_ids": ["1234"],
    "subscription_url": "https://APP_URL/survey-responses",
    "content_type": "application/json"
}
0 голосов
/ 16 сентября 2018

Тело должно иметь JSON с телом, похожим на пример. Одной из возможных проблем является то, что веб-крючок из SurveyMonkey отправляет тело с заголовком пользовательского типа контента, например, application/vnd.surveymonkey.survey.v1, который может не очень хорошо работать на вашем сервере.

Я не уверен, документировано ли это, но вы можете указать application/json в качестве типа контента, включив его в тело при создании веб-крюка:

POST /v3/webhooks
{
  ...
  "content_type": "application/json"
}

Что может заставить его работать без каких-либо изменений настроек вашего анализатора тела на вашем сервере.

...