我一直试图让Woocommerce网络钩子通过API并输出控制台中输出的单个数据。问题是,我无法获得适当配置的Body映射模板,以便将body传递给Lambda函数。我最终希望使用这些事件对象来传递到DynamoDB中,但我现在只是将它们记录在控制台中。
使用标准web钩子体时,使用AWS中的测试事件,使用http://myjson.com/18afwp这样的示例,主体数据可以很好地输出。
这是我的Lambda代码
exports.handler = (event, context, callback, err) => {
callback(null, event.order_key);
if (err) console.log('JSON Pass Fail'); // an error occurred
else console.log(event.order_key); // successful response
};在控制台日志2018-01-22T21:45:22.560z8c417061-ffgd-11e7-805b-f57d6e6be228 wc_order_5a64ab355c2b2中显示结果:"wc_order_5a64ab355c2b2“。
对于Body映射模板,我尝试了几个变体,但采用了标准的方法,请求传递,但我认为身体部分只是需要调整才能让身体通过。下面是标准体映射模板https://pastebin.com/gjZaxBTW的内容
在Cloudwatch中,当Woocommerce web钩子被发送时,日志会以未定义的形式返回。
发布于 2018-01-24 01:41:42
经过多次尝试,下面显示了成功的body映射模板,该模板将头数据和正文数据传递给Lambda。然后可以使用event.body.order_key格式访问这些对象。
我最初尝试在Webhooks下添加Woocommerce admin中显示的每一行标题,以显示Web钩子输出。但是,如果您查看Cloudwatch日志,您将看到Cloudfront添加了额外的标题,比Wordpress中列出的标题还要多。
{
"body" : $input.json('$'),
"headers": {
#foreach($header in $input.params().header.keySet())
"$header": "$util.escapeJavaScript($input.params().header.get($header))" #if($foreach.hasNext),#end
#end
}
}这使用了请求体传递选项。
When there are no templates defined (recommended)https://stackoverflow.com/questions/48391079
复制相似问题