调查猴子Webhook

时间:2018-09-09 19:44:43

标签: node.js webhooks surveymonkey

创建了Webhook之后,当我填写表单时,它将向我的API发送一个POST请求,但是主体为空。

我在互联网上找不到任何东西,SM文档还有很多不足之处。

我的API

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

那会是什么?

2 个答案:

答案 0 :(得分:1)

如果您的应用程序在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'
}));

在此处查看文档-body-parser types

我还应该提到,当我使用Survey Monkey创建Webhook时,确实包含了“ content-type”,但是直到我在应用程序中添加了此额外配置后,它才开始向我显示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"
}

答案 1 :(得分:0)

主体应具有JSON,其主体与示例类似。一个可能的问题是SurveyMonkey中的webhook向主体发送了一个自定义内容类型标头,例如application/vnd.surveymonkey.survey.v1,可能无法在您的服务器上很好地发挥作用。

我不确定它是否已记录,但是您可以在创建Webhook时在正文中包括application/json作为内容类型:

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

这可能会使它正常运行,而无需更改服务器中的正文解析器设置。