Я боролся с API Gateway, пытаясь получить то, что, как я предполагал, было бы простой процедурой, отправляя необработанный JSON из webhook в мою AWS Lambda в качестве события для использования в моей функции.
Все, что я хочу сделать, это вывести номер заказа Woocommerce и отправить электронное письмо с номером заказа, а также получить тело веб-крючка Woocommerce в Lambda, как я сделал в моем тестовом событии.Вот функция:
var AWS = require('aws-sdk');
var ses = new AWS.SES();
exports.handler = (event, context, callback) => {
// Send email to customer via Amazon SES with url link of TXT transcription file on S3
var eParams = {Destination: {ToAddresses: ["flla@isdaq.com"]}, Message: {Body: { Text: { Data: event.number },},Subject: { Data: 'TITLE' }}, Source: "ses@eucommission.trade"};
var email = ses.sendEmail(eParams, function (err, data) { if (err) console.log(err); else { console.log("===EMAIL SENT==="); } });
console.log('Woocommerce Order Number is: ', event.number); // successful response
};
Если я помещу какой-нибудь веб-крючок Woocommerce в тестовую зону в Lambda, он будет работать нормально.Но если я размещу заказ в Woocommerce, ничего не произойдет
Вот что я сделал до сих пор:
Настройка шлюза API, связанного с моей AWS Lambda, и размещение этого APIURL-адрес в веб-приложении Woocommerce в качестве целевого URL-адреса при создании заказа
Настройка метода POST в API Gateway, Запрос на интеграцию с использованием приведенного ниже кода и Ответ интеграции не редактировался
{"method": "$ context.httpMethod", "body": $ input.json ('$'), "headers": {#foreach ($param в $ input.params (). header.keySet ()) "$ param": "$ util.escapeJavaScript ($ input.params (). header.get ($ param))" #if ($ foreach.hasNext), # end #end}}
Включено CORS для POST в консоли шлюза API
Может кто-нибудь помочь мне взломать это.Я ползла по сети, Stack O, и часами пробовала множество вещей.